Release notes for 4.29

February 2024

Maps SDK components (beta)

At version 4.28, we introduced a brand-new web component library for building web mapping apps with minimal code. This release brings a new charts components library, additional properties and events on existing components, and improvements to the documentation and samples.

Charts components

The @arcgis/charts-components package contains a series of components that can be used to build charts in your ArcGIS Maps SDK for JavaScript applications. When used alongside maps, they can provide a complete data visualization story of your data. Currently, eight different types of chart components are available. Charts can be created directly from a layer item or WebMap, or they can be created manually by referring to a JSON object that follows a common chart specification, which contains the configuration for the chart. The @arcgis/charts-model package can be used to ease the creation and updating of that chart's configuration.

ArcGIS Maps SDK chart components

Components updates

Documentation

This release of components (beta) brings new documentation describing programming patterns for working with web components and how to get started with your preferred frontend setup. More details about components have also been added to the component API reference of each component package, describing whether or not an attribute is reflected on the DOM, that properties of type Object or Array cannot be attributes, and that event names differ depending on your frontend setup.

Component API updates

The map components package deprecated a few properties and events, and introduced new properties, events, and methods across all its components. Here are some of the major changes:

  • The <arcgis-map/> and <arcgis-scene/> components' viewReady event has been renamed to arcgisViewReadyChange.
  • All view and ready events now start with arcgis.
  • Properties from the View have been brought up to the <arcgis-map/> and <arcgis-scene/> components directly.

Visit the component reference for each component to check out the new properties, events, and methods.

Resources

To learn more about the ArcGIS Maps SDK components, check out the following resources:

MapView hitTest improvements

MapView hitTest respects drawing order

When performing a hitTest() on MapView, the drawing order of the features in the layer is now respected. The returned features will adhere to the default drawing order of the data or a specific order if orderBy is specified on the layer. This is a significant improvement from previous versions where the features were displayed based on the order they were returned from the server.

4.284.29
hit-test-order-428 hit-test-order-429

VectorTileLayer hitTest

The hitTest() method on the MapView now returns features belonging to a VectorTileLayer that intersect the hitTest point. This provides access to the attributes of those features, which can be useful for various purposes such as displaying additional information or performing further analysis. See it in action in the new VectorTileLayer hittest sample and Basemap places sample.

vectortilelayer-hittest

Editing updates

Drawing with constraints

New editing constraints allow for more control and efficiency while drawing in 2D and 3D. Enable the tooltips and press Tab to type in values for segment lengths, angles, and elevation. The editing constraints are integrated into the drawing workflows of the Sketch and Editor widgets, as well as when directly using the SketchViewModel.

Try out the enhanced drawing capabilities in the updated sketching sample and see the constraints in action.

Drawing with constraints

Directional Pad widget

A new directional pad (D-Pad) widget aids in controlling the position and rotation of a map by providing controls for eight different directions to move the map. This may be helpful in situations where map navigation is disabled but there is still a need to move the map while making edits, e.g. touch screen editing. Take note that support is currently limited to 2D MapView.

directionalPad

FeatureTable - improved date and time support

Support was added for editing date-only, time-only, and timestamp-offset field types within the FeatureTable widget. In addition to this update, these field types, in addition to date, have been updated to work with Calcite Components' Date Picker, Time Picker, and Input Time Zone.

4.284.29
4.28 DateTime input in FeatureTable 4.29 DateTime input in FeatureTable

Version Management (beta)

The VersionManagement component was created to support branch-versioning workflows. Take a look at ArcGIS Pro: Versioning types to learn more about branch versioning.

This map component provides a user interface that lists the versions for each feature dataset loaded that also supports branch-versioning. It provides the ability to switch between versions and create versions. Additionally, a user can alter a version to update the version owner, name, description, and access type.

version management

3D updates

3D Tiles support

The new IntegratedMesh3DTilesLayer loads integrated mesh data based on a hierarchical data structure defined by the 3D Tiles specification. 3D Tiles are an OGC standard used to visualize large amounts of 3D content, similar to Indexed Scene Layer (I3S) specification scene layers.

Like the existing IntegratedMeshLayer, an IntegratedMesh3DTilesLayer can represent built and natural environments through realistic textures and elevation information and be used in combination with other geospatial content.

The new sample shows how the IntegratedMesh3DTilesLayer can be loaded and used alongside other data layers.

