This page provides details about enhancements in the 300.1 release of ArcGIS Maps SDK for Swift. It also lists deprecations, resolved issues, known issues, and more.
Enhancements
Scenes (3D)
Places and Labels layer in local scenes
The Open 3D Labels layer, a global layer of places and labels available in light and dark variants, now displays labels in LocalSceneView. As a result, 3D basemaps that include the Places and Labels layer now render labels in LocalSceneView as well. This complements existing support for the global Buildings and Trees layers and allows the full contents of Esri 3D basemaps to be rendered.
The LocalSceneView now supports rendering of Raster Tile Layers that have been authored with BlendModes in a WebScene. Blend modes are used to blend layers together to create creative and compelling scenes or to highlight specific patterns in data. There is currently no API to control or change blending type, and GroupLayers are ignored when determining how layers are blended.
3D Tiles in local scenes
3D Tiles layers are now supported in the LocalSceneView, extending 3D Tiles visualization from global scenes to local scenes, which provide support for visualizing data in a wide variety of projected coordinate systems. The addition of 3D Tiles enables integration of additional sources of 3D textured mesh data, such as Google Photorealistic 3D Tiles. Additionally, 3D Tiles layers now include dynamic attribution which is determined for the current viewpoint and aggregated into a single string and accessed via the GeoView‘s onAttributionTextChanged(perform:) closure. The dynamic attribution is visible by default within the built-in attribution bar in the SceneView and LocalSceneView UI controls. If using Google Photorealistic 3D Tiles, follow Google’s requirements for applications developed with Google’s Map Tiles API.

Accessibility-aware label text scaling enabled by default
Label text generated from LabelDefinition classes on layers in the operational layers collection now scales with the device’s accessibility text-size settings by default. This capability can display larger labels than in previous releases, improve label legibility for users who increase system text size, and keep labels more consistent with the rest of the application’s user interface. To preserve the previous behavior and keep label text at a fixed size regardless of accessibility settings, see Text Scaling.
Analysis API
Analysis API enhancements
This release builds on the high-performance analysis APIs released in 300.0 with the following capabilities:
- Additional map algebra functions to expand mathematical operations in analysis workflows, including trigonometric and exponential functions, as well as functions such as clamp and remainder. See the Map algebra topic for more information.
- Slope and aspect functions to calculate terrain steepness and slope direction.

