Release notes for 4.32

February 2025

Display filter

Display filters are associated with a given layer and control which features are visible on the map. They allow you to display a subset of features while retaining access to all features for querying and analysis. Display filters can be scale dependent, allowing layers with many features to be displayed seamlessly at different zoom levels, or manually applied, allowing users to select specific filters to show certain features.

This can significantly improve the performance of your applications. In this sample that displays 2.7 million line features, a display filter helps to visually filter what is displayed at each scale. At previous releases, you would have to duplicate the layer and set the scale range and definition expression on each copy of the layer to achieve the same behavior.

Enhanced highlights API

Features can now have different highlights applied to them. This enables them to be visually emphasized in different ways depending on the application context or user interaction. The new View.highlights collection consolidates pre-configured and user-defined sets of HighlightOptions to be used within an application. You can specify a particular highlight to apply using the new HighlightOptions name property.

The existing highlightOptions property on 2D MapView and 3D SceneView is now deprecated in favor of the new View.highlights collection.

The samples below demonstrate how applying multiple highlight options under various circumstances enables more visual variety and greater focus on particular features.

In the Select features by rectangle sample, all selected features in the map are highlighted green, while the feature hovered over in the feature table is highlighted pink.

Highlight features by geometry

In the Highlight SceneLayer sample, all buildings selected in the list are highlighted blue in the scene, while the building hovered over in the list is highlighted yellow.

Highlight SceneLayer

Track rendering (beta)

Track rendering is now available in beta via the StreamLayer.trackInfo property in 2D maps. This property allows you to configure popups, labels, and renderers for various track parts (latest observation, previous observations, and track line). Previously, you could not configure the rendering of track lines, or separate renderers for latest observations and previous observations.

The trackInfo property is also available on FeatureLayer, GeoJSONLayer, CSVLayer, WFSLayer, and OGCFeatureLayer, for exploring and visualizing historic time-aware data.

Directions

The Directions component (and widget), now powered by Calcite, has been significantly enhanced to provide more functionality with a modern design.

  • The UI has been enhanced with Calcite to provide a more modern look and feel. Turn-by-turn directions are automatically collapsed and can be individually cleared or saved. Note that some existing features have been moved, for example, persisting a route can be done from the collapsed turn-by-turn directions for each route instead of having a dedicated UI button.
  • Stop order can now be easily optimized with the toggle switch.
  • In 2D, the new Edit route button provides an entry for interactive routing and editing of existing routes, including the ability to add, move, and remove stops and barriers via the UI.
Directions sample

Arcade $view profile variable

The popup, visualization, and labeling profiles of the Arcade language have been enhanced to include the $view profile variable. This gives the Arcade author direct access to the view's scale (e.g. $view.scale) and time properties (e.g. $view.timeProperties) in the expression. With the $view.timeProperties variable, you can access the time extent of the view, allowing you to dynamically reference field names that may contain a time component (e.g. POPULATION_2000, POPULATION_2010, etc.) in expressions set on the layer's renderer, labels, or popup template. Each time the user interacts with the time slider, expressions referencing the $view.timeProperties variable will automatically re-execute, allowing you to only display data corresponding to the current time extent.

Previously, this required developers to re-create renderers and all other layer configurations each time the time extent changed in the time slider. Now, the underlying rendering engine will automatically update the visualization based on the time extent when $view.timeProperties is used in the expression. Because it is now handled in Arcade, the time-aware rendering is more efficient, easier to maintain, and can be saved to the web map or layer item.

The Knowledge Graph Developer Toolkit capabilities have officially transitioned out of beta! Knowledge graphs allow you to model real-world systems that contain both spatial and nonspatial data, and the relationships that connect them, allowing you to leverage both spatial and nonspatial tools in your analysis. This includes key knowledge graph service functionality such as:

  • Search: Search through the knowledge graph to discover entities and relationships using their properties.
  • Query: Query allows you to find a specific subset of entities and relationships, identify how different entities are connected, and find patterns in your connected data using openCypher graph queries.
  • Apply Edits: Allows you to add new entities and relationships, and update or delete existing records.

