This page provides details about enhancements in the 200.8 release of ArcGIS Maps SDK for Kotlin. 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 GeometryEditor.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 GeometryEditor.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 MapViewProxy.identifyGraphicsOverlays()
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 ArcGISMap
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 Map.utilityNetworks
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
Augmented Reality - FlyoverSceneView
The FlyoverSceneView
component uses augmented reality to render a scene that is navigated by moving the device, providing a more natural navigation experience than a mouse or touch interface. Flyover
can be customized to render any location with a variable translation
to control the degree to which device movement affects the movement of the scene camera. See the FlyoverSceneView toolkit component for more details.
Augmented Reality - WorldScaleSceneView
WorldScaleSceneView
may now enter aFailed
status inTo Initialize WorldScaleSceneViewStatus
if the component is unable to access the device sensor data.WorldScaleSceneView
will now receive a validmap
in thePoint Single
supplied by theTap Confirmed Event on
callback. ThisSingle Tap Confirmed map
is calculated by detecting horizontal and vertical planes at the tapped screen coordinate and converting the real-world location to a scene coordinate. If no planes are detected, thePoint map
will be null.Point - When the
WorldScaleSceneView
is running inWorldScaleTrackingMode.Geospatial
mode, ARCore uses Google VPS when available. You can make use of two versions of the checkVpsAvailability function (with and without location parameters) available onWorldScaleSceneViewProxy
to query VPS availability. WorldScaleSceneView
now has anon
parameter which can be used to track transient errors after theTracking Error Changed World
has been initialized.Scale Scene View
See the WorldScaleSceneView toolkit component for more details.
Basemap Gallery
The BasemapGallery
toolkit component has been enhanced to allow basemaps that come from a portal item to be marked as 3D basemaps. If the new property Basemap
is set true
, a "3D" badge is displayed on top of the basemap's thumbnail in the gallery. See the BasemapGallery toolkit component for more details.
Feature Forms
- Added support for
UtilityAssociationsFormElement
s in theFeature
. This allows users to view a list ofForm UtilityAssociation
s, navigate to associated features, and edit them. - Introduced a new
FeatureFormState
class to support navigation for associations inUtilityAssociationsFormElement
and associated features. A new overload acceptingFeatureFormState
as a parameter has been added. - Navigation to other features while viewing
UtilityAssociation
s can be disabled using theis
parameter, which defaults toNavigation Enabled : Boolean true
. - A close icon is now displayed in the form UI. The
on
parameter allows handling the tap action, and the icon can be hidden by settingDismiss show
toClose Icon : Boolean false
. - When edits are present in the
Feature
, an action bar is displayed at the top of the form with “Save” and “Discard” buttons. This can be hidden by settingForm show
toForm Actions : Boolean false
. A newon
callback of typeEditing Event FeatureFormEditingEvent
is introduced to listen for save and discard actions. - Attachments UI has been redesigned with a modern look. New styling options are introduced with
AttachmentsElementColors.tileContainerColor
andAttachmentsElementTypography.tileSupportingTextStyle
. - The toolkit now supports downloading large attachments up to 999MB, while uploading remains limited to 50MB.
- Deprecated the
Feature
composable that takes aForm Feature
parameter, introduced in version 200.4.0. This overload does not displayForm UtilityAssociationsFormElement
. Use theFeatureForm
overload that acceptsFeatureFormState
instead. - Deprecated
AttachmentsElementColors.outlineColor
andAttachmentsElementColors.tileBorderColor
as the element is no longer outlined.
See the FeatureForm toolkit component for more details.
Overview Map
The OverviewMap
toolkit component provides a small, secondary Map
(sometimes called an "inset map"), that can be superimposed on an existing MapView
or SceneView
, which shows a representation of the main view's current viewpoint. OverviewMap toolkit component for more details.
OfflineMapAreas
The OfflineMapAreasView
toolkit component provides a composable UI to take a web map offline by downloading map areas.
You can now download map areas created ahead-of-time(preplanned) by the web map author, or create map areas on-demand by specifying an area of interest and level of detail. Map areas are downloaded to the app’s external directory and can be used when the device is disconnected from the network. You can get information about a map area such as its size and the geographic region it covers, delete a downloaded map area to free up storage space on the device or get a list of web maps that have been downloaded to the device using the Offline
property.
See the OfflineMapAreas toolkit component for more details.
Authenticator
The Authenticator
toolkit component now supports Identity Aware Proxy's Sign-in and SignOut. This works out of the box when there's an IapConfiguration
set on the AuthenticatorState.iapConfigurations
property. See the Authenticator toolkit component for more details.
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
-
When
ArcGISEnvironment.applicationContext
is set, additional information is populated into the referer header sent by authentication requests. This additional information consists of the application package name of the running app, which allows identification of the specific app via the referer. With this release the user agent will also get populated by the application package whenArcGIS
is set.Environment.application Context -
The
AuthenticatorState
now supports managing multipleOAuthUserConfiguration
instances through the newAuthenticatorState.oAuthUserConfigurations
property. This enhancement allows you to configure and switch between multiple OAuth setups more flexibly, enabling richer multi-user or multi-tenant authentication scenarios.
Deprecations
API deprecations
-
Username
property has been deprecated. It has been replaced byPassword Challenge.additional Message Username
property to be used to display relevant error messages.Password Challenge.cause -
SystemLocationDataSource
functions which take aCriteria
parameter are now deprecated. Specific location providers need to be specified now when creating aSystem
or when callingLocation Data Source SystemLocationDataSource.requestLocationUpdates()
. -
The
Authenticator
composable that uses theon
lambda has been deprecated. Use the updatedPending O Auth User Sign In Authenticator
composable that accepts aon
lambda.Pending Browser Authentication Challenge : ( Browser Authentication Challenge) - > Unit BrowserAuthenticationChallenge
is a wrapper around sign-in/out objects such asIap
,Sign In O
, andAuth User Sign In Iap
. This new parameter is similar to the previous lambda and should be used when launching and receiving IAP/OAuth flows from your ownSign Out Activity
. -
Use of
OAuthUserSignInActivity
in the AndroidManifest (previously used to handle OAuth redirect URIs) has been deprecated. It has been replaced withAuthenticationActivity
, which provides the same functionality and also supports IAP sign-in/sign-out completion. -
Activity.launch
andCustom Tabs(pending Sign In : O Auth User Sign In?) Authenticator
have been deprecated. Replaced withState.complete O Auth Sign In(intent) Activity.launchCustomTabs(pendingBrowserAuthenticationChallenge)
andAuthenticatorState.completeBrowserAuthenticationChallenge(intent)
.These updated methods support both OAuth and IAP sign-in/sign-out flows. -
Authentication
has been deprecated as it does not support IAP sign-out. UseManager.sign Out() AuthenticatorState.signOut()
instead. IfIapCredential
s are present in the credential cache, this will launch a browser page to invalidate the IAP session
- 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() ArcGISMap
andArcGISScene
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 SceneLayerDataType
. -
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 Kotlin. For more information, see the Overture Maps Data in ArcGIS blog. We recommend that you replace your OSM
BasemapStyle
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
andBingMapsLayerStyle
are now deprecated and will be removed in a future version of ArcGIS Maps SDK for Kotlin. 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 Kotlin 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.
Known issues
There are no known issues or limitations for this release.
Changes in samples
New samples
- Analysis
- Augmented Reality
- Edit & Manage Data
- Layers
- Maps
- Visualizations
Enhancements
- Migrated 2 XML view-based samples to use Jetpack Compose, leveraging the GeoView-Compose Toolkit module.
- Combined Add scene layer with elevation into Add scene layer from service.
- Updated authentication samples (Authenticate with OAuth, Create and save map, Show portal user info) to showcase new 200.8 toolkit authentication workflows.
- Updated samples to use minSDK = 28 and targetSDK = 36 to match the Kotlin SDK.
- Migrated to Android Gradle plugin
8.9.2
, compatible with Gradle version8.14
.
Related topics
- System requirements for 200.8
- Install and set up
- Display a map (tutorial)
- Product Life Cycle (Esri Support Site)