- Analysis APIs now support processing datasets larger than 2 GB by breaking processing into smaller GPU-queued areas before reassembling them into a single result file.
Symbology
New DictionarySymbolStyle property
DictionarySymbolStyle now exposes a new property uiSchemaJSON. This UI Schema JSON, if present in the Esri published dictionaries or webstyles, provides a set of rules and domains that could be used to build a user experience for browsing and building symbols from the dictionary style.
Military symbology updates
Some control measure line symbols include elements whose appearance is determined by a measurement attribute as specified by the standard. With this release, these symbols can now be rendered dynamically, reflecting the values from their associated measurement attributes. For example, air corridor symbols will use the attribute mapped to the new width symbol property to determine the real-world distance between the parallel corridor lines. The model configuration property must be set to ordered anchor points. This feature is only supported in static rendering mode when working in 3D.
For more information on the latest updates to the Military Symbology Dictionary Styles, see the Military symbology styles change log.
Utility Network
Enhanced shared template workflows
Shared templates now provide a more consistent editing experience across connected and disconnected workflows, with improvements for offline support, geometry builders, transactions, and performance.
Shared templates can now be included when generating a sync-enabled mobile geodatabase. SyncCapabilities.supportsSharedTemplates indicates whether a feature service supports shared template download. If it does, makeDefaultGenerateGeodatabaseParameters(extent:) automatically enables GenerateGeodatabaseParameters.syncsSharedTemplates, allowing field applications to provide the same guided feature creation experience online and offline.
Template-driven feature creation has been expanded. SharedTemplateSource.makeFeatures() now supports radialLines, allowing one template to generate multiple connected features from a common origin. This is useful for utility network workflows, such as creating multiple service connections from a transformer or distribution junction.
Geometry builder tools also preserve true-curve geometries when creating offsets, buffers, and intervals. This ensures that assets generated along curved roads, pipelines, water mains, and other infrastructure retain their intended shape.
FeatureTemplateRelationship.numberOfRelatedFeatures indicates how many related records a template can create. Applications can use this value to more accurately communicate editing results when a single operation creates a feature and additional inspection, maintenance, or asset records.
Shared template performance has been improved through optimized caching of template definitions. This reduces service queries and processing overhead for complex group and preset templates, resulting in faster template loading and a more responsive editing experience.
Named utility trace functions
Named utility network trace functions authored in ArcGIS Pro 3.7 and ArcGIS Enterprise 12.1 or later are supported through new UtilityTraceFunction constructors and the name property.
Named trace functions help applications distinguish outputs when multiple calculations use the same network attribute and operation with different criteria. For example, a trace can calculate separate load totals for residential and commercial customers using conditional aggregations on the same attribute. By exposing the author-defined function name, applications can identify, label, organize, and display trace results without extra inference logic.
Utility Network schema version 8
Utility Network schema version 8 is now supported for non-telecom networks authored in ArcGIS Pro 3.7 and ArcGIS Enterprise 12.1 or later.
You can continue to work with schema version 8 datasets for tracing, rule-based editing, association management, topology validation, and offline workflows, including generating and synchronizing mobile geodatabases. This provides compatibility with utility networks created using the latest ArcGIS Utility Network releases. Applications for electric, gas, water, and sewer workflows can keep using current APIs and workflows without modification. Telecom utility network datasets are not supported in this release.
Multi-user branch version workflows with ServiceGeodatabase
ArcGIS Maps SDKs for Native Apps introduce ServiceGeodatabase.refresh() for applications that work with named branch versions in ArcGIS Enterprise 12.0 and later.
This API supports long-lived workflows that use a ServiceGeodatabase configured with persistent. The SDK manages version sessions and moments while supporting ArcGIS Enterprise’s multiple-reader, single-writer branch-version concurrency model. For background, see Version locking models. For example, applications can keep a map open on a shared named version while other users review, edit, reconcile, and post changes. The SDK maintains a consistent moment for queries and analysis so feature queries, utility network traces, and association queries run against a consistent state of the version.
The SDK automatically advances the client moment to the latest edit moment after local add, update, and delete operations, ServiceGeodatabase.applyEdits(), or utility network operations such as UtilityNetwork.validateNetworkTopology().
When applications are ready to incorporate edits committed by other users, they can call refresh(). This advances the client moment to the latest server edit moment, refreshes affected layers, and redraws displayed features without recreating the ServiceGeodatabase or manually managing version moments.
Geodatabase
Sync attachment keywords
When working with a feature service through the Native Maps SDKs, SyncCapabilities.supportsAttachmentKeywords reports whether the service supports syncing attachment keywords. If supported by the service, GenerateGeodatabaseParameters.syncsAttachmentKeywords defaults to true when you manually take feature data or a map offline, so attachment keywords are included. When taking a web map offline with offline settings customized in Portal, the value configured in the portal is used.
Map view
Changing view insets
Normally, changing MapView.contentInsets(_:) does not change the rendered map area, since the map is not locked to a specific Viewpoint. To keep the current viewpoint when insets change due to the resizing of UI elements, set the new MapView.insetsViewpointAdjustmentType(_:) property to InsetsViewpointAdjustmentType.preserveCenter. This property has no effect when LocationDisplay is active and LocationDisplay.AutoPanMode is set to anything other than off.
Accessibility-aware label text scaling enabled by default
Label text generated from LabelDefinition classes on layers in the operational layers collection now scales with the device’s accessibility text-size settings by default. This capability can display larger labels than in previous releases, improve label legibility for users who increase system text size, and keep labels more consistent with the rest of the application’s user interface. To preserve the previous behavior and keep label text at a fixed size regardless of accessibility settings, see Text Scaling.
Feature form
Attachments form element enhancements
AttachmentsFormElement was introduced in 200.5 with basic attachment editing support via a FeatureForm. In 300.1, it brings additional capabilities from web maps into the feature form experience. New overloads of AttachmentsFormElement.addAttachment() allow attachment filenames to be calculated from an Arcade expression. New Attachment objects are also automatically assigned the element’s keyword. Form designers can define criteria enforced by AttachmentsFormElement, including allowed attachment types, maximum file size or video/audio duration, and minimum or maximum number of attachments.
Layer
Enhanced VectorTiledLayer
Several ArcGISVectorTiledLayer enhancements have been added including:
-
Improved
ArcGISVectorTiledLayerfor better rendering performance, with layer load times reduced by up to 25% and memory usage reduced by up to 20%. -
MapViewnow supports identify on vector tiled layers that include feature IDs. Identify operations return anIdentifyLayerResultfor each matching vector tiled layer, withVectorTileFeatureresults that include attributes and the associatedVectorTileStyleLayerType. Geometry is returned only for point-based features, such as circle and symbol styles. -
You can author vector tiled layers to have feature IDs by retaining relevant attributes when publishing from ArcGIS Pro. While authoring
ArcGISVectorTiledLayercontent with feature IDs, include only required attributes. Including too many attributes can increase tile size and negatively affect rendering performance and memory usage.

