New component package URL structure:
https://js.arcgis.com/{version-number}/{component-package}/
We’re excited to announce the latest release, packed with enhancements and new features designed to streamline your workflows, expand your app’s capabilities, and increase your productivity with the latest programming patterns! Let’s dive into what’s new.
Batch editing is here!
Maximize productivity while editing by selecting multiple features and editing all of them at once.
Editor now offers a new selection experience for selecting features across one or more layers, and subsequently editing the attributes of all selected features, grouped by layer. In addition, selected features can be moved or deleted with a single click.

Emphasize an area of your scene
New “Focus Area” functionality allows you to highlight and draw attention to specific parts of your 3D scenes. With predefined dark or bright styles, you can emphasize an area of interest by creating a contrast with the rest of the scene. If you have multiple focus areas, you can apply a colored outline to distinguish between them. They can also be captured in slides and saved in a web scene either in Scene Viewer or programmatically.
Explore this functionality in this new sample.

Label multipoint geometries
We added support for a very popular enhancement request – multipoint geometry labels.

Modify 3D Tiles integrated meshes
The IntegratedMesh3DTilesLayer now supports applying client-side modifications using the same SceneModifications class used by the I3S IntegratedMeshLayer. This enables you to display specific portions of a mesh, trim its outline, or replace a section with alternative 3D data. You can also persist and share your modified mesh through web scenes. The visibility of a 3D Tiles integrated mesh will now also conform to any clipping area used to define the visible extent of a local 3D scene.
Reference the new sample which shows how you can apply clip, mask, and replace modifications to tailor an integrated mesh layer to suit your needs.

Create spike maps
We added a new spike theme which visualizes numeric data as spikes where the height of the spike corresponds to a value. This theme works best for skewed datasets with outliers on the high end of the data range, such as total population counts. As opposed to graduated symbols, spikes can make it easier to see the relative differences in values, especially when the data has a large range of values.

Print directions
Directions now offers printed directions (beta) via the options menu for the completed route.

Apply layer-based scale ranges
Seamless visibility switches between different layer types based on the scale are now possible in 3D. Many layers, including feature layers and scene layers (Point), now support layer-based scale ranges. While scale ranges were used in 3D prior to this release, visibility was determined feature-by-feature so you would have a mix of parts of layers at times. With this release, you can apply scale ranges that are evaluated per layer so that now the whole layer is either visible or invisible. This enables a more consistent and predictable experience for displaying a specific visualization of your data based on scale.
Check out the example below which demonstrates toggling the visibility of layers at a specific scale settings. Accident locations are first visualized as a heatmap displayed over the Topographic 3D Basemap. As you zoom in (scale < 1000), accidents are shown as individual points and the Topographic 3D Basemap is turned off in favor of the integrated mesh 3D tiles layer. This switch gives the user a more detailed real-world context and helps them gain insights into where and potentially why the accidents occurred.

Enable custom experiences for 3D analysis workflows
You can programmatically start interactive analysis operations in 3D by using the new analysis view place() method available with all 3D analysis capabilities such as viewsheds, line of sight, and measurements. For example, you can display a custom toolbar that exposes measurement tools or perform an analysis step as part of a multi-step workflow. While this was possible for some analysis tools prior to this release, 4.33 unifies the implementation across all analysis with a consistent approach.
Try it out in the updated Analysis objects sample.

Better understand shadow analyses
With this release, you can get additional context about the surfaces that remain in shadow longer than the threshold. Using the discrete context option, shadows rendered at specific times during the day (based on a configured interval) are composited on top of each other and displayed in addition to the threshold visualization (using distinct colors). In the below scene, you can see shadows that exceed the threshold in red, and the discrete context shadows display in grey. This enables better understanding of the amount of time something is in shadow during the day.

Integrate and analyze oriented imagery
Enhanced measurement capabilities: New triangulated measurement tools enable users to calculate distance, area, and location by intersecting vectors from measurement points captured from two different viewpoints. These tools enhance the precision of measurement within a defined area of interest.

Explore nearby images: Transition between adjacent images using directional arrows, or through images based on a user-defined field with previous/next buttons.