Integrated Mesh 3D Tiles Layer

Custom Render Nodes

Custom render nodes allow WebGL level access to the render pipeline of the SceneView to create custom visualizations and effects. These tasks can range from rendering objects, e.g. animating the moving parts of a windmill, to applying postprocessing effects, like a camera depth of field.

Render nodes are an evolution of the external renderer, and allow even more flexibility. Render nodes can inject custom WebGL code in various stages of the render pipeline to alter their outputs, i.e. by modifying WebGL framebuffer objects using shader programs. They have access to additional inputs such as normal and depth information, and the capability to read the current framebuffer to produce a new, modified one.

Try the custom render nodes samples: Color modification, Depth of field, Crossfade slide transition, Animated Windmills

Custom Render Node

Tiled display support

SceneView now has the capability to render a 2D sub-region of the camera. This enables application developers to scale out of the limitations of a single browser to support large, tiled displays with high resolutions and fluid rendering performance.

The Scalable GIS Renderer project on GitHub uses this to implement a sample application for viewing 3D ArcGIS online web scenes on display walls.

Tiled display support
3x3 tiled display wall at the Visualization and Multimedia Laboratory, University of Zurich, rendering a web scene at 7680x4320 pixels using nine computers

Performance updates

2D Performance

We've improved the performance and load time of FeatureLayers in 2D MapView rendered with a multi-layer CIMSymbol by reducing the number of draw calls.

4.29 performance

Smart Mapping

We made performance updates to how spatial statistics are calculated for the following:

  • Size and outline optimizations by scale are calculated more efficiently. This affects all smart mapping methods where sizeOptimizationEnabled and outlineOptimizationEnabled parameters are available and set to true.

  • The heatmapRendererCreator.createRenderer() calculates density statistics and a resulting HeatmapRenderer 100x faster than it did at version 4.28.

    heatmap performance

Oriented imagery

360 degree imagery visualization

The OrientedImageryViewer widget now supports the display and interaction with 360-degree imagery. This enhancement allows users to navigate and interact with equirectangular JPEG panoramas. To use this feature, add 360-degree JPEG images to the OrientedImageryLayer, and set the orientedImageryType property to "360". Refer the oriented imagery management workflow to see how the layers are created and published.

oriented imagery 360

Editing support for OrientedImageryLayer

Editing capabilities and support for the Editor widget have been enabled for oriented imagery layers. Users can now add, modify and delete features directly on oriented imagery layers using the Editor widget.

Layer updates

OGCFeatureLayer and WFSLayer pagination

OGCFeatureLayer

The OGCFeatureLayer now uses pagination when possible when making requests to the service instead of requesting the features all at once. The layer is performing about a quarter less requests compared to version 4.28, resulting in faster performance.

When MapView renders an OGCFeatureLayer, the screen is divided into "tiles" and requests for features in each tile are sent to the server. These requests specifically limit the number of returned features to maxRecordCount. In some instances, when a layer contains a large number of complex geometries, there may be a performance benefit in reducing the maxRecordCount so that there are more smaller responses and less larger responses.

WFSLayer

Similar to OGCFeatureLayer, WFSLayer is also taking advantage of paginated requests. This should lead to better performance and faster load time of large WFSLayers. Use maxRecordCount to set the maximum number of features that can be returned in a single request, and maxPageCount to specify the number of requests sent.

Custom parameter updates for FeatureLayer and StreamLayer

When new customParameters are applied, StreamLayer refreshes and reconnects to its websocket, resulting in clearing of existing features.

FeatureLayer and OGCFeatureLayer treat updates to customParameters as data change, prompting the querying of features with the updated customParameters.

Saving MediaLayer as portal item

MediaLayer can be saved to a portal item in ArcGIS Online and ArcGIS Enterprise with the save and saveAs methods.

Widget updates

Feature order in the Popup and Features widget

The Popup and Features widgets now display features from multiple layers in the order they are displayed in the map. This means that the features of the topmost layer in the map will appear first, followed by the features of the next layer, and so on. In previous versions, the features were displayed in the order they were returned from the server.

With the MapView hitTest() updates, the Popup and Features widgets also respect the drawing order for individual layers. See the MapView hitTest updates section for more details.

Directions - time zone support

The Directions widget is now time zone aware and has improved arrival time/date behavior. Specifically:

  • Arrival date, time, and time zone offset are now fully internationalized.
  • Arrival date only shown if destination reached on a different day from today.
  • Arrival time zone offset (e.g. GMT-7) only shown if it differs from the view.