Raster
Build and manage raster pyramids
You can now inspect, build, and delete pyramid overviews for file-based Rasters using the RasterPyramids class. Pyramid overviews are typically created to improve performance for rasters that can take longer to display due to being large in size or highly compressed. Use the info property to access relevant information that can be determined about existing pyramids on the Raster, such as the number of pyramid levels, compression method, resampling method, and the file path to an external pyramid file. The delete() method will delete pyramid overviews stored in an external .ovr file; it will not delete pyramids embedded in the source raster file. The build() method will start an operation that builds pyramid overviews in an external .ovr file, which can be monitored for progress or cancelled. Parameters can optionally be set to define the number of levels, the resampling method, and the compression method used.
New close method to release native resources
The close() method has been added to Raster to provide deterministic release of native resources, such as file handles, associated with file-based rasters. This is especially important in garbage-collected environments, which do not provide deterministic destructors and cannot guarantee timely resource cleanup. Call close() on a Raster when it is no longer in use.
Offline maps
Geospatial PDFs and raster files
In addition to tile packages and vector tile packages, you can now specify a georeferenced PDF or any supported raster file when using a locally referenced basemap in an offline map. The referenceBasemapFilename property can be set in the OfflineSettings of a web map or when configuring offline map parameters in an OfflineMapTask.
Editing
Track previewed geometry changes during edit interactions
You can now subscribe to the new interactionPreviews event on the GeometryEditor receive’s updates about the state of the geometry during an ongoing edit interaction, for example during a vertex creation or move, or when moving, scaling, or rotating a geometry or part.
The GeometryEditorInteractionPreview event parameter provides access to the preview geometry, which represents the geometry that would be created if the ongoing interaction were completed. It also includes the interaction element, which identifies the element being edited, and the interaction type, which indicates the type of interaction.
This event allows you to provide real-time feedback as users edit geometries. For example, you can show alerts or update symbology when the preview geometry meets criteria such as exceeding a maximum area or length. Alternatively, if using the ProgrammaticReticleTool, you can use the information provided by this event to enable and disable controls for vertex placement depending on whether or not the previewed geometry intersects the geometry of an existing feature.

