ArcGIS API for JavaScript 4.25 and 3.42

11-10-2022 05:51 AM
Esri Regular Contributor
2 1 1,316


When I was little, I dreamed of one day writing a geospatial web API release blog. But this isn’t a cooking/recipe blog, so let’s get started.



Welcome to the release of versions 4.25 and 3.42 of the ArcGIS API for JavaScript. Here are some 4.25 highlights (please refer to the 3.42 link at the end for 3.x updates). I also inserted another song parody towards the end of this blog, if you're into that sort of thing. We fixed 34 bugs, made 19 enhancements, and added or updated 14 samples. 


Chapter 1. Ready to launch

Cluster blockbuster

We now allow you to override the default style of point clusters with either a dedicated cluster symbol or a renderer. By default, clusters are styled based on the layer's renderer so that the cluster symbol either represents the average value of the features in the cluster, or the most common category.

clusterBlockbuster.png - custom-cluster-styles


Related record scratch

Displaying related records in Popups has never been easier (or possible) using the new RelationshipContent content type in PopupTemplate. When configuring RelationshipContent, the related layer or table must be added to the map. Support for editing related records will be added in a later release.



All three dimensions

4.25 offers some first-class SceneView updates as well.

Drill deeper into the rich data of VoxelLayer with new properties. There are two approaches to conveniently display different isosurfaces. For continuous variables, you can define a transferFunction to apply normalized color or transparency stops. For discrete variables, you can set a color for each variable.

Add dimensioning to display lengths and distances. LengthDimensions can be created interactively or programmatically. You can also save dimensions to a WebScene.

Lastly, snap to existing features now in all three dimensions to derive complete x, y, and z coordinates from existing features. This also adds 3D Object and Building Scene Layers to available SnappingOptions.



Chapter 2. Caesura

Letter to the Editor

The FeatureForm widget now allows you to access data from other layers. That means you can derive values based on another layer. The FeatureTable widget now supports deleting selected features via the deleteSelection method. For the method to be successful, there must be at least one selected row in the table, editingEnabled must be true, and the underlying data must support deletion.

FeatureLayer was updated to propagate edits to other layers affected by a single edit. This means that edits to other layers that are a result of attribute rules or composite relationships will now cause the layers affected to refresh and render the updated features. Pretty sweet, right?



Layer Potpourri

We added support for ControlPointsGeoreference on MediaLayer. An image or video can now be positioned, scaled, and rotated with two control points. Additionally, it will be skewed with three control points. With four control points, a perspective transformation is applied to the element.

We enhanced MapImageLayer to highlight the selected feature when displaying its Popup.

You can set multidimensionalSubset on ImageryLayer and ImageryTileLayer to expose only subset of dimensional slices that meet the requirements of the multidimensionalSubset. This release also adds beta support for adding Cloud Optimized GeoTiff (COG) files to an ImageryTileLayer via the URL property. COG files can take advantage of all the capabilities of ImageryTileLayer.

CSVLayer and GeoJSONLayer can be loaded from csv and geojson portal items respectively by either setting on the layer or via Layer.fromPortalItem() method.

A SubtypeGroupLayer can now be loaded from a WebMap published with a subtype group layer. Properties like the renderer will be respected for each sublayer when the layer is loaded from a web map. Additionally, the Legend widget added support for SubtypeGroupLayer.



Open Access

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. We plan to continue to improve accessibility in our API in upcoming releases. - widget-updates


Chapter 3. Penultimates

If you’ve knowledge, you’ve knowledge

KnowledgeGraphService (beta) is a new class that connects to existing ArcGIS Enterprise knowledge graph services. A knowledge graph service is composed of a knowledge graph, which contains entities and relationships and the data model that defines the entity types and relationship types in the graph. A knowledge graph service allows users to search, query, and edit the knowledge graph.




There are many wonderful contributions that help explain or showcase concepts related to the ArcGIS API for JavaScript. To emphasize these efforts, we've created a new Blogs page that offers a curated list of relevant blogs organized by concepts.

Within each concept, there is a list of blogs ordered by the corresponding version of the ArcGIS API for JavaScript at publication, with publication dates, and links to read the actual blogs. You can access this new page at the top right of the navigation bar.


Package undeliverable

The CDN on will no longer host the following AMD packages for version 4.25 and later: 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.


Post Script

Can I, can I put you on something like

“This is the ArcGIS API for JavaScript”,

Take four, point, twenty, five


Do you like, the ArcGIS API for JavaScript?

I like the ArcGIS API for JavaScript.

Don’t you like the ArcGIS API for JavaScript,



I want to browse related records

I want them in a popup

I want to browse related records



Why use the new knowledge graph service?

I used the new knowledge graph service

Do you use entity-centric relationship data modeling and analysis



MapImageLayer popups, they now highlight

But every time I load hundreds of MapImageLayers at night

They render so fast

They render so fast

Oh-oh, oh-oh, oh-oh


I need to load CSV and GeoJSON layers from a portal item,

Would you like to be able to try some?

Need to update to 4.25



They didn’t like the ArcGIS API for JavaScript

They never used the ArcGIS API for JavaScript

They didn’t know that we made many accessibility improvements



You’re born to read, I was born to write

But those JavaScript blogs are hard to find when the time is right


It reminds me of the new Blogs page (do you like the ArcGIS API for JavaScript?)

It reminds me of the new Blogs page (do you like the ArcGIS API for JavaScript?)

It reminds me of the new Blogs page

Oh-oh, oh-oh, oh-oh


Do you like, the ArcGIS API for JavaScript?

(We like the ArcGIS API for JavaScript)

I like the ArcGIS API for JavaScript



Do you like, the ArcGIS API for JavaScript?

(We like all kinds of JavaScript APIs)

But I like the ArcGIS API for JavaScript best



You’re born to read, I was born to write

But those JavaScript blogs are hard to find when the time is right

It reminds me of the new Blogs page (do you like the ArcGIS API for JavaScript?)

It reminds me of the new Blogs page (do you like the ArcGIS API for JavaScript?)



Release Blog

4.25 Release Notes

4.25 Samples

3.42 What’s New

Breaking Changes across all 4x releases

Song inspiration

Violent Femmes - American Music

Fair use and Parody law

1 Comment
About the Author
Noah Sager is a Product Engineer on the ArcGIS Maps SDK for JavaScript team at Esri. Prior to joining Esri, he mapped utility lines around Appalachia, investigated public restroom access in Chicago, and studied foraging behavior in squirrels in Canada.