Configure ScaleRangeSlider mode

The mode property on ScaleRangeSlider allows you to configure which of the slider thumbs are adjustable:

ModeExample
range range mode
max-scale-only max scale only mode
min-scale-only min scale only mode

Deeper integration with Calcite components

The following widgets have been updated to use Calcite Components internally: BasemapLayerList, BasemapToggle, Fullscreen, Home, LayerList, Locate, NavigationToggle, ScaleBar, TableList, Track, and Zoom.

LayerList

The LayerList widget is now taking advantage of the Calcite Design System, giving users more control over the widget's UI and functionality. The widget now supports the ability to filter layers by their title.

Many new properties were added to the widget to give you more control over the user experience. These include collapsed, dragEnabled, filterPlaceholder, filterText, headingLevel, minDragEnabledItems, minFilterItems, selectionMode and visibilityAppearance.

The selectionEnabled and multipleSelectionEnabled properties have been replaced with dragEnabled and selectionMode that give you more granular control over the editing experience.

ListItemPanel is now a subclass of Widget and has been updated to exclude any padding, giving application developers more control over the spacing inside the ListItemPanel and its content.

Additional visibleElements have been added for the closeButton, collapseButton, filter, flow, heading, and temporaryLayerIndicators. layer list visible elements

BasemapLayerList

The BasemapLayerList widget is now taking advantage of the Calcite Design System, giving users more control over the widget's UI and functionality. The widget now supports the ability to filter base layers and reference layers by their title.

Many new properties were added to the widget to give you more control over the user experience. These include baseFilterText, collapsed, dragEnabled, editingTitle, filterPlaceholder, minFilterItems, referenceFilterText, selectionMode and visibilityAppearance

editingEnabled has been deprecated in favor of visibleElements.editTitleButton, dragEnabled and selectionMode that give you more granular control over the editing experience.

Additional visibleElements have been added for the closeButton, collapseButton, editTitleButton, filter, flow, heading, and temporaryLayerIndicators. basemap layer list visible elements

TableList

The TableList widget is now taking advantage of the Calcite Design System, giving users more control over the widget's UI and functionality. The widget now supports the ability to filter tables by their title.

Many new properties were added to the widget to give you more control over the user experience. These include collapsed, dragEnabled, filterPlaceholder, filterText, minDragEnabledItems, minFilterItems and selectionMode.

selectionEnabled and multipleSelectionEnabled have been replaced with dragEnabled and selectionMode that give you more granular control over the editing experience.

A new ListItemPanel has been added to the table ListItem.

Additional visibleElements have been added for the closeButton, collapseButton, filter, flow, heading, and temporaryTableIndicators. table list visible elements

Filter bookmarks

The Bookmarks widget now provides the ability to filter bookmarks, with the visibleElements.filter property.

Additionally, the widget is now taking advantage of the Calcite Design System, giving users more control over the widget's UI and functionality. The editingEnabled property was deprecated in favor of three different properties that give you more granular control over the editing experience - dragEnabled, visibleElements.addBookmarkButton, and visibleElements.editBookmarkButton. Additional visibleElements have been added for the heading, closeButton, and collapseButton.

bookmarks visible elements

Printing

We enhanced Print widget with the Calcite Design System and a simplified UI. Page setup was renamed to Template, which now contains either: a list of the layout templates from the Print service (same as 4.28 behvaior), or a combined list of portal organization templates (created in the Portal organization settings) and item-based layout templates shared to the organization Layout template group (available in ArcGIS Enterprise 11.3 or newer). The previous Select template button below the Export button was removed. This button was only visible when a custom print service was configured with the organization and organization templates were specified.

Layout templates can be authored in ArcGIS Pro and uploaded as items to ArcGIS Enterprise. When shared to the organization Layout template group (available in ArcGIS Enterprise 11.3 or newer), these item-based layout templates can now be selected in the Print widget UI. This means that new layout templates can be published from ArcGIS Pro and used for printing without having to republish the Print service. This functionality will become available for the ArcGIS Online at a later release.

Additionally, we added initial support for printing highlighted features with FeatureLayer. Highlights will print using the default symbology from the Print service.

BasemapStyle - places and worldview support

The BasemapStyle class now supports places and worldview properties. The places property allows you to enhance the navigation basemap style with POIs from the places service, and worldview allows you to display country boundaries and labels based on a specific view of a country.

basemapStyle with places

Raster updates

CoverageJSON support for ImageryTileLayer

CoverageJSON and OGC community standard format that enables an interactive visualizations of spatiotemporal data such as netCDF within a web browser. CoverageJSON with grid domain and NdArrays can be added via ImageryTileLayer. Once the layer is loaded, the data source is stored in memory.

Raster functions

Clip, grayscale and arithmetic raster functions are added to the client-side raster functions.

Image service inspection operations

ImageryLayer now offers eight new methods that will allow image inspection operations. These methods include findImages(), imageToMap(), imageToMapMultiray(), mapToImage(), measureAreaFromImage(), measureLengthFromImage(), queryBoundary(), and queryGPSInfo().

Utility methods for colorRamps

The colorRamps module provides convenient utility methods that simplify the creation of MultipartColorRamp and AlgorithmicColorRamp. See it in action in the ImageryTileLayer - shaded relief renderer sample.

Utility Network

Editing associations

An API was added for editing utility network Associations. This can be achieved programmatically by generating ServiceEdits through the UtilityNetwork.generateAddAssociations() or UtilityNetwork.generateDeleteAssociations(), then passing the ServiceEdits to the FeatureService.applyEdits() method to add and remove associations.

Snapping to SubtypeGroupLayer

Editor added support for utility network rule-based snapping with the SubtypeGroupLayer. Now, the snapping rules configured in a utility network will be respected when creating or updating features while snapping is enabled, and the utility network is loaded on the map. This was previously only supported for FeatureLayers, but as of this release, this feature now includes SubtypeGroupLayer. It is important to note that the UtilityNetwork must be loaded for Editor to recognize the utility network snapping rules.

The SnappingControls widget displays the SubtypeGroupLayer and its SubtypeSublayers in a hierarchy similar to the GroupLayer and its sublayers. The sublayers can be toggled individually for snapping, or the parent SubtypeGroupLayer can toggle snapping for all the sublayers.

The SubtypeSublayer was added as a valid FeatureSnappingLayerSource, therefore, it requires the sublayers to be set in SnappingOptions.featureSources when programmatically configuring the layers that are enabled for snapping in Sketch and Editor. The following code snippet demonstrates an example of this workflow.

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
const sublayerSources = subtypeGroupLayer.sublayers.items.map((sublayer) => {
  return { layer: sublayer, enabled: true }
});

const editor = new Editor({
  view,
  snappingOptions: {
    enabled: true,
    featureSources: sublayerSources
  }
});

SubtypeGroupLayer Arcade support

SubtypeGroupLayer added support for Arcade, and can now be utilized when configuring popups, renderers, and labels.

Run ES module samples in the browser

Since 4.26, a subset of samples (11) have been available to show how to use ES modules (ESM) - using @arcgis/core and Vite.js. Originally these samples were available as downloads for local development. This process has been replaced with projects that can be run live in the browser using the StackBlitz online development environment without the need to download and install locally. To try it out, search for samples with the ESM tag, and click the 'Open ESM sample (StackBlitz)' button.

Added classes, properties, methods, events

Deprecations

  • The AMD npm package arcgis-js-api is deprecated at version 4.29. This is related to dropping local build support for legacy Dojo 1 and RequireJS. Use @arcgis/core ES modules or plan on moving to components (beta) instead.
  • The npm package @arcgis/cli is deprecated at version 4.29. Plan on moving to components (beta) and Calcite.
  • The esri-loader library is deprecated at version 4.29. Use @arcgis/core ES modules or plan on moving to components (beta) instead.
  • For local builds, Webpack versions prior to 5.84.0 are deprecated at 4.27. This is related to bug fixes in Webpack.
  • Support for printing with a Printing service published from ArcMap is deprecated at version 4.29. We recommend using ArcGIS Pro to publish Printing services.