This also includes knowledge graph layers which represents knowledge graph data on a map to enhance visualization and analysis of your data. Knowledge graph layers can be added to a web map from a portal item or directly from the knowledge graph service. The spatial data in your graph will be added to the map as features allowing you to leverage existing spatial analysis and visualization tools.

Knowledge graph layers on a map

We are excited to announce the release of web link charts! Web link charts contain a link chart layer with the data from your knowledge graph and are loaded in a link chart view. Web link charts are a new core view (like MapView and SceneView) that are specifically for visually representing and analyzing all or part of a knowledge graph. They extend WebMaps and are built on the same core technology allowing you to leverage existing tools and patterns while also adding some additional link chart specific capabilities for refining your link chart visualizations and conducting graph analysis.

  • Layouts: Different layouts provide different visualizations to better understand the patterns in your data. For example, geographic layout arranges spatial entities using their geometry with their connected nonspatial data clustered around them while chronological layout arranges entities and relationships according to time.
  • Expand: Finds and adds all directly connected entities "one-hop" away from the given entities and adds the entities and their connecting relationships to the link chart.
  • Connect: Adds direct relationships between the given entities to the link chart.
  • Add and Remove Records: Update the data in your link chart by adding or removing entities and relationships.

Link charts also have a new web component for easily displaying a link chart from a portal content item with a layout switcher.

Web link chart in different layouts

The new Link Chart component loads a WebLinkChart from an ArcGIS Enterprise portal item. A Link Chart Layout Switcher component has been added for use within the new Link Chart component. The Link Chart Layout Switcher enables users to switch between different link chart layouts.

link chart component

Editing

Subtype group tables

Subtype group tables are composite tables that contain multiple subtables, where each subtable corresponds to a subtype in the dataset. Subtype group tables are loaded in the SDK using the SubtypeGroupLayer class. This class can now load a subtype group layer or subtype group table from either a service url or portalItem. The isTable property can be used to determine whether the SubtypeGroupLayer is a layer or table once the SubtypeGroupLayer is loaded.

Editor, FeatureTable, Popup, and TableList were enhanced to support subtype group tables. Editor and FeatureTable provide an editing experience to view and edit the subtables via the SubtypeSublayer class. This includes support for editing attributes, attachments, and related records.

TableList was enhanced to display subtype group tables along with their subtables. As the video below demonstrates, the subtables are collapsed by default, but can be expanded. The listMode property in SubtypeGroupLayer and SubtypeSublayer specify how the table and subtables appear in TableList.

Editing shared templates

There are two ways to edit using templates with the Editor component (and widget), either by using feature templates stored in the service or shared editing templates stored in the database which include group and preset templates. Editing templates contain tools and settings for creating features in your database, store optional descriptive metadata, and specify the target data source and the feature attribute values applied to features.

In the example below, a preset template named "Pump station with devices" is used to incorporate predefined features onto the map in the exact order they were selected during the template creation. After placing the template, a list of included features is presented, allowing users to click on them to edit individual feature attributes.

Shared template editing

Drawing toolbar in Editor

The Editor component (and widget) was enhanced to display a draw toolbar in create workflows, allowing users to switch between different draw tools when creating features. The supported draw tools added for polygons are freehand-polygon,rectangle, and circle. For polylines, freehand-polyline was added.

To go with the new draw tools, Editor also now respects feature templates published with these draw tools. Prior to this release, polygon layers defaulted to the polygon draw tool and polyline layers defaulted to the polyline tool.

Additionally, Editor now displays a staged list of features in a create workflow. Editor has previously allowed users to create multiple features in a single creation operation, but this enhancement allows users to see a list of the staged features and interact with them. A user can delete features in this list, zoom to them, and modify attributes prior to feature creation. If any of the forms for the staged features are invalid, a warning icon is placed next to the list item of the feature to indicate the form needs attention to successfully submit the edits. Hovering over a list item displays a temporary highlight color over the feature as a visual indicator of the corresponding feature on the map.

Snapping support for display filter

The snapping engine was enhanced to support the new display filters, meaning that features on the map hidden due to an active display filter will not be available for snapping. This is particularly useful when editing features with the Editor component (and widget).

