The drawing system has been overhauled to enhance both new and existing 2D workflows, introducing true curve geometry support and a segment-focused drawing experience.
Segment-based drawing
Users can now switch between drawing tools (line, freehand, and new curve tools) while actively drawing geometry segments on a polyline or polygon. This improvement allows for finer-grained control when digitizing geometries. This is integrated natively into the Sketch and Editor component user interfaces.
Curve support
At this release, we added support for drawing, editing, querying, and snapping with true curve segments. A user will now be able to construct geometries containing curve segments when drawing. New curve tools include Bezier curve, Arc segment, and Endpoint arc segment tools, enabling the construction of Bezier and circular arcs.
Additionally, it is now possible to convert an existing straight-line segment to circular arcs by holding Shift and dragging the midpoint vertex manipulator of the straight-line segment.
The new curve drawing tools are integrated natively into the Sketch and Editor components.
Editor snapping and true curve support
Update and create workflows with true curves
Editor now natively supports adding and updating geometries with true curves. For editing workflows, support is dependent on the feature service capabilities. The drawing toolbar will display the segment tools while drawing a polyline or polygon, including the new curve tools.
Update: If the feature service supports true curves, Editor fetches and allows modification of curve geometries. If the service does not support updating true curves, then geometry updates will be turned off for the true curve geometries.
Create: Regardless of whether the feature service supports true curves or not, Editor will provide the curve drawing tools to construct curve geometries. If the service doesn’t support the drawn curve type, segments are densified upon submission, with a warning provided to the user.
Snapping with true curves
The snapping engine now supports true curves, allowing snapping to any point along a curve segment. Snapping behavior depends on feature service support; unsupported curve types revert to densified geometry snapping.
Z Snapping support (2D)
Editor now supports Z snapping in 2D. When snapping is enabled, the z-value (elevation) of the feature being created or edited is preserved from the vertex or point it snaps to. In the example below, a Street Light point feature is added along a Low Voltage line in a utility network. Snapping to different vertices updates the point’s z-value shown in the tooltip to match the snapped vertex. This is supported in both create and update workflows and is available starting in patch 5.0.16.
FeatureTable enhancements
Contingent Attribute Value Constraints
The FeatureTable component and widget now respect contingent attribute value constraints during cell editing, with no additional configuration required. When contingent values are configured in the data, the FeatureTable automatically presents the recommended values while editing. Automatic saving is disabled so that invalid entries are flagged in the UI, giving users a chance to correct them before saving.
Disable auto-save behavior
It is now possible to disable automatic saving while editing in the FeatureTable component and widget. By default, any updates made to individual cell values are saved without needing any manual interaction to save. This behavior is disabled by default for data that contains contingent attribute values. Applications can be configured to disable automatic saving regardless of the dataset being edited. This is handled by setting the autoSaveDisabled to true. The FeatureTable will display a UI to proceed with saving edits.
Improved attachment viewing experience
The default attachment viewing experience in the FeatureTable component and widget has been enhanced to provide richer file details, including name, type, size, and keywords. Image attachments can now be viewed directly within the table and expanded to full-page view without opening a new browser tab. This improvement streamlines review and editing workflows while minimizing context switching.
Syncing selection via SelectionManager (beta)
The SelectionManager (currently in beta), manages feature selection across layers and tables within a MapView or SceneView to help manage feature selection. It can be configured to listen for edits on selectable layers and automatically update selections in response, providing a centralized way to manage selection state within a view.
To support this workflow, new properties were added to the Editor and FeatureTable components and widgets. The syncViewSelection property allows a component to participate in the view’s shared selection state by syncing with the view’s selectionManager. When syncViewSelection is set to true, the component responds to selection changes managed by the view. This enables selections to remain consistent across different parts of an application that rely on the view’s selection state, without requiring direct coordination between individual components. The video below demonstrates this.
Emissive materials make symbols produce light, enabling realistic nighttime scenes as well as visual emphasis and improved legibility. The emissive strength of individual symbols controls how much light they emit and can be used as an additional visual aspect to communicate information.
Any volumetric symbol can be turned into a light-emitting element by using source: "color" — well-suited for highlighting selected features, routes, or categories that should stand out in a scene. For realistic nighttime rendering, set source: "emissive" to display emissive information authored directly into 3D models (such as illuminated signage or windows) so they render naturally.
An optional global glow effect can be enabled to apply a more stylized look across the scene. Without glow, emissive elements display with a bright, natural appearance.
We are introducing the GaussianSplatLayer, a new 3D layer type that provides photorealistic visualization of complex built and natural environments in a 3D Scene. It delivers high-detail rendering for thin and intricate structures such as powerlines, railings, antennas, and dense vegetation, along with smooth transparency for materials like glass and other semi-translucent surfaces. These enhancements support advanced workflows like inspection, vegetation analysis, and high-fidelity presentation workflows.
GaussianSplatLayer integrates seamlessly with existing 3D and 2D content, enhancing overall scene realism. A multi-resolution level-of-detail system maintains smooth navigation by drawing higher detail only where it matters most. For data preparation, refer to the GaussianSplatLayer documentation. The layer also supports the ESRI_CRS vendor extension for 3D Tiles, ensuring correct visualization of projected datasets in both local and global scenes.
A new sample is available — jump in and experience how simple it is to add and visualize a Gaussian splat layer in a scene.
AI components (beta)
The new AI components (beta) package contains a set of components that enables developers to build agentic mapping web applications. It includes the Assistant component, which provides a chat interface that allows users to interact with a web map and its data using natural language.
This package also includes the following agents that can be registered with the Assistant component:
By making components consistent across the SDK, their behavior will also more closely mimic what is expected from a standard web component.
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.
The following CSS variable was added to the Map components package:
--arcgis-view-color-focus: adjusts the focus color on the Map, Scene, Link Chart, or Video components.
Legacy components
The following components were added at this release, but are designated as legacy, which means that they still rely on an underlying widget as part of the migration to native web components. Fully native replacements for these components are in development, and will be released when they reach feature parity. At that point, the legacy component will be deprecated, and development should use the native component.
Elevation Profile, and
Shadow Cast components have been refactored to utilize the
ElevationProfileAnalysis and the
ShadowCastAnalysis. Similarly,
Volume Measurement (beta) was created as a new component on top of
VolumeMeasurementAnalysis.
This means the underlying logic of all these components is managed by an analysis object, while the component handles
the UI and user interactions.
When you connect an analysis-based component to a Map or
Scene, it automatically creates an analysis object and adds it to the
view.analyses collection. The analysis is then automatically removed when the component is destroyed.
The new Volume Measurement component is now available in beta. It provides a declarative way to add volume measurement capabilities to web scenes using Cut & Fill and Stockpile modes. To use the Volume Measurement component, add it to the Scene component:
The Oriented Imagery Viewer component (and widget) interface has been redesigned to deliver a more streamlined and intuitive user experience.
Key tools with overlapping or related functionality are now grouped under consolidated parent toggles, reducing visual clutter and providing a cleaner, more organized layout.
A new Search Tools group has been introduced to the component, providing three options for accessing imagery from an oriented imagery layer:
Explore Images: Performs a best image search based on the user-selected map location.
Explore Images 3D: Extends the explore images workflow by incorporating height-based filtering using the feature’s Z values.
Display Images: Allows users to select an oriented imagery feature directly on the map or scene to view its associated image.
Image caching can now be enabled during directional and sequential navigation, improving overall viewer performance and reducing image load times.
Time Info filtering is now supported when querying for images, enabling retrieval based on temporal constraints for more precise and context-aware results.
Attribution updates
Attribution displays pipe (|) separators between items instead of commas and was enhanced to avoid duplication of attribution items.
Popup enhancements
Default Popup component
The Popup component (beta) can now be used as the default popup for the Map, Scene, and Link Chart components by setting the popup-component-enabled attribute. This enables the popup component to open automatically (instead of the widget) when features are selected in the view component.
When the popup component is enabled, the new popupElement property on the Map, Scene, and Link Chart components can be used to reference the default popup component to set properties such as docking options.
When viewing attachments with AttachmentsContent in the Popup component, a refreshed design has been applied to improve usability and accessibility by updating it to use Calcite Design System.
Edit waypoints within Directions component
The Directions component now allows users to fine-tune routes with waypoints in a familiar “drag-and-drop” experience. Waypoints are locations that routes must travel through but do not need to stop at.
Selecting the Edit route button now allows you to add, move, and remove waypoints. To add a new waypoint, first hover the cursor over the route and select the desired point. Then select and drag the point to move and place the waypoint.
Printing UI updates and dynamic legend items
We enhanced printing to deliver a better user experience with several new capabilities. First, the Print component now allows users to choose scalebar units directly in the UI.
We also added a configurable property that automatically populates the Author field when the user is signed in to a portal.
Finally, we added support for Dynamic legend items, which requires a minimum of an 11.4 print service. When enabled, only currently visible features appear in the printed legend. When disabled, all features appear in the printed legend. Because ArcGIS print services have dynamic‑legend enabled by default for all layout templates, this option lets users turn it off for templates that support it, which will print all features in the legend, whether visible or not. See the image below for an example.
Dynamic legend enabled
Dynamic legend disabled
BuildingFilter with BuildingSceneLayer
As of this release, the Building Explorer component no longer wraps the Building Explorer widget. As a result, the associated BuildingExplorerViewModel, along with its subclasses BuildingLevel and BuildingPhase, have been deprecated. The component’s public API has been enhanced with two new events, arcgisBuildingLevelChange and arcgisBuildingPhaseChange, which are emitted when the selected building level or construction phase changes.
Filtering features is an essential capability in BIM-related workflows. The BuildingSceneLayer supports attribute-based filtering through the BuildingFilter class, which defines the expressions and visual modes that are added to the BuildingSceneLayer#filters to show or hide specific features. Filtering is based on modelNames that are common to all BuildingSceneLayer. To filter a layer by level or construction phase, use bldgLevel, createdPhase, and demolishedPhase as the corresponding modelNames in #filterExpression.
Explore this new sample to see BuildingFilter in use.
Charts components
Class break support for heat charts
Class breaks can now be defined for heat charts to visualize data in distinct ranges. Use heatRulesType from the heat chart model to switch between renderer and gradient legend types.
When using class breaks, an extra null value marker is added to represent the empty cells.
Customization can be done via the chartRenderer property from the heat chart model.
Common components
The new Common components package contains a set of shared UI components used by some of the higher-level components in the JavaScript Maps SDK. It includes the Slider, Histogram, and Ticks components.
As of 5.0, we provide CDN versions for specific patches in MAJOR.MINOR.PATCH format, for example https://js.arcgis.com/5.0.0/. This URL will also be used as the default assetsPath for CDN-hosted assets when working with npm and local builds.
The MAJOR.MINOR syntax for 5+ is an alias to the latest patch.
Use this syntax if you always want the latest CDN version, even though it might impact your application in unintended ways.
TypeScript import changes
The __esri namespace is no longer supported for importing types and will be removed at 6.0. Use individual ESM imports to directly import types from their respective module files instead.
A codemod has been provided that automatically refactors existing __esri usages to the recommended ESM imports. Please refer to the documentation.
Auto-reposition polygon labels
We enhanced polygon labeling by enhancing how labels are automatically repositioned when a polygon’s centroid is partially or fully out of view.
This results in more labels appearing fully visible, and even partial labels can now be placed in areas where labels previously could not be shown. In the image below, compare the county labels when zoomed-in close in Alaska. Most of the county areas are outside the view of the map, but now more labels can display.
4.34
5.0
Improved Transparent Ground Rendering
We improved the rendering of transparent terrain for the Google Photorealistic 3D Basemap and the new label and icon
visibility modes. All transparent data, including terrain, is now rendered with the same order-independent
transparency algorithm. This algorithm produces a close approximation of the physically correct visualization.
Icons and labels behind transparent geometries now behave in the same way, no matter if they are behind terrain or
other data. For example, in mountainous areas it becomes easier to understand the spatial relationship of hills,
valleys, and 3D data on the ground.
The Google integrated mesh ground layer can also be visualized with partial opacity, and is also drawn with
order-independent transparency.
New ShadowCastAnalysis
Shadow cast is now available as an analysis object, replacing the deprecated programmatic ShadowCastViewModel pattern and aligning with the SDK’s analysis framework.
The analysis supports three visualization modes, as well as measuring shadow duration at the cursor location via view.whenAnalysisView() and getDurationAtScreen(). You can use the analysis and build custom panels, workflows, controls, and integrations while following the same analysis lifecycle as other analysis types.
minDurationOptions, totalDurationOptions, and discreteOptions
The corresponding Shadow Cast component provides a user interface to the analysis.
Improved occlusion handling for 3D labels and icons
This release introduces enhanced control over the visibility of labels and icons in 3D scenes with the new occludedVisibility property. Previously, labels and icons would disappear when hidden by buildings or terrain, causing users to lose context during navigation. Labels and icons now remain recognizable even when partially or fully occluded, providing better context, orientation, and spatial awareness.
When using either the adaptive or visible mode, occluded parts are rendered semi-opaque during navigation to provide depth cues, while labels become fully opaque when the view is idle for optimal readability. The new occludedVisibility property is available for both IconSymbol3DLayer and TextSymbol3DLayer, supporting three modes:
Adaptive (default): Labels and icons that are behind other objects can still be rendered depending on how far behind an object they are. This automatically provides a good balance between depth cues, readability, and reduced distractions while navigating the scene. This mode is used in the 3D Basemaps.
Visible: Labels and icons behind other objects are always rendered.
Hidden: Labels and icons behind other objects are not rendered. This matches behavior of previous versions of the SDK.
Try out the new occlusion handling in the Basemap Gallery sample, featuring New York with the Topographic 3D Basemap, and experience adaptive labels and icons as you navigate the city. Additionally, explore the extended Point styles for cities sample, now showcasing all three occludedVisibility modes, to see how each setting affects label and icon visibility in the scene.
VolumeMeasurementAnalysis enhancements
VolumeMeasurementAnalysis was introduced as
beta in 4.34,
allowing you to interactively measure and visualize ground surface volumes in 3D web scenes using Cut & Fill and Stockpile measurements.
With this release, we improved the consistency of the measurement experience and updated the API.
Notable improvements
Improved the heuristics for accuracy estimation
Added supporting area and perimeter measurements to the input polygon
ElevationProfileAnalysis supports creating custom elevation profile workflows and was introduced as beta in version 4.34. It enables generating profiles from a drawn line or from an existing feature in the view using the new setGeometryFromFeature() method. As of this release, the API is considered complete and stable.
The new Google Photorealistic 3D basemaps provide a three-dimensional mesh textured with high-resolution imagery. See
3D Basemaps
for more information. In support of the new Photorealistic 3D basemaps, various related enhancements and fixes have
been made to the SDK, including performance improvements for 3D Tiles integrated meshes and improved rendering of
transparent ground.
FlowRenderer - continuous flow in 2D
The FlowRenderer now supports continuous flow in 2D, resulting in a smoother experience when zooming, panning, or changing the time extent.
Graphic’s origin
The Graphic.origin property is now populated when working with various layer types, providing contextual information about where a graphic originates from. For example, graphic’s origin is populated for graphics returned from MapView.hitTest or queryFeatures() on a layer or layer view instance. Use the Graphic.origin property in place of the removed Graphic.layer property.
Added a new basemap session API to support the session usage model for basemap styles, providing more control over how basemap requests are authenticated in applications. This is only supported for Location Platform.
importconfigfrom"@arcgis/core/config";
config.apiKey="YOUR_API_KEY";
config.sessions= {
basemap: {
enabled: true,
styleFamily: "arcgis", // only access styles in the "arcgis" family
autoRefresh: true, // automatically generate new token at end of duration
A new guide page Mapping application layouts introduces recommended patterns for structuring web mapping applications. The guide covers layout responsibilities and best practices for building scalable applications using the Calcite Design System and JavaScript Maps SDK.
Three new layout-focused samples are now available under layout applications.
Get started with @arcgis/create
The Get started guide has been updated with guidance on creating an app with npm using the @arcgis/create CLI tool and starter templates from Esri/jsapi-resources. Now, you can create a ready-to-use application with one simple command:
The majority of the samples have been updated to use components to reflect the recommended usage patterns and best practices. The samples have been refreshed with a new search experience and UI design, allowing you to view the description, sample code, and live sample within the same page. This update also provides a better experience for users on mobile devices.
Improved types
With the TypeScript import changes, the TypeScript definitions now include type parameters, providing stronger type checking and an improved developer experience. This update provides more detailed and accurate information about types, parameters, and return values. Due to the improved types, some existing code may require adjustments to comply with the updated type definitions. See the added types in the SDK changes for more details.
Documentation for previous versions
Starting with version 4.34, we plan to make previous versions of the documentation easily available for supported versions of the SDK. These will be hosted on our website, allowing you to access the specific documentation you need for your project instead of having to download the SDK locally. The documentation for version 4.34 is now available.
position - removed field - deprecated since 4.34, use slot instead.
visibleElementsConnectivityAssociationsSettingsArrowsToggle - removed field - deprecated since 4.32, showConnectivityAssociationsSettingsArrowsToggle instead.
visibleElementsConnectivityAssociationsSettingsCapSelect - removed field - deprecated since 4.32, use showConnectivityAssociationsSettingsCapSelect instead.
visibleElementsConnectivityAssociationsSettingsColorPicker - removed field - deprecated since 4.32, use hideConnectivityAssociationsSettingsColorPicker instead.
visibleElementsConnectivityAssociationsSettingsStylePicker - removed field - deprecated since 4.32, use hideConnectivityAssociationsSettingsStylePicker instead.
visibleElementsConnectivityAssociationsSettingsWidthInput - removed field - deprecated since 4.32, use hideConnectivityAssociationsSettingsWidthInput instead.
visibleElementsMaxAllowableAssociationsSlider - removed field - deprecated since 4.32, use showMaxAllowableAssociationsSlider instead.
visibleElementsStructuralAttachmentAssociationsSettingsArrowsToggle - removed field - deprecated since 4.32, use showStructuralAttachmentAssociationsSettingsArrowsToggle instead.
visibleElementsStructuralAttachmentAssociationsSettingsCapSelect - removed field - deprecated since 4.32, use showStructuralAttachmentAssociationsSettingsCapSelect instead.
visibleElementsStructuralAttachmentAssociationsSettingsColorPicker - removed field - deprecated since 4.32, use hideStructuralAttachmentAssociationsSettingsColorPicker instead.
visibleElementsStructuralAttachmentAssociationsSettingsStylePicker - removed field - deprecated since 4.32, use hideStructuralAttachmentAssociationsSettingsStylePicker instead.
visibleElementsStructuralAttachmentAssociationsSettingsWidthInput - removed field - deprecated since 4.32, use hideStructuralAttachmentAssociationsSettingsWidthInput instead.
getScript() - removed method - deprecated Deprecated since 4.30. Use script property instead.
getTestResult() - removed method
Core API changes
Importing JS Maps SDK modules using require() is deprecated since version 5.0 and may be removed at version 6.0. $arcgis.import() is the preferred way to import modules in your HTML applications
The __esri namespace is no longer supported for importing types and will be removed at 6.0. Use individual ESM imports to directly import types from their respective module files instead. See TypeScript import changes for more information.
Attachments - deprecated class since version 5.0. Use the Popup and Editor components to view and edit attachments instead. For information on widget deprecation, read about Esri’s move to web components.
Attribution - deprecated class since version 5.0. As of 5.0, attribution is handled automatically by the Map, Scene, and Link Chart components, with properties for extracting attribution items, hiding the attribution, as well as setting dark and light mode for the attribution. For information on widget deprecation, read about Esri’s move to web components.
AttributionViewModel - deprecated class since version 5.0. Attribution is handled automatically by the Map and Scene components, with properties for extracting attribution items, hiding the attribution, as well as setting dark and light mode for the attribution.