Popups
Alternative text for popup media
You can now access the alternative text for popup media with the new PopupMedia.alternativeText property.
Arcade
Support for new Arcade version
The Swift Maps SDK now offers partial support for Arcade 1.36 and Arcade 1.37.
Updated functions
GetKeys, GetValues, Count now accept Pixel and Voxel types.
The zero-argument Portal overload is not supported and returns null.
GetEnvironment updates are not supported:
activePortalis set tonullavailablePortalsis set to an empty Array
New constants
Support for NaN has been added.
New profile
Support for the Form Attachment Filename Calculation has been added.
Indoor positioning
Enhanced geometry-aided indoor positioning
Improved reliability during initial positioning, a refined step detection algorithm, and reduced positioning lag for a more responsive experience.
Point cloud layer
Customizations
Point cloud layers are now supported in LocalSceneView, extending point cloud visualization from global scenes to local scenes.
You can now customize how a PointCloudLayer is displayed using renderers and filters. Use a PointCloudClassBreaksRenderer, PointCloudRGBRenderer, PointCloudStretchRenderer, or PointCloudUniqueValueRenderer to symbolize points using point cloud layer attributes. You can also control point size and modulate point colors to emphasize patterns in the data.
Use a PointCloudValueFilter, PointCloudReturnFilter, or PointCloudBitfieldFilter to show points that match attribute values, LiDAR return types, or bit flags. Combining renderers and filters helps you distinguish and focus on features such as buildings, vegetation, and ground surfaces in a point cloud.
PointCloudLayer renderers and filters are only supported in LocalSceneView.