The example below shows an active display filter which hides features from the Water Device layer that are contained within the Water Pump Station polygon. The new features created cannot snap to the existing features that are hidden by the display filter, so we cannot see any snapping visuals as we hover the cursor over the lines from the Water Main layer. Once the display filter is turned off, we can see the snapping indicators appear again on the map.

Editor snapping display filter support

Utility Network

Adding and deleting Utility Network Associations

The Editor component (and widget) has been updated to allow adding and deleting associations in forms. This enhancement streamlines the editing process, enabling users to manage associations more efficiently within their workflows. With the new Association editing capabilities, users can easily modify associations between features.

Association editing

Utility Network Trace

Executing traces with nonspatial data

Nonspatial data can be added to the Utility Network Trace component's (and widget's) starting points and barriers. This enhancement enables the utilization of nonspatial data during trace operations.

Traversing associations in trace results

Associations can now be displayed in the trace results of the Utility Network Trace component (and widget).

Geometry operators

Geometry operators were introduced at 4.31 as the eventual replacement for the geometryEngine, which provides functions for testing, measuring, and analyzing spatial relationships between two or more 2D geometries client-side. With this release they are out of beta.

The new geometry operators not only encompass all the existing functionality of the geometryEngine but also introduce over 20 new capabilities not previously available. For an overview of the operators, refer to the Introduction to geometry operators guide page.

Project operator

The projectOperator is now available as the eventual replacement for projection engine. The projectOperator provides client-side capabilities for converting geometries from one spatial reference to another to ensure your data is displayed correctly on the map.

The shapePreservingProjectOperator is now available. This operator transforms 2D geometry segment endpoints and interior points to maintain their original shape accurately.

Projection comparison

Three support modules are also now available for working with geographic transformations in the projectOperator: geographicTransformationUtils, GeographicTransformation andGeographicTransformationStep.

Geographic transformations are used to transform geographic coordinates between spatial references that have different geographic coordinate systems. Using the most suitable transformation ensures the best possible accuracy when converting geometries from one spatial reference to another. The geographicTransformationUtils module provides methods which return the default geographic transformation for the given projection or a list of suitable geographic transformations.

Attribute bin query

Attribute bin queries are a data analysis technique used to group data into categories or bins based on specific ranges, such as numeric values or date intervals. It simplifies large or complex datasets by summarizing them into meaningful intervals, making patterns or trends easier to identify. For example, hurricanes that occurred between 1900 and 2024 can be grouped by month to analyze seasonal patterns and determine which months have the highest frequency of hurricanes. The binning process can now be performed by calling queryAttributeBins on a feature layer. This method returns an AttributeBinsFeatureSet containing an AttributeBinsGraphic, whose attributes hold the binned data.

Attribute bin query

MediaLayer updates

We enhanced the MediaLayer user experience in a 3D Scene with new highlighting and source point editing capabilities. MediaLayerView now includes a highlight() method for emphasizing media elements during hit testing or editing in a 3D SceneView. Additionally, a new interaction mode in MediaLayerView enables direct manipulation of source points within the 3D SceneView by holding Alt key while dragging. These changes will be coming to 2D in a future release.

Explore this functionality in this updated sample.

Terrain analysis sample

Perform raster analysis with RasterFunctions and rasterFunctionUtils on ImageryLayer and ImageryTileLayer. Raster functions are operations that allow you to process imagery directly client-side. More than 150 raster functions are available as individual processing functions, or they can be combined into a processing chain for complex workflows. This new sample demonstrates how to use RasterFunctions and rasterFunctionUtils with an ImageryTileLayer, displaying the global Terrain 3D layer. The rasterFunctionsUtils library simplifies the imagery processing also for key terrain properties, such as slope, elevation, and aspect.

Explore this functionality in this new sample.

Component and widget updates

Map components

Twelve components in map-components have been updated under the hood to no longer wrap widget code in their implementation: Basemap Gallery, Basemap Toggle, Compass, Directional Pad, Fullscreen, Home, Locate, Navigation Toggle, Scale Bar, Swipe, Track, and Zoom components.

