ArcGIS API for JavaScript

What's new in ArcGIS API for JavaScript (v4.25)

Version 4.25 is out and we’re excited to share all of the powerful new capabilities and improvements that the team has been working on! Read on to learn about some of the highlights in the release…

Related records in popups

We added support for displaying related records in popups using the new RelationshipContent content type in the popup template. You can design your popup in the same way that you’ve done before with other types such as pie charts and text – either authored in the Map Viewer and saved to a web map or layer or defined in your code. The related layer or table must be added to the map. We will be adding support for editing related records in an upcoming release.

Custom cluster styles

By default, clusters are styled based on the underlying layer’s renderer so that the cluster symbol either represents the average value of the features in the cluster, or the most common category. You can now override the default style of the FeatureReductionCluster using either a unique cluster symbol or a renderer.

Unique cluster symbol: Define a unique cluster symbol while retaining the symbology of individual points defined in the layer’s renderer.

Cluster renderer: Rather than define a single cluster symbol, you can create a custom cluster renderer based on an aggregation of the underlying data, such as the sum or average of a given field. See the Clustering with aggregate fields and the Cluster based on the sum of a field samples to learn how to do this.

One option you have for the renderer is a pie chart, which is a great way to see a breakdown of the data that the cluster represents. See the Clusters as pie charts sample to learn more.

Cloud Optimized GeoTiff (COG) support

This release adds support for adding Cloud Optimized GeoTiff (COG) files to imagery tile layers via the URL property (released in beta). COG files can take advantage of all the capabilities of imagery tile layers.

Full 3D snapping

Snapping in 3D scenes has been enhanced with the ability to snap in all three dimensions to derive complete x, y and z coordinates from existing features. In addition to feature layers, you can snap to features in 3D Object and Building Scene Layers.

Length dimensioning in 3D scenes

A new capability called dimensioning allows you to display length or distance measurements between two points in a 3D scene. This can be done programmatically – for example if you want to show measurements of geometries from another layer – or by allowing the user to interactively manipulate the dimensions associated with a layer. Users can easily dimension existing features through 3D snapping. The dimensions are represented in a new layer type called DimensionLayer which will be included in the legend and layer list widgets just as any other layer and can be saved to and loaded from a WebScene. The dimensions can be used in slides to share with stakeholders, such as for existing and proposed developments.

Terrain shading

We’ve made it easier to perceive structure and shape of the ground in 3D scenes by incorporating a dynamically shaded relief based on sun position. If you are using a vector basemap that doesn’t incorporate a hill shade (like the topographic basemap does) the terrain shading can be a huge improvement to the aesthetic of the scene.

Voxel Layer updates

Drill deeper into the rich data of voxel layers by exploring isosurfaces and dynamically examining horizontal and vertical slices of the 3D volume. There are two approaches to display different isosurfaces:

To look inside your data, you can cut vertically through the volumes and slices to carve up the cuboid volume into convex shells.

Try out all those new capabilities in the visualizing atmospheric measurements demo app.

Editing improvements

The editing experience is constantly evolving as we work to maximize end user productivity, data quality, and powerful editing capabilities in your applications. Here are some of the updates made in this release:

Use data from other layers: Calculate values for fields in feature form and editor widgets using data from other layers in your Arcade expressions. This means you can derive values based on another layer. For example, calculate fields in a point layer based on values from an intersecting feature in a polygon layer, including layers not part of the map.

2D tooltips while drawing: Use tooltips to display total length of polylines and area of polygons while drawing new features and updating existing features. While already possible in 3D, this release adds support for 2D.

Delete features in the Feature Table widget: The Feature Table widget now supports deleting selected features.

Restrict editing capabilities: Support for app-level restrictions on attribute or geometry updates. This provides further refinement of editing capabilities that are defined in the service. The UI will automatically update based the editing capabilities allowed – whether they were defined in the service or via code.

Media layers: position, skew, and transform

If you are overlaying images or videos on the map, control points enable you to georeference specific locations of the media to position, skew and transform it on the map. In an upcoming release, there will be a widget enabling the end user to interactively adjust the media.

Check out the new MediaLayer with control points sample to see the ControlPointsGeoreference in use.

Working with multidimensional data

Multidimensional imagery data is commonly used in the scientific community to store atmospheric, oceanographic, and earth science data. The information is stored as slices, where the service has a slice for each unique combination of dimension values and variable names. You can visualize and perform analysis on this data on the client using the imagery layer and imagery tiled layer. We have enhanced these layers with the following capabilities:

Set display criteria: Expose only a subset of dimensional slices that meet your criteria. For example you may have a dataset containing soil temperature and moisture, and you can choose to expose only a subset of the data, like the soil temperature at a specific elevation range. Check out the Multidimensional ImageryTileLayer sample to learn more.

Work with transposed data: The identify() method was enhanced to return pixel values for all (or just the dimensional definitions that you specify) dimensional slices associated with a transposed multidimensional tiled image service. These services are created for optimizing performance while accessing pixel values across all multidimensional slices.

To learn more about working with multidimensional imagery, see the new documentation added to ImageryLayer and ImageryTileLayer.

Notable updates in ArcGIS Online for Developers

The November update of ArcGIS Online includes many improvements that are based on capabilities in the JavaScript API. Map Viewer and Scene Viewer provide a great way to explore your data and new styling options, and easily bring them into your app using the saved web map, web scene or layer. Here are a few example updates to check out:



For increased accessibility, we made many improvements for better color contrasts in CSS themes, better use of ARIA roles and attributes, and various other changes. This makes both for a better experience with screen readers, but also for users in general. Accessibility is a requirement with high importance and will continue to incrementally improve across releases.

Changes to be aware of

We have made the following changes to the experience within widgets to improve the user experience:

We also removed non-esri packages from the CDN. This will only affect you if your code uses these packages directly and has no effect if you are simply using the API. Packages include: dgrid, dijit, dojo, dojox, dstore, and tslib. API versions 4.24 and earlier will continue to include the packages. The Dojo loader will continue to be included, to allow for AMD support in the browser.

Learn More

This blog explores many of the 4.25 updates, but there are even more in the release. For example, you can:

To get the full scoop, check out the release notes, and play around with the new samples.

Let’s talk about the release!

Learn about the new features added at version 4.25 of the ArcGIS API for JavaScript, directly from the product team! We are hosting a livestream on November 29th, 9:00am PST.  This will be an informal setting for the JavaScript API product team to demo new features and answer questions from the audience. We hope to see you there!

What’s New with the ArcGIS API for JavaScript v4.25:

About the authors

Julie Powell is a Principal Product Manager, focusing on Esri's web development technologies. She works to ensure developers can be successful in building state of the art, purposeful solutions using ArcGIS software. Julie brings 20 years of experience working with global leaders such as Hewlett-Packard and Esri, delivering a variety of software solutions for both the enterprise and consumer markets. Julie has worked on a wide range of projects and consulting endeavors, including serving as technical lead for web mapping solutions for strategic customers.


20+ years of experience with web mapping. Currently lead project engineer for the ArcGIS API for JavaScript development team at Esri. トレイルランニングをするのが好きです。

Inline Feedbacks
View all comments

Next Article

Enhance web app accessibility with Instant Apps

Read this article