Projection engine
GDAL support
There are no updates to the coordinate systems and transformations tables, or to the grid transformation files in the Projection Engine Data download in this release. However, the Projection Engine Data download has been updated with the latest GDAL support files. If your app works with raster data, including for display or analysis, you should download and reference the GDAL support files from the latest Projection Engine Data download. You must reference GDAL support files from the download that matches your version of ArcGIS Maps SDK for Swift. For details, see GDAL support files in the Spatial references topic.
SDK enhancements
There are no new SDK specific enhancements.
Breaking API changes
There are no breaking changes for this release.
Behavior changes
- When loaded, an
ArcGISSceneLayerthat contains labels now hasArcGISSceneLayer.labelsAreEnabledset totrueby default. UtilityNetwork.canAdd()now restricts point features to a single containment association, consistent with ArcGIS Pro.ServiceGeodatabase.applyEdits()andServiceFeatureTable.applyEdits()now omit unchanged null attribute values and unchanged geometry from calls toFeatureTable.update(Feature). This helps prevent unintended data loss in collaborative editing workflows and reduces update payload sizes.- Editing a sync-enabled mobile geodatabase that contains utility network source tables now requires the Advanced Editing user type extension, even when editing related or stand-alone non-utility network tables. Developers should ensure appropriate licensing for offline editing workflows that include utility network source data.
SharedTemplateSource.addFeatures()now applies shared template edits as a single transaction. If the operation fails, all changes are rolled back.SharedTemplatecan now be loaded and used without obtaining references to all tables referenced by the template, simplifying initialization and reducing setup complexity.- The Projection Engine Data download contains updated GDAL support files. You must reference GDAL support files from the download that matches your version of ArcGIS Maps SDK for Swift. See the Projection engine section and see GDAL support files in the Spatial references topic for more details.
- Starting with this release,
SurfacePlacementset torelativeuses the elevation from integrated mesh content. This applies when aScenecontains anIntegratedMeshLayeror anOGC3DTilesLayerconfigured as an integrated mesh. - Geometry Z values are treated as offsets from the mesh elevation. A Z value of 0 places the geometry directly on the mesh surface. Positive Z values position the geometry above the mesh, while negative Z values position it below the mesh by the corresponding offset.
Deprecations
API deprecations
There are no API deprecations.
OS and framework deprecations
UtilityTraceFunction.FunctionTypeis deprecated. UseUtilityTraceFunction.kindinstead.
Issues resolved
- Under certain circumstances,
FeatureForm.finishEditing()persists attribute edits even when the attempt to save attachment or utility association edits fails (and throws an error). With this fix, the entire edit operation is performed within a transaction: either all changes are saved or none are saved.
- True curves are not supported in scene view using dynamic rendering mode.
- Labels for features removed by a display filter are not correctly removed from the map.
- BUG-000178816, BUG-000182448, BUG-000184569, BUG-000185067, BUG-000185126, BUG-000185503 -
ArcGISFeatureTablefails to load with an"Arcade expression requires a later version of Runtime"error. - BUG-000183130 -
SubtypeFeatureLayerdoes not honorFeatureLayer.scalesSymbolswhen enabled byMap.referenceScale. - BUG-000184045 -
SubtypeFeatureLayerdoes not evaluate theFeatureSetByID()Arcade function. - The maximum size of raster data used to populate a
ContinuousField,DiscreteField, orBooleanFieldis 2 GB, which is equivalent to 23170 x 23170 pixels. - BUG-000185647 - Version 300.x crashes when adding certain feature layers with dynamic rendering mode
Known issues
- When an image or photo attachment is added through
AttachmentsFormElementand exceedsImageFormInput.maxImageSize, JPEG EXIF metadata is not saved after the SDK resizes the image to meet the size constraint.
- The slope and aspect functions require input data in a shape-preserving (conformal) projected coordinate system, and the data’s vertical (elevation) units must match the horizontal units of that coordinate system.
ViewshedFunctionis supported only withContinuousFieldin a projected coordinate system. Geographic coordinate systems such as WGS84 are not supported in this release.- A
FieldAnalysiscan be displayed inMapVieworSceneViewonly when the result spatial reference matches the view. - Raster data with 64-bit float or integer-based pixels is not supported.
- Raster data with
u32integer-based pixels is supported only when values are within ani32range.u32values outside ani32range are not supported. - The maximum size of a
ContinuousField,DiscreteField, orBooleanFieldused in aFieldAnalysisis 1 GB, which is equivalent to 16384 x 16384 pixels.
Sample updates
New samples
Enhancements to samples
- Added new Accessibility category to showcase the accessibility support in the SDK.
- Updated world-scale AR samples to adopt the new
WorldScaleSceneViewAPIs, which supports using third party world-tracking location providers. - Updated the Show scale bar sample to use
Scalebar.Settingsinstead ofScalebarSettings.
Bug fixes to samples
- Improved the error message shown when location display fails because permission is denied in the Show device location sample.
- Made errors more visible to the user in Geocode offline sample and required the locator task initializer to be non-optional.
- Fixed a bug in Set visibility of subtype sublayer regarding the settings page, preserving the previous state.
Toolkit updates
Feature Form Attachments
The FeatureFormView component has been updated to use the latest APIs on AttachmentsFormElement which allow for more control over the attachment editing experience, such as whether the element shows attachment names, allows attachment renaming, and a minimum or maximum number of attachments that can be added. Attachment elements now also have inputs that can be used to restrict the type of attachments added to the element and other relevant characteristics. AudioFormInput and VideoFormInput, for example, allow for a restriction on maximum attachment duration, whereas DocumentFormInput and ImageFormInput allow for a restriction on file and image size, respectively. Inputs can also be used to control the method of attachment collection, whether it be newly captured (taking a photo or video within the component), existing files from the Photos or Files apps, or both. AttachmentsFormElement also now provides validation errors to guide the user when one of these new restrictions is encountered. Finally, AttachmentsFormElements now support keyword matching; elements can be configured to either show all attachments on the given feature, show only attachments that exactly match the element’s keyword, or show attachments that exactly match the keyword and attachments without a keyword.
World Scale AR
The WorldScaleSceneView Augmented Reality (AR) component now supports plugging in other Visual Positioning System (VPS) providers to localize the user’s position and orientation in the real world. This can help streamline the initial calibration process and improve location accuracy to better synchronize the virtual 3D content with the camera. Depending on the VPS provider, you can use private scans or more widely available public imagery to improve the AR experience. Check out the Custom VPS Provider Example to see how this can be done.
Other Enhancements
-
FeatureFormView- The
FeatureFormView.editingButtons(_:)modifier now respectsVisibility.visible. Previously,.visiblewas treated the same as.automatic.
- The
-
PopupView- Link detection in the fields of
FieldsPopupElements is enhanced. Links no longer need to begin with “http” and the full URL is shown to users. Multiple links can be put into a single field. Phone numbers and email addresses are also now detected.
- Link detection in the fields of
-
UtilityNetworkTrace- The component now displays function results with a label and value and now uses the function name for the label when available, otherwise, falls back to use the network attribute name combined with the function type.
- Resolved build errors when using the Xcode 27 beta.
- iOS 17 support has been removed.
Related topics
- System requirements for 300.1
- Install and set up
- Display a map (Tutorial)
- Product Life Cycle (Esri Support Site)