By making components consistent across the SDK, their behavior will also more closely mimic what is expected from a standard web component. For example, style encapsulation via the shadowDOM. We will continue to work on the remaining components in @arcgis/map-components that are currently wrapping widget code in their implementation. See Esri's move to web components for more information about the widget transition period and future.

In addition to the 12 above, Version Management, and the two new components, Link Chart and Link Chart Layout Switcher, also follow the same consistency in behavior.

FeatureTable improved selection & highlight

The FeatureTable component (and widget) now offers improved selection and row highlighting. Hovering over a row highlights the corresponding feature in yellow. This enhancement simplifies distinguishing between table rows and their associated features within a selected set.

This update can be helpful when working with related data in multiple layers. Having the ability to hover over a cell of a related feature provides a visual indicator for any related features on the map.

FeatureTable highlights

Features and Popup

Feature order in MapImageLayer sublayers

The Popup widget and Features component (and widget) now display features residing in MapImageLayer sublayers in the order they are displayed on the map. The returned features will adhere to the default drawing order of the data or a specific order if orderBy is specified. In previous versions, the features were displayed in the order they were returned from the server.

Display features in a list

An initialDisplayMode property has been introduced to Features and Popup to allow control of the initial display of features. The initialDisplayMode property can be set to "list" to showcase features in a list view, or "feature" to directly display the popup content of the first feature.

Initial display in list modeSelecting a feature from the list
initialDisplayMode "list" initialDisplayMode select feature

Attachments in MapImageLayers

MapImageLayer sublayer attachments can be displayed as a thumbnail if the sublayer supports resized attachments and the AttachmentsContent displayType is set to auto or preview.

Sorting attachments

At this release, AttachmentsContent allows the sorting of attachments in either ascending or descending order if the feature layer supports attachment.supportsOrderByFields. This is enabled by configuring the new orderByFields property with the AttachmentsOrderByInfo class.

The Search component (and widget), now powered by Calcite, has been enhanced to provide more power in a more modern design. This does mean that we cannot support customized styles at the current release. We anticipate allowing this functionality at a future release.

Search sample

Oriented imagery

Image measurement tools

Measurement is now added in the Oriented Imagery Viewer component (and widget), allowing users to measure assets and objects directly within the image space. Users can now perform ground-related measurements within their area of interest using the following options:

  • Ground Distance – Calculate the distance between two or more ground points based on user-selected points in the Oriented Imagery viewer.
  • Ground Area – Calculate the area enclosed by ground points corresponding to the user-selected points within the image viewer.
  • Height Above Ground – Determine the height of an asset relative to the ground as displayed in the viewer.
  • Ground Location – Retrieve ground coordinates on the Map/Scene corresponding to selected points in the viewer.
oriented imagery measurement

Data capture tools

The Oriented Imagery Viewer component (and widget) now supports Data Capture Tools, enabling users to create new features directly in the image space—ideal for inspection workflows. Users can mark assets and extract valuable information from images within the viewer. Key Capabilities:

  • Feature Creation – Users can draw and capture point, polyline, and polygon features in the Oriented Imagery Widget.
  • Seamless Data Storage – Captured features are stored in external FeatureLayers, ensuring data persistence.
  • Enhanced Visualization – Stored features can be reloaded as image overlays in the viewer and visualized as standard map features.
oriented imagery Data Capture

Additional raster functions

The rasterFunctionUtils module is out of beta and has been enhanced to support the following raster functions:

TypeScript development improvements

In this release there are many TypeScript enhancements and bug fixes that went into the SDK types and documentation. We also introduced tooling in our build process that makes sure the types closely match the implementation.

New union types

We have enhanced the TypeScript experience when working with geometries, symbols and renderers. The convenience modules esri/geometry, esri/symbols and esri/renderers have been deprecated and replaced with a single module called esri/unionTypes. This unionTypes module provides type definitions that combine all related subclasses of a base class into a union type. It is recommended to use the union types instead of base class types, like esri/geometry/Geometry. Using these union types helps maintain consistency in both the API and application development.

Here’s an example of how to use the new union types:

Use dark colors for code blocksCopy
1
2
3
4
import type { GeometryUnion } from "@arcgis/core/unionTypes.js".

const geometries: GeometryUnion[] = [polygon1, extent1, point1];
const union = unionOperator.executeMany(geometries);

The unions can also be discriminated to avoid having to cast or use instanceof. In the code snippet below, the geometry type for polygon is correctly inferred:

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
const geometries: GeometryUnion[] = [polygon1, extent1, point1];
for (const geometry of geometries) {
  switch (geometry.type) {
    case "polygon":
      // Typescript correctly infers the geometry type is a polygon
      const firstRing = geometry.rings.at(0);
      // work with first ring
      break;
    default:
      // Handle the rest
  }
}

The SDK now consistently uses the union types instead of the base classes. All the new union types are suffixed with "Union", such as GeometryUnion, to clearly differentiate them from the base class names.

Improved type safety

By default, the typings now include null and undefined where appropriate. This enhances type safety and makes them compatible with projects where strict or strictNullChecks are enabled. Without strict null checks, null or undefined can be assigned to any TypeScript type, potentially leading to runtime errors if your code tries to access a null or undefined variable. Below is an example of the new types, as shown in the API reference:

Strict null

Autocasting enhancements

Support for using TypeScript property setters was added to autocasting. Types now work in constructors, parameters and setters. Autocasting allows JavaScript objects to be automatically cast to SDK class types without the need for explicit imports. In the following example, the types are correctly narrowed when the renderer is set after the FeatureLayer is created:

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
let citiesLayer = new FeatureLayer({
  url: "http://url.to.service",
});

// At 4.32 this works in TypeScript
citiesLayer.renderer = {
  type: "simple",
  symbol: {
    type: "simple-marker",
    size: 6,
    color: "black",
    outline: {
      width: 0.5,
      color: "white"
    }
  }
};

TypeScript migration recommendations

When introducing these TypeScript changes into your applications there are a number of recommendations.

When working with strict null:

  • Use the ?. optional chaining operator to allow safe access to properties that are null or undefined.
  • Use of ! non-null assertion operator to temporarily make your build pass. Make sure these values are not null or undefined.
  • Consider temporarily disabling strict null. This should only be used to momentarily unblock your upgrade.

When working with unions:

When working with autocasting:

  • In many cases, it can be beneficial to use the actual class constructors. Then there is no need to specify type, or use const assertions, and the classes are auto-imported by Visual Studio Code and other code editors.
  • For more information refer to the Autocasting in TypeScript guide topic.

Gradient symbols

CIMSymbol now supports gradient stroke and gradient fill symbol layers. This enhancement brings more options for cartographic styling in your applications, with support for linear, rectangular, and radial gradients. This also brings improved support for some web styles published from ArcGIS Pro - such as the watercolor or glassy orb styles. Check out the updated CIMSymbol lines and polygons sample to see it in action.

gradient fill on lake tahoe

Improved 3D rendering of large feature layers

From versions 4.30 to 4.32 we continuously improved the quality of the features loaded for a given 3D view. Loading a feature layer with many features uses tile-based queries to the feature service hosting the data, and if needed, sub-sampling the data in the visible area. The selection of these tiles and their resolution now follows more closely the visible area of the view, while still applying the same feature limits as before to not overload the browser. This results in more features with a better resolution visible in the view, while still loading roughly the same amount of data.

image

VideoLayer and VideoPlayer

VideoLayer and VideoPlayer are now out of beta. These classes allow you to display video content in your applications. The VideoLayer is used to display video content on the map, while the VideoPlayer is used to control the playback of video content. At version 4.32, you can now zoom and pan the video in the VideoPlayer.

View's readyState

The View class now includes a readyState property, offering more detailed insights into the view's readiness process. This enhancement enables better management of view properties, particularly in scenarios where the view fails to fully load, such as when the basemap cannot load, by providing more specific status information.

Localization changes

  • New locale codes, pt, which defaults to Brazilian Portuguese (pt-br) and zh, which defaults to Simplified Chinese (zh-cn).
  • The locale code for Norwegian has changed from nb to no. The old nb locale is deprecated and will be removed in a future release. For now, it's being aliased to the new code so applications using it will continue to see Norwegian.