Video support: View and interact with videos using familiar controls such as play, pause, video slider, and audio button. During playback, tools like footprint display, camera locations, and image enhancement are available.
Integrate better charts
Charts components (beta) include many minor but useful enhancements that improve both the developer experience and capabilities that you can enable in your apps. For example:
- Simplified programming pattern for creating and modifying charts when using charts model
- Faster performance, which was achieved by optimizing how data is grouped into categories based on specific intervals or ranges
- Export charts as images or CSV files (excluding box plots and scatterplots)
- Time awareness: Ability to drive the chart display based on the map’s current time extent

Display a parquet file (beta)
The ParquetLayer (beta) enables visualization of parquet files on a map. In upcoming releases, we plan to expand support to include additional capabilities, such as feature querying.
Build faster apps
We constantly work to optimize performance in any way possible. This release, we improved performance in the following areas:
Feature layers: Polygon, polyline, and multipoint features load faster when panning and zooming in 2D maps. ArcGIS Online-hosted feature layers retrieve all features from the server upon initial map load when specific conditions are satisfied. Once loaded, the features don’t need to be re-requested from the server, avoiding future redraws when panning and zooming.
Dictionary renderer: Significant performance improvement was achieved by optimizing how symbols are computed and cached. Instead of generating a unique symbol for each feature, the renderer now reuses symbols when possible and performs more precomputations up front.
3D scenes: For raster tile layers and select gltf model textures, we now automatically compress loaded images in the browser. This saves 75% of the uncompressed memory used previously. Compression happens asynchronous and in parallel in web workers, thus coming at no cost to performance in existing web applications. In addition to other optimizations, this leads to memory savings of 10-50% in typical web scenes.
Programming pattern updates
The SDK offers power and flexibility, constantly pushing the boundaries of what’s possible through innovation of functionality and evolving programming patterns. Over the last several releases, we have been advancing the SDK’s component and core API design. While this transition empowers you with efficient and elegant ways to develop, it also necessitates adapting existing code to align with these evolving patterns. Some of the updates below are specifically designed to provide developers with a smooth transition to components, while others are introducing a more modern approach for an existing pattern.
Embracing web component standards: The recommended approach for building web apps with the SDK is to use components. Core widget functionality is already available as components. Initially, widgets were wrapped within web components. Over time, we are incrementally refactoring them to not include the preexisting widget architecture and further embrace web component standards. For example, style encapsulation via the shadowDOM. Once a component has undergone this optimization, the corresponding widget is deprecated. This release includes many components that meet this criteria. See Esri’s move to web components for more information about the widget transition period and future.
Reactive components: ArcGIS Maps SDK components properties are now watchable with reactiveUtils, the same utility used to observe changes in core API properties. Use reactiveUtils.watch(), .on(), .once(), .when(), or .whenOnce() to observe component state exactly as you would watch view.zoom or layer.loaded. This provides developers who are migrating a widget-based application to components with a familiar way to observe changes on component properties.
See the updated guide on watching for components changes using reactiveUtils.
Waiting for views to be ready: The new viewOnReady method on the Map, Scene, and Link Chart components allows you to wait until the component’s internal view is fully initialized and ready to be used. This is useful when you are dynamically importing other modules or setting up logic that depends on the view being fully initialized. This method behaves similarly to watching the arcgisViewOnReady event, but it is more convenient for use in vanilla JavaScript applications. See the table in the watching for changes guide to understand which method best suits your architecture.
Modernize with $arcgis.import(): The new $arcgis.import() global function is a modern replacement for AMD require when building single page JavaScript apps using the CDN. The function accepts a module path or an array of module paths and returns a promise that resolves with the requested module(s). The documentation has been updated to use this new pattern, including getting started, tutorials and samples. While require is still supported, we encourage developers to adopt this more practical and modern approach.
New CDN endpoint for components: The CDN endpoint for component packages has been updated, offering a more consistent and simplified versioning pattern.
New pattern: https://js.arcgis.com/{version-number}/{component-package}/
Consider using geometry operators: The geometry engine has been deprecated in favor of the more modular and feature-rich geometry operators. See the Introduction to geometry operators guide page for more information.
Learn more
There is a lot more to this release, such as video layer enhancements, utility network associations with spatial selection, new geometric effects in vector symbols, and client-side point cloud layer queries. Continue learning about this massive release in the release notes, and play around with the new capabilities using new samples.
We are also holding a Youtube livestream on 9am PT, Tuesday, July 8th. Join us to see the latest features live and engage with the product team directly!
Article Discussion: