This page provides details about enhancements in the 200.8 release of ArcGIS Maps SDK for Swift. It also lists deprecations, resolved issues, known issues, and more.
Enhancements
Geometry editing
Customizable geometry editing workflows using the programmatic reticle tool
You can now configure your GeometryEditor
to use the new ProgrammaticReticleTool
to facilitate customized geometry editing workflows such as those using buttons rather than tap interactions. Unlike our existing tools the ProgrammaticReticleTool
has no built in touch interaction. Instead, it is driven by programmatic operations allowing you to configure your own behavior and interaction using buttons or other triggers of your choosing.
Use ProgrammaticReticleTool.selectElementAtReticle()
and ProgrammaticReticleTool.pickUpSelectedElement()
to select and pick up the GeometryEditorVertex
or GeometryEditorMidVertex
at the reticle position. Then, drop a picked-up vertex or insert a new vertex using ProgrammaticReticleTool.placeElementAtReticle()
.
The ProgrammaticReticleTool.vertexCreationPreviewEnabled
property can be used to enable or disable the appearance of vertex feedback and feedback lines that are drawn underneath the reticle. It can also be used to enable or disable both visual and haptic snap feedback. This is useful when implementing workflows that do not allow for vertex creation.
Hovered and picked up element changed events
The hoveredElement
and GeometryEditor.pickedUpElement
properties can be used in your app to react to state changes in the GeometryEditor
, and are especially useful when working with the new ProgrammaticReticleTool
.
For example, when hoveredElement
updates, your app UI can display a button that selects and picks up the element currently underneath the reticle, as shown below. Similarly, when GeometryEditor.pickedUpElement
updates, your app UI can display a button that drops the GeometryEditor.pickedUpElement
or places a new vertex, using ProgrammaticReticleTool.placeElementAtReticle()
. You can check the GeometryEditor.pickedUpElement
to indicate to the user whether or not they will be inserting a new vertex or dropping a currently picked up element.

Disable grow effect when hovering over geometry editor elements
Use the new GeometryEditorStyle.growEffect
to enable and disable the visual effect of vertices and mid-vertices growing when hovered.
Vertices and mid-vertices can be separately configured using GeometryEditorGrowEffect.applyToVertices
and GeometryEditorEffect.applyToMidVertices
.
Identify geometry editor elements
Use the MapView.identifyGeometryEditor()
method to identify elements at a given position when using the GeometryEditor
. This allows you to implement workflows such as selecting geometry editor elements or updating the viewpoint to be centered at that element on a long press.

Customizable precision with tolerance and resolution
Use the new SpatialReferenceBuilder
to create new SpatialReference
objects with custom tolerance and resolution values for high accuracy workflows and GeometryEngine
.
The SpatialReference
class exposes new read-only properties for SpatialReference.tolerance
, SpatialReference.verticalTolerance
, SpatialReference.resolution
, and SpatialReference.verticalResolution
.
This resolves the following enhancement request: EN
.
Authentication
Identity-Aware Proxy (IAP)
ArcGIS Maps SDKs now support accessing ArcGIS Enterprise Portal and Services behind Microsoft Entra Application Proxy via Microsoft Identity Platform.
An Identity-Aware Proxy (IAP) is a security feature that enables organizations to manage access to their on-premises web applications and services based on user identity. Typically, it functions as a reverse proxy, acting as a gatekeeper to ensure that only authenticated and authorized users can access specific resources. The authentication process for IAP occurs within a web session using protocols such as OAuth, SAML, or _OpenID Connect. During this session, security tokens and cookies are generated, which remain valid throughout the session until they are invalidated.
Please read the section on IAPCredential in the security guide to understand how to configure and work with Identity-
in the SDK.
Enhancement to ArcGISAuthenticationChallenge
ArcGISAuthenticationChallenge
now provides an enum to determine the type of authentication challenge Iap, OAuthOrToken, or Token. It helps to determine whether the authentication challenge is issued by the proxy, portal, or service.
Utility network
Utility Network creation and access
The UtilityNetwork
object can now be created with a ServiceGeodatabase
object. When these objects are created from the same feature service source, they share the same instances of FeatureTable
. This new constructor emphasizes the explicit relationship between them. Similarly, when a Map
object is created from a web map containing utility network data, the layers, tables, and utility networks all use the same underlying ServiceGeodatabase
object. Instead of creating a standalone UtilityNetwork
, consider accessing the Utility
using the property. All public samples containing utility network data have been updated to align with this change. For more detailed information, refer to the API deprecations section.
Add title property to utility association result
This release adds a title
property to UtilityAssociationResult
. It provides a user-friendly name for UtilityAssociation
s shown in a FeatureForm
or Popup
. The title is derived from the title
of the FeatureFormDefinition
or PopupDefinition
of the associated feature's layer or table, with a suitable fallback if no Feature
or Popup
has been created.
Indoor positioning in offline apps
Support for on-demand and pre-planned offline map area workflows
It is now possible to create offline applications using an IPS-aware web map and implement the on-demand and pre-planned workflows. Indoor positioning data will be taken offline using ArcGIS Maps SDKs' offline jobs and the offline application will display a blue dot in the respective offline map area indoors.
Query and identify optimizations
ArcGISFeature access optimization
Accessing ArcGISFeature
s by performing query operations on a ServiceFeatureTable
or UtilityNetwork
, as well as through the identify methods with FeatureLayer
s, has seen a significant boost in performance. This improvement is particularly evident when working with a map or scene that contains a large feature dataset, as these asynchronous operations now return results more efficiently, even while all features are still being rendered.
Layers
Improved performance and user experience of KML layers in a scene
In this release, performance and user experience for KML layers in 3D have been improved. The changes focus on line and polygon geometries. You'll notice the biggest improvements when a layer contains a large volume of data. Interaction with KML layers is now smoother, providing a much better user experience.
PDF Support
PDF files are now a supported raster file format, including GeoPDF(R) and geospatial PDFs using the ISO encoding. They can now be directly added to maps or scenes as raster layers or basemaps without the need to first convert them to another format. The first page of a PDF will be read and georeferenced according to optional embedded spatial reference information, and at a default DPI of 300.
Symbology
Support for fetching Model Symbols from a mobile Style file
This release adds support to fetch a Model Symbol from a mobile Style file. You can search for a model symbol in the mobile style or fetch a symbol by providing list of keys. The type of symbol returned is a MultilayerPointSymbol
and model symbol layer object is returned as a generic SymbolLayer
type object. This workflow is already supported for WebStyles.
Attribute editing with feature forms
Add JSONSerializable interface to feature form definition
This release adds JSONSerializable
interface to FeatureFormDefinition
to allow advanced clients to get access to the full JSON data.
Arcade
Support for new Arcade version
The SDK now supports Arcade 1.33
- Geotrigger notification profile now supports
$
.Fence Layer Translate
function is not yet supported and will be supported in a future release.Text
Projection Engine
Geographic (datum) transformations
- Added geographic (datum) transformation method Molodensky-Badekas (Position Vector). The existing Molodensky-Badekas method uses the Coordinate Frame version of the rotation matrix.
- Added geographic (datum) transformation method NTv2_Velocity. Although the method is designed to support datum anchor epochs and data epochs, only frame epochs of the geographic coordinate systems are currently supported for interframe conversions such as between NAD83(CSRS)v2 and NAD83(CSRS)v8.
SDK enhancements
JSON APIs
JSON APIs - from
and to
now work with Data
instead of String
, making JSON serialization and deserialization more streamlined using Swift's Codable
protocol.
// Decoding is equivalent to using JSONDecoder
let json = #"{"x":-117,"y":34,"spatialReference":{"wkid":4326}}"#.data(using: .utf8)!
// let point = try JSONDecoder().decode(Point.self, from: json)
let point = try Point.fromJSON(json)
// Encoding is equivalent to using JSONEncoder
let point = Point(latitude: 34, longitude: -117)
// let json = try JSONEncoder().encode(point)
let json = point.toJSON()
Download Task Response Details
ArcGISURLSession
provides a new download
async stream which provides information about file downloads such as the file size and download progress. This information is available for any file downloads initiated by the API, including OfflineMapTask
, ExportTileCacheTask
, ExportVectorTilesTask
, etc.
for await response in ArcGISURLSession.downloadTaskResponseDetails {
Task {
for await progress in response.progress {
// Print the total amount of data downloaded.
print("-- progress: \(progress.totalDownloaded)")
}
}
}
Authenticator
- Adds support for Identity-Aware Proxies (IAP). An Identity-Aware Proxy (IAP) is a security feature that enables organizations to manage access to their on-premises web applications and services based on user identity. Typically, it functions as a reverse proxy, acting as a gatekeeper to ensure that only authenticated and authorized users can access specific resources. The authentication process for IAP occurs within a web session using protocols such as OAuth, SAML, or OpenID Connect. During this session, security tokens and cookies are generated, which remain valid throughout the session until they are invalidated. This release adds support for Microsoft Entra Application Proxy.
init(prompt
is deprecated and replaced byFor Untrusted Hosts :o Auth User Configurations :) init(prompt
to support authenticating with IAP by optionally passing in configuration settings for the proxy.For Untrusted Hosts :o Auth User Configurations :iap Configurations :)
- Adds
ArcGIS
which allows the authenticator to better decide which type ofAuthentication Challenge Type ArcGIS
should be created to handle the underlying authentication challenge.Credential o
andAuth User Configurations iap
are now public read-write properties to allow setting configurations more easily.Configurations
FeatureFormView
- The
Feature
view adds support for viewing utility network associations. Associations model relationships between utility assets in the real world based on connectivity, containment, or structural attachment.Form - The view allows users to browse through associated features and return to previously viewed ones. The associations are filtered according to the settings described by the form's
Utility
configuration. No associations are displayed if the form doesn't contain the required settings. If the view is used without a form definition, all available associations are displayed without any filters.Associations Form Element init(feature
is deprecated and replaced byForm :) init(root
.:is Presented :) Feature
uses aForm View Navigation
internally to support browsing utility network associations. The new initializer provides an isolated navigation context for the feature form.Stack
- Browse utility network associations in a feature form through the
Utility
.Associations Form Element