Breaking changes

  • At version 4.29, only WebGL2-enabled browsers are supported for both 2D and 3D. See the System Requirements for more information.

  • For local builds, using Webpack versions prior to 5.84.0 is not recommended at 4.29. This is related to bug fixes in Webpack.

  • The hitTest() method on the MapView no longer includes layerId and layerIndex in the attributes of a returned graphic for VectorTileLayer. To obtain this information, use the graphic's origin property instead. See the VectorTileLayer hitTest section for more info.

  • The layer property of a graphic returned in the hit test result for VectorTileLayer is now null. Use the origin.layer property to access which VectorTileLayer the graphic originates from.

  • The @arcgis/common-components (beta) package was removed, which included the arcgis-api-key and arcgis-identity components.

  • The following components were removed from the @arcgis/map-components package: FeatureTable, FullScreen, Swipe, TableList and ValuePicker.

  • At version 4.29, ListItemPanels do not include any padding.

  • FeatureLayer can no longer be labelled with labelExpression, which is documented as only working with MapImageLayer. Use labelExpressionInfo instead.

  • The WFSLayer now uses pagination when fetching features from the service, meaning that multiple requests will be sent to retrieve features instead of just one. To match the previous behavior, set maxPageCount: 1 and increase the value of maxRecordCount.

  • The Editor's view model no longer creates a single instance of FeatureFormViewModel and SketchViewModel. Prior to this release, if given an instance of EditorViewModel, its featureFormViewModel and sketchViewModel properties always referred to the same single instance of their respective view model class for the entirety of the EditorViewModel lifetime. This meant that certain operations using these view models, could run once and remain effective for all subsequent editing workflows, (e.g. setting properties or installing event listeners on them). Beginning with version 4.29, new instances of FeatureFormViewModel and SketchViewModel are used for each editing workflow. When there isn't an active edit workflow, the FeatureFormViewModel and SketchViewModel properties are null. When an editing workflow begins, these properties will have values, but any changes or event handlers made to them are only applicable for the duration of that workflow.

  • The MeshGeoreferencedRelativeVertexSpace has been removed. Use MeshGeoreferencedVertexSpace with an origin instead. If no origin is specified, the georeferenced vertex space will be considered absolute.

  • Meshes created via create functions, such as createSphere, are now always created with a relative vertex space where mesh coordinates will be offsets to the location at which the mesh is created. Before, mesh coordinates would always be absolute. If the vertex space type is not provided as an option to the create function, then the vertex space is chosen based on the spatial reference. If it is geographic or WebMercator, MeshLocalVertexSpace is used and MeshGeoreferencedVertexSpace otherwise.

  • Mesh centerAt will now center meshes with respect to the origin of the vertex space of the mesh. Before, creating a sphere using createSphere at a location, followed by a call to centerAt with the same location as an argument, would move the sphere such that the sphere center aligns with the location. Now calling centerAt with the same location at which the mesh was created will not have any effect. Use offset or adjust the centerAt location by mesh.extent.height/2.

  • The FetchPopupFeaturesResult type definition in the Popup class had the following properties removed from the API at this release:

    PropertyReplacement
    FetchPopupFeaturesResult.clientOnlyGraphicsFetchPopupFeaturesResult.allGraphicsPromise
    FetchPopupFeaturesResult.promisesPerLayerViewFetchPopupFeaturesResult.allGraphicsPromise
    FetchPopupFeaturesPromisesPerLayerViewN/A

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
CreateWorkflowCreateFeaturesWorkflow4.23
CreateWorkflowDataCreateFeaturesWorkflowData4.23
Editor.startCreateWorkflowAtFeatureCreationEditor.startCreateFeaturesWorkflowAtFeatureCreation4.23
Editor.startCreateWorkflowAtFeatureEditEditor.startCreateFeaturesWorkflowAtFeatureEdit4.23
Editor.startCreateWorkflowAtFeatureTypeSelectionEditor.startCreateFeaturesWorkflowAtFeatureTypeSelection4.23
Editor.useDeprecatedCreateWorkflowNo longer applicable4.23
EditorViewModel.startCreateWorkflowAtFeatureCreationEditorViewModel.startCreateFeaturesWorkflowAtFeatureCreation4.23
EditorViewModel.startCreateWorkflowAtFeatureEditEditorViewModel.startCreateFeaturesWorkflowAtFeatureEdit4.23
EditorViewModel.startCreateWorkflowAtFeatureTypeSelectionEditorViewModel.startCreateFeaturesWorkflowAtFeatureTypeSelection4.23
FeatureFormViewModel.inputFieldsFeatureFormViewModel.inputs4.27
FeatureTable.clearHighlights()call removeAll from FeatureTable.highlightIds4.25
FeatureTableViewModel.clearHighlights()call removeAll from FeatureTableViewModel.highlightIds4.25
FieldElement.editableFieldElement.editableExpression4.26
InputFieldFieldInput4.27
InputFieldGroupGroupInput4.27
Locate.useHeadingEnabledNo longer applicable4.27
Track.useHeadingEnabledTrack.rotationEnabled4.27

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-000125352: Fixed an issue where Directions widget did not display time in the same format as the user's time zone.
  • BUG-000129596: Improved the clipping of point symbols at large scales when a size visual variable is defined with real world size.
  • BUG-000149236: Fixed an issue where FeatureLayer features flash when zooming in or out while applyEdits is called.
  • BUG-000150617: Fixed an issue where printing some layers caused them to shift in the printed output.
  • BUG-000152909: Fixed an issue where polyline graphics would disappear at certain zoom levels.
  • BUG-000156355: Fixed an issue where a WFSLayer was not loading when the service's outputFormat was defined as geo+json.
  • BUG-000156644: Fixed an issue where the FeatureTable widget timed out with too many fields/columns.
  • BUG-000156993: Fixed an issue where the Editor widget allowed batch creation of features without providing values for required fields, instead allowing null values for all but last created feature.
  • BUG-000157002: Fixed an issue where a CSVLayer could not be printed if the .csv file was uploaded as an item to a portal.
  • BUG-000160409: Fixed an issue where OGCFeatureLayer popups were not appearing when displaying a field name that contains a . (period).
  • BUG-000162584: Fixed an issue where a feature could not be created if a group containing a required field is conditionally hidden within the Editor's form.
  • BUG-000162717: Fixed an issue where VectorTileLayer was not displaying labels past their data max LOD.
  • BUG-000162879: Fixed an issue where the UtilityNetworkTrace discard button would not remove the error result of a failed trace.
  • BUG-000163592: Fixed an issue with typings where the FeatureService.applyEdits method parameters were not included in the TypeScript definitions.
  • BUG-000163612: Fixed an issue where Directions widget did not properly handle specific repetitive coordinates.
  • BUG-000163942: Fixed an issue in Editor where snapping was not available for non-utility network layers in a WebMap containing a utility network.
  • BUG-000163964: Fixed an issue where text symbols in a DictionaryRenderer would sometimes get cut off at tile boundaries.
  • BUG-000164087: Fixed an issue where transparency on a GroupLayer was not applied to the print-out.
  • BUG-000164240: Fixed an issue where the HeatmapColorStop.clone() method did not create a deep clone.
  • BUG-000164398: Fixed an issue where the cluster count doubles momentarily when the FeatureLayer.refresh method is called after FeatureLayer.applyEdits.
  • BUG-000164515: Fixed an issue where enabling snapping caused login prompts for secured services accessed through api keys.
  • BUG-000164535: Fixed an issue where fields with a field name containing the word "shape" would not appear in Popup and FeatureForm.
  • BUG-000165545: Fixed an issue where adding two MapView instances using HeatmapRenderer to the same application would cause both instances to go blank.
  • BUG-000165634: Fixed an issue where HeatmapRenderer was throwing errors when the layer was removed from the map while it was still loading.
  • Esri Community - 1296096: Fixed an issue where explicitly required long string attribute data was not displayed in popups due to a character limitation in SceneView.
  • Esri Community - 1321799: Fixed an issue where lines and outlines appeared pixelated in SceneView.
  • Esri Community - 1339508: Fixed an issue where a CIMSymbol with the marker placement type CIMMarkerPlacementOnLine was not rendering when relativeTo was set to "SegmentMidpoint".
  • Esri Community - 1344507: Fixed an issue where ShadowCast widget's shadow analysis did not clear after the widget instance was distroyed.
  • Esri Community - 1347574: Fixed an issue where right-click did not not trigger the view.on("click") event during an active draw operation in Sketch.
  • Esri Community - 1350675: Fixed an issue with the Compass widget and FullScreen widget that wasn't allowing the icon to be customized.
  • Esri Community - 1351209: Fixed an issue with the ElevationProfile widget where the chart tooltip text was not legible in the dark theme.
  • Esri Community - 1373333: Fixed an issue where toggling FeatureLayer.labelsVisible rendered the same label multiple times in SceneView.
  • Esri Community - 1378372: Fixed an issue where certain symbols were hard to hit via MapView.hitTest().
  • GitHub - 268: Fixed an issue where MapView.goTo was not honoring its abort signal.
  • Fixed a "Value cannot be null.\r\nParameter name: s" contingent values error in Editor when loading data where double quotes are included in the text domain strings.
  • Fixed an issue when routing with a startTime value of "now" was not being properly handled.
  • Fixed an issue when setting the noValueLabel on a field element combo-box input did not take effect.
  • Fixed an issue where clusters overlapped each other when they should have merged.
  • Fixed an issue where MapView.hitTest() was returning an empty graphic for ImageryLayer. No result is returned now.
  • Fixed an issue where some vector tile layer requests were being incorrectly cancelled when using Angular 16 and 17.
  • Fixed an issue where the dropdown for grouped actions was not anchored to the Popup when zooming in/out of the view.
  • Fixed an issue where FeatureTable.activeSortOrders returned null as a direction included with asc and desc. It now returns an empty array if no direction is set.
  • ENH-000102840: Added support for cimConversionUtils.convertToCIMSymbol(), which allows users to convert a simple symbol to CIMSymbol.
  • ENH-000120327: Added support for creating a client-side ImageryTileLayer from pixelData by setting the source property.
  • ENH-000129194: Enhanced the MapView hitTest(), Popup widget, and Features widget to respect layer drawing order. See the MapView hitTest updates section for more details.
  • ENH-000129411: Added hitTest support to return feature attributes for VectorTileLayer. See the VectorTileLayer hittest improvements section for more info.
  • ENH-000156986: Added support for using the $view.scale profile variable in primitive override expressions for graphics in with GraphicLayer.
  • ENH-000157271: Updated the default ordering of features in the Popup and Features widget to show features in layer order starting with the topmost layer in the map.
  • ENH-000163021: Added a code snippet that shows how to instantiate a UtilityNetwork instance using the layerUrl property.
  • ENH-000163229: When creating a layer using the fromPortalItem() method, custom parameters set up with the portal item are now respected.
  • ENH-000163340: Added support for historicMoment to IdentifyParameters.
  • Added a new getAllHeaders() method to esri/request to retrieve all headers sent from the server.
  • Added a new no-prompt Portal.authMode to control whether to display a sign-in prompt after checking if the user is already signed in.
  • Added an Accessibility reference page, including keyboard navigation support.
  • Added new sketch-create and sketch-update events for Editor to listen for when drawing or updating features.
  • Added new VisibleElements to the Popup: actionBar, collapseButton, heading, spinner
  • Added support for an asynchronous updateBasemapsCallback function in PortalBasemapsSource.
  • Added support for GroupLayer within the leadingLayers and trailingLayers of the Swipe widget.
  • Added support for OrientedImageryLayer in Editor.
  • Added support for resources with relative paths in an OGCFeatureLayer.
  • Added support for SubtypeGroupLayer in VersionManagementService.changeVersion().
  • Added the flow VisibleElement to the Features widget to control whether to display the widget in its default Calcite flow or place the widget in a custom flow component.
  • Added WMSLayer sublayer support in the Legend layerInfos property.
  • Enhanced Editor so that the order in which Editor.layerInfos are assigned will be respected in the feature templates layer order, and the order of the layers when selecting multiple features.
  • FeatureForm added a warning message for ranged dates where only the min or max values are configured, but not both.
  • When loading a web-tier authenticated portal, the request trustedServers property no longer needs to be set with the portal URL to prompt for credentials.
  • The dataUpdating property on FeatureLayerView, CSVLayerView, GeoJSONLayerView, OGCFeatureLayerView and WFSLayerView is supported in 3D SceneView.
  • The VoxelLayer now supports visibility range. The minScale and maxScale properties control the minimum and maximum scale at which the layer is visible in the view.
  • 3D Basemap functionality is now out of beta, with five new styles available to add by unique basemap id.
  • The SceneLayer now supports the customParameters property, which comprises a list of parameters appended to the URL of all fetched resources and service requests related to the layer.

Additional packages

Version 4.29 of the ArcGIS Maps SDK for JavaScript uses ArcGIS Arcade 1.26 (since 4.29).

Version 4.29 of the ArcGIS Maps SDK for JavaScript uses Calcite Design System, version 2.4.0. In your application, we recommend using the same version or any minor version greater than ^2.4.0. For example, we're currently using version 2.5.1 in these samples.

How to access the SDK

  • The API library is available on both CDN and npm, Read more at Install and set up.
  • 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.