To learn more, refer to the Localization guide page.

Added classes, properties, methods, events

Deprecations

Core API deprecations

  • The code for Norwegian locale has changed from nb to no. The old nb code is being aliased so will still work for now, but is deprecated and will be removed in a future release. See the Localization guide page for more information.

Map components deprecations

  • The function setArcgisAssetPath is deprecated and will be removed in version 4.34. To set the asset path for @arcgis/map-components and @arcgis/coding-components, use setAssetPath instead. For example, import setAssetPath from "@arcgis/map-components" instead of "@arcgis/map-components/dist/components". Refer to the Get started with npm page for more information.
  • In HTML, the presence of a boolean attribute means it is true, and its absence means it is false. The properties related to visible elements have been replaced with clearer and more concise names on the following components:
    • arcgis-table-list - For example, replaced visibleElementsCloseButton with showCollapseButton
    • arcgis-utility-network-associations - For example, replaced visibleElementsConnectivityAssociationsSettingsArrowsToggle with showConnectivityAssociationsSettingsArrowsToggle

Breaking changes

Core API breaking changes

The following classes, methods, properties and events have been deprecated for at least 2 releases and have now been removed from the API:

Class/Property/Method/EventAlternate optionVersion deprecated
AreaMeasurement2D.geodesicDistanceThresholdHow area and perimeter are computed depends on the map's spatial reference. See more in the AreaMeasurement2D description.4.29
BasemapLayerList.editingEnabledUse visibleElements.editTitleButton, dragEnabled and selectionMode instead4.29
BasemapLayerList.multipleSelectionEnabledUse selectionMode instead4.29
Bookmarks.editingEnabledUse visibleElements.editBookmarkButton, visibleElements.addBookmarkButton, and dragEnabled instead4.29
Bookmarks.visibleElements.addBookmarkUse visibleElements.addBookmarkButton instead4.29
ButtonMenu.iconClassUse the TableMenuItemConfig's icon property instead4.27
ButtonMenuItem.iconClassUse the TableMenuItemConfig's icon property instead4.27
CreateBoxParameters.geographicUse the CreateBoxParameters.vertexSpace option instead4.29
CreateCylinderParameters.geographicUse the CreateCylinderParameters.vertexSpace option instead4.29
CreateFromGLTFParameters.geographicUse the CreateFromGLTFParameters.vertexSpace option instead4.29
CreatePlaneParameters.geographicUse the CreatePlaneParameters.vertexSpace option instead4.29
CreateSphereParameters.geographicUse the CreateSphereParameters.vertexSpace option instead4.29
DistanceMeasurement2DViewModel.geodesicDistanceThresholdHow distance is computed depends on the map's spatial reference. See more in the DistanceMeasurement2D description.4.29
Editor.allowedWorkflowsUse Editor.visibleElements.createFeaturesSection and Editor.visibleElements.editFeaturesSection instead4.29
EditorViewModel.allowedWorkflowsUse Editor.visibleElements.createFeaturesSection and Editor.visibleElements.editFeaturesSection instead4.29
EditorViewModel.editableItemsUse EditorViewModel.editorItems instead4.29
ElevationProfile.geodesicDistanceThresholdHow distances are computed depends on the map's spatial reference. See more in the ElevationProfile description.4.29
ElevationProfileViewModel.geodesicDistanceThresholdHow distances are computed depends on the map's spatial reference. See more in the ElevationProfileViewModel description.4.29
externalRenderersUse RenderNode instead.4.29
ImageryTileLayer.rasterInfoUse ImageryTileLayer.serviceRasterInfo instead.4.29
LayerList.multipleSelectionEnabledUse selectionMode instead4.29
LayerList.selectionEnabledUse dragEnabled and selectionMode instead4.29
Locate.rotationEnabledUse Track.rotationEnabled instead4.29
Mesh.createFromFilesUse SceneLayer.convertMesh instead4.29
Popup.collapseEnabledUse VisibleElements.collapseButton instead4.29
Popup.spinnerEnabledUse VisibleElements.spinner instead4.29
TableList.multipleSelectionEnabledUse selectionMode instead4.29
TableList.selectionEnabledUse dragEnabled and selectionMode instead4.29
TimeSlider.getPropertiesFromWebMapUse timeUtils.getTimeSliderSettingsFromWebDocument instead.4.29
timeUtils.getPropertiesFromWebMapUse timeUtils.getTimeSliderSettingsFromWebDocument instead.4.30
WCSLayer.rasterInfoUse WCSLayer.serviceRasterInfo instead.4.29

Map components breaking changes

  • The arcgis-map and arcgis-scene components are no longer created with a default basemap. Use the basemap or item-id attribute to set the basemap on the component, or set the Map in JavaScript. Setting basemap="none" is no longer valid; to create a map without a basemap simply avoid setting the basemap attribute. Note that if you don't assign a basemap, the arcgisViewReadyChange event will not fire until the map's properties are updated.
  • The Swipe component drag-label attribute was removed. Use label instead.
  • arcgis-sketch.update was removed. Use arcgis-sketch.triggerUpdate instead.
  • The default position of the Navigation Toggle component was changed to "top-left" to align with the default position of Zoom and Compass components.

Charts components breaking changes

  • Replaced all existing charts components with the arcgis-chart component.
    • HTML tag names need to be updated from arcgis-charts-bar-chart to arcgis-chart.
    • Class references need to be updated from ArcgisChartsBarChart to ArcgisChart.
    • Typings need to be updated from HTMLArcgisChartsBarChartElement to HTMLArcgisChartElement.
    • config property is now model.
  • Changed event payloads for arcgisDataProcessComplete, arcgisLegendItemVisibilityChange, arcgisSeriesColorChange, arcgisSelectionComplete and arcgisAxesMinMaxChange.
  • Renamed actionBarHideActionsProps to hiddenActions for the arcgis-charts-action-bar component.
    • The type ActionBarHideActionsProps is now DefaultChartActions[].
  • Removed the following interfaces: WebChartProbabilityPlotSeries, WebChartProfileGraphSeries, and WebChartProbabilityPlotKinds.
  • Removed orderByFields from WebChartSeriesQuery, use orderOptions instead.
  • Updated setCategory() to setXAxisField() when setting X properties in the bar chart model.

Please refer to the Breaking changes guide topic for a complete list of breaking changes across all releases of the 4.x API.

Bug fixes and enhancements

  • BUG-000110267: Fixed an issue where the Legend widget displayed graduated colors and sizes in descending order instead of the specified ascending order.
  • BUG-000155205: Fixed an issue where the renderer for a MapImageLayer sublayer was not persisted when saving the layer in a web map.
  • BUG-000158844: Fixes incorrect visibility state of WMSLayer inside a group layer during SceneView initialization.
  • BUG-000167787: Fixed an issue in SceneView where camera navigation using the w key gets stuck at horizon, or flips the camera.
  • BUG-000169891: Fixed an issue where the Search dropdown suggestions would not be displayed properly within an Expand widget in drawer mode.
  • BUG-000171677: Fixed an issue where FeatureLayer.applyEdits with high intensity makes MapView slow and leaves residual graphics when zooming in and out.
  • BUG-000171971: Fixed an issue with the label property on the Search widget where it did not affect the default aria-label.
  • BUG-000172167: Fixed an issue with the 'Template' option in Print where it could not be selected using Shift+Tab.
  • BUG-000172607: Fixed an issue where TileLayer was not resampling correctly in version 4.31.
  • BUG-000172940: Fixed a significant performance drop for large point datasets with callouts since 4.30 in SceneView.
  • BUG-000172950: Added a new data-action-id attribute to style Popup and Features widget actions.
  • BUG-000172981: Fixed an issue where the APP-6(D) DictionaryRenderer was not correctly drawing symbols with a dashed frame.
  • BUG-000173056: Fixed an issue with Print where northArrowEnabled was not being honored.
  • BUG-000173073: Fixed an issue with Print where the format was not populated with the print service format choice.
  • BUG-000173088: Fixed an issue where calling MapView.hitTest() on an SVG graphic resulted an error.
  • BUG-000173269: Fixed an issue where WMSLayer was not recognizing "true" and "false" as valid values of the queryable parameter in WMS services.
  • BUG-000173522: Fixed an issue where secure VectorTileLayers were prompting for login when the portal's authMode was set to anonymous.
  • BUG-000173687: Fixed an issue with Print where the title was not populated with the layout title.
  • BUG-000174087: Fixed an issue with AreaMeasurement2D and DistanceMeasurement2D sending too many queries by disabling snapping behavior by default.
  • Esri Community - 1572781: Fixed memory leak caused by calling LayerView.highlight() when LayerView.updating is false.
  • Esri Community - 1575012: Fixed an issue where ImageryLayer.computeHistograms drops the layer's rasterFunction when this parameter is autocasted.
  • Fixed an issue where active action styles were not correctly applied in the LayerList.
  • Fixed an issue with Directions where the locale of zh-HK is requesting driving directions from a route service in zh-CN.
  • ENH-000126767: Added the capability of "Drag to change route" functionality to Directions.
  • ENH-000154864: SceneLayer Pop-up show domain field description when subtypes are defined.
  • ENH-000169598: Enhanced MapImageLayer sublayer popups to honor the order that features are drawn. If orderBy is set on the service, the popups will be ordered accordingly.
  • ENH-000169600: Enhanced MapImageLayer Sublayer.orderBy to configure the feature display order.
  • ENH-000171372: Added default thumbnails for basemaps created from a BasemapStyle.
  • Added rotateClockwise to CIMSymbolAnimationRotation.
  • CIM Symbol animations are no longer in beta.
  • Enhanced printing to now send metadata (credits/attribution) for layers/items to print service.
  • Enhanced printing to support Sublayer.orderBy.
  • Enhanced printing to support DisplayFilters.
  • Enhanced printing to support printing WFSLayer via layer instead of via screenshot, with ArcGIS Server version 11.5.0 or later.
  • Enhanced the Legend to use the calcite design system.
  • Enhanced validation in WebScene.save() and WebScene.saveAs() to be more compliant with the Web Scene Specification standards.
  • If a FeatureTable layer's attachments supportsResize, they will now display as a thumbnail in the AttachmentsColumn.
  • Setting FeatureTable.view is no longer required when rendering the related records UI/UX, even if a MapView are not provided.
  • The rasterFunctionUtils class is out of beta.
  • The createFromGLTF and toBinaryGLTF methods on the Mesh class now correctly convert vertex colors between linear (glTF) and sRGB (Mesh) color spaces. Previously, imported glTF models using vertex colors would appear darker than in other viewers.

Map components enhancements

  • Importing components from /dist is no longer necessary, but is backward compatible. For example, use import "@arcgis/map-components/components/arcgis-map" instead of import "@arcgis/map-components/dist/components/arcgis-map".
  • The componentOnReady() function creates a promise that resolves once a component is fully loaded. This includes the function resolving once all of its child components have finished loading too. For @arcgis/map-components, this can be useful for verifying that the Map component is ready when the basemap attribute is set to "none" because the arcgisViewReadyChange event will not fire.
  • Stylesheet link tags for @arcgis/map-components, @arcgis/coding-components, and the component packages they depend on, such as @esri/calcite-components, are no longer necessary to manually include in vanilla JavaScript apps that consume these components via the CDN, but remains backward compatible.
  • Function setAssetPath has been updated to work with relative paths.
  • @arcgis/map-components now have a stylesheet that must be included in built ESM applications. Refer to the Get started with npm page for more information.

Additional packages

Version 4.32 of the ArcGIS Maps SDK for JavaScript uses ArcGIS Arcade 1.30 (since 4.32).

Version 4.32 of the ArcGIS Maps SDK for JavaScript uses Calcite Design System, version 3.0.3. In your application, we recommend using the same version or any minor version greater than ^3.0.3.

How to access the SDK

  • The API library is available on both CDN and npm, read more at Get started.
  • For supported versions, you can also download both the documentation and the API library. These downloads are typically available 3-4 weeks after release.

Previous releases

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.