editing
is added to control the visibility of new built-in Save and Discard buttons.Buttons( _:) navigation
is added to prevent users from navigating to other associations.Disabled( _:) on
andFeature Form Changed(perform :) on
are added to allow receiving change events from the form.Form Editing Event(perform :) - The feature form might change when navigating through the associations in a
Utility
.Associations Form Element - You can run actions based on the form editing events, such as saving and discarding edits.
- The feature form might change when navigating through the associations in a
OfflineMapAreasView
- Fixes a crash when attempting to re-download a deleted preplanned map area while offline.
- Fixes a bug that stops the on-demand workflow from downloading an area. When the view first appears and the extent selector isn't moved, if the download button is tapped, the view behaved incorrectly.
- Fixes a bug when using the view in certain offline situations, the view doesn't show the "No Internet Connection" message.
- Changes the "Delete Map Area" button to "Remove Download" for ahead-of-time and "Delete Download" for on-demand workflows, to better reflect that the actions delete the downloaded data for the map area.
PopupView

- The
Popup
adds support for viewing utility network associations. Associations model relationships between utility assets in the real world based on connectivity, containment, or structural attachment.View - The view allows users to browse through associated features and return to those previously viewed. The associations are filtered (e.g., by assembly layer) according to the settings described by the form's
Utility
configuration and presents results in collapsible groups by layer, table, or subtype. The view shows relevant association details - such as connected terminals or fraction along an edge - and supports navigation to the popup of an associated feature, whether spatial or non-spatial, with a back button to return to the previous view. It allows users to exit all associations at once, returning to the original feature, and only display associations that are currently available on the map.Associations Popup Element init(popup
is deprecated and replaced by:is Presented :) init(root
to better support navigating between associated features.:is Presented :) Popup
uses aView Navigation
internally to support browsing utility network associations, and the new initializer provides an isolated navigation context for the popup view.Stack
header(
modifier is deprecated. With the new navigation context, the view owns and manages its own navigation stack, so there's no longer support for hiding the header._:) show
modifier is deprecated. With the new navigation context, the view decides whether or not to show the close button by theClose Button( _:) is
initializer parameter.Presented on
is added to support custom actions when browsing between popups associated via aPopup Changed(perform :) Utility
.Associations Popup Element
Breaking API changes
There are no breaking API changes with this release.
Behavior changes
- With this release,
GeometryEngine.reshape()
now supports true curves. - With ArcGIS Online now supporting true curves, you can now apply edits to circular arcs in an ArcGIS Online hosted feature service.
- The
wkt2
string description of aSpatialReference
is now read in preference overwkt
forFeatureLayer
s andGeodatabase
s and is also contained in theirSpatial Reference
output json. JSON
method now serializes properties from theSerializable.to JSO N() unknown
collection.JSON - This is the last release where creating an
IntegratedMeshLayer
using theArcGISSceneLayer
constructor workflow is supported. Starting from next release, it is recommended that you use theIntegrated
constructor to create a layer of that type.Mesh Layer
Deprecations
API deprecations
- The
UtilityNetwork
constructors withURI
are deprecated and will be removed in a future release. Use the constructor that accepts aServiceGeodatabase
instead. unknown
andJSON unsupported
properties have been deprecated from the JsonSerializableJSON JsonSerializable
interface and objects which follow a similar pattern. Use theJSON
instead to get all JSON data for an object. SinceSerializable.to JSO N() Map
andScene
objects can be large and expensive to parse and serialize, a newunused
property has been added specifically to those root objects.JSON
-
The
FeatureSubtype.domains
property is deprecated and will be removed in a future release. Use theField.domain
in theFeatureSubtype.fieldOverrides
instead. -
Integrated
enum value is deprecated fromMesh ArcGISSceneLayer.DataType
. -
OpenStreetMap (OSM) basemaps are in mature support and will no longer be updated. They will be removed in a future version of the ArcGIS Maps SDK for Swift. For more information, see the Overture Maps Data in ArcGIS blog. We recommend that you replace your OSM
Basemap.Style
with the equivalent Open Basemap styles, as follows:OSM Basemap style Open Basemap style OSMStandard openOSMStyle OSMStandardRelief openOSMStyleRelief OSMStandardReliefBase openOSMStyleReliefBase OSMStreets openStreets OSMStreetsRelief openStreetsRelief OSMLightGray openLightGray OSMLightGrayBase openLightGrayBase OSMLightGrayLabels openLightGrayLabels OSMDarkGray openDarkGray OSMDarkGrayBase openDarkGrayBase OSMDarkGrayLabels openDarkGrayLabels OSMStreetsReliefBase openStreetsReliefBase OSMBlueprint openBlueprint OSMHybrid openHybrid OSMHybridDetail openHybridDetail OSMNavigation openNavigation OSMNavigationDark openNavigationDark
BingMapsLayer
andBingMapsLayer.Style
are now deprecated and will be removed in a future version of ArcGIS Maps SDK for Swift. Microsoft has deprecated Bing Maps for Enterprise, which will retire and be replaced by Azure Maps on June 30, 2028. As a result, use of Bing Maps in ArcGIS Maps SDK for Swift is also deprecated. You can migrate from Bing Maps to Azure Maps by following the instructions in the Microsoft Azure documentation.
OS and framework deprecations
There are no OS or framework deprecations with this release.
Issues resolved
Issues addressed in this release are listed below.
- Memory leak issues that occur when reloading a mobile map with a
UtilityNetwork
could lead to failures in trace operations. UtilityNetworkValidationJob
does not propagate server errors when it is unable to acquire a lock.UtilityNetworkValidationJob
encounters failures when provided with an extent that includes m-values.FeatureLayer.floorDefinition
property is not honored by a floor-awareSubtype
when included in a web or mobile map.Feature Layer ContingentValuesDefinition
fails to load with version 11.5 ArcGIS Enterprise reference feature services- Issue reported on Esri Community: Rapid zooming in using the mouse wheel causes a much higher zoom level than expected.
- Unable to evaluate
Feature
Arcade function referencing aSet By Name() SubtypeFeatureLayer
in pop-ups. - The
ServiceFeatureTable.undoLocalEdits()
andServiceGeodatabase.undoLocalEdits()
methods fail to revert the addition of features in a change-tracked non-spatial table.
Layer
s configured with custom dictionaries do not display on the map when parsing dictionary version in a web style.- BUG-000174246 - When drawing a graphic line with static rendering mode, unnecessary graphics are drawn along with the graphic line in a 3D
SceneView
.
PortalItem
of image type fails to add or update when the filename contains the file extension- Vertex and lines doesn't follow the hover gesture for geometry editor on Mac Catalyst.
- Empty URL causes crash instead of throwing an
Invalid
.Call Error NetworkAnalystError
message doesn't include localized error details.- When
PortalQueryParameters.searchPublic
isFalse
, non-public items from another organization that the user can access are not returned. - The
GeometryEditor
drag gesture lags between finger and vertex. CustomTiledLayer
doesn't show as a basemap layer.
Known issues
There are no known issues or limitations for this release.
Changes in samples
New samples
- Add OpenStreetMap layer
- Add WFS layer
- Add WMTS layer
- Add feature collection layer from portal item
- Add feature collection layer from query
- Add feature collection layer from table
- Add feature layer with time offset
- Add integrated mesh layer
- Add items to portal
- Add rasters and feature tables from geopackage
- Analyze hotspots
- Apply RGB renderer
- Apply blend renderer to hillshade
- Apply class breaks renderer to sublayer
- Apply colormap renderer to raster
- Apply function to raster from file
- Apply function to raster from service
- Apply hillshade renderer to raster
- Apply scene property expressions
- Apply simple renderer to feature layer
- Apply simple renderer to graphics overlay
- Apply stretch renderer
- Apply style to WMS layer
- Apply symbology to shapefile
- Apply terrain exaggeration
- Authenticate with Integrated Windows Authentication
- Authenticate with PKI certificate
- Authenticate with token
- Browse WFS layers
- Browse WMS layers
- Control annotation sublayer visibility
- Create and save map
- Create geometries
- Display OGC API collection
- Display route layer
- Edit geometries with programmatic reticle tool
- Generate geodatabase replica from feature service
- List geodatabase versions
- Manage features
- Project with chosen transformation
- Query map image sublayer
- Query table statistics
- Query table statistics group and sort
- Query with time extent
- Search symbol style dictionary
- Set atmosphere effect in scene
- Set feature layer rendering mode on map
- Set feature layer rendering mode on scene
- Set initial map location
- Set map image layer sublayer visibility
- Show extruded graphics
- Show geodesic path between two points
- Show geodesic sector and ellipse
- Show labels on layer in 3D
- Show line of sight between geoelements
- Show magnifier
- Show portal user info
- Show service areas for multiple facilities
- Show shapefile metadata
- Take screenshot
Enhancements
Sample Viewer
- Increased the project's minimum deployment to
17.0
. - Added App Store review requests.
Samples
- Simplified Add scene layer from service to better highlight adding scene layers.
- Enhanced the Set basemap README to include information on organizational basemaps.
- Replaced uses of deprecated APIs:
- Updated the
FeatureForm
andPopupView
uses to support their new initializers. - Moved to using the new geodatabase
UtilityNetwork
initializer. - Replaced uses of the OpenStreetMap basemap styles.
- Added support for the new
Data
JSON methods.
- Updated the
Bug fixes
- Fixed a bug where sample authentication teardown wouldn't always complete before another sample appeared.
- Resolved an issue where some sheets were displaying smaller than expected.
- Replaced KML data that was not working in Add KML layer sample.
Related topics
- System requirements for 200.8
- Install and set up
- Display a map (Tutorial)
- Product Life Cycle (Esri Support Site)