ArcGIS Maps SDK for JavaScript

ArcGIS API for JavaScript versions 4.7 and 3.24 released

Our first JavaScript release of 2018 promises to be a significant one. Today, we release versions 4.7 and 3.24 of the ArcGIS API for JavaScript. In 4.7, we made important advances in both 3D and 2D functionality. In 3.24, we improved the quality of both the API and the SDK. Here are just some of the release highlights you’ll find.

Mobile support in 3D

Developers can now build 3D web applications that can be used on modern phones or tablets without having to install an app! See the Hardware Requirements for more details on supported devices. For a smooth mobile experience, we greatly improved performance and stability. For example, scene memory usage is controlled by adjusting the level-of-detail of the data displayed across layers. This behavior can be fine-tuned with the qualityProfile API. Other performance improvements include a reduced memory footprint of Scene Layers, and continuous data loading via web workers.

WebGL Updates

FeatureLayer performance continues to improve, allowing you to load features more efficiently and navigate the view more seamlessly. FeatureLayerView can now be queried when WebGL is enabled. These queries can be executed for statistics on the client, for example in the Query client-side statistics sample. Additionally, TextSymbols are now supported with FeatureLayers. This includes support for multi-line text.

Edge Rendering for 3D

Bring 3D objects to life with Edge Rendering. Enabling edges will draw the outlines of 3D polygon and mesh geometries, which greatly improves scene contrast and depth perception. Additionally, edges are a great way to style your 3D layers. You can configure the SolidEdges3D with different edge colors and sizes to generate striking visualizations. Or, you can use the SketchEdges3D for a unique, hand-drawn look.

Client-side Projection Engine

From the makers of geometryEngine comes another big, client-side, hit. The client-side projection engine is now available at both 4.7 and 3.24. The projection module provides a way to convert geometries from one spatial reference to another on the client. This makes it easier to reproject your data to be in the same spatial reference as the map or scene without making a call to the server. The browser must support WebAssembly for the client-side engine to work. To see how this is done, check out the 4.x Client-side projection sample, and the 3.x Client-side projection sample.

3D Area Measurement Widget

Measuring areas just got more exciting (and possible) in 3D webapps using the AreaMeasurement3D widget. To see how to use this widget, or the DirectLineMeasurement3D widget, see the Measurement in 3D sample.

Legend Widget Style

Legendary widgets deserve legendary style. The Legend widget now has a style property, which allows you to toggle between two different views of the widget. The classic style is the default, and represents the time-tested view of the Legend widget. We now support a card style, which displays widget content in a fresh, updated way.

LayerList Updates

Speaking of widgets, we also added support for panels in the LayerList widget. This allows you to add custom content to a layer’s list item, including: widgets, text, and DOM elements specific to the application. Users commonly request a convenient way to combine the LayerList with the Legend widget. With this release, you can accomplish this by setting the helper string legend to the listItem’s panel content. Take a look at this Combine LayerList and Legend widgets sample as an example.

Better Support for ES Promises

This release improves our compatibility with ES Promises. Prior to 4.7, the WebMapWebSceneMapViewSceneViewBasemapGroundLayer, and LayerView classes were not compatible with ES Promises, causing the web browser to go into an infinite loop, making it unresponsive. At this release, we make the API compatible by default. This is a breaking change. Please read this blog post to learn more about how to make your code compatible with these updates.

Better Printing with 3.23

Printing was updated at this release. The URL parser of the PrintTask is more robust to better handle custom printing services. We added the ability to print feature attributes in feature collection layers (even when they are not needed for rendering). We expanded support for printing CJKV characters. We also fixed an issue with printing layers that do not use default symbology, and instead printed “Override” in the legend. Lastly, the most recent version of ArcGIS Enterprise will be able to take advantage of several optimizations we made to the Print API.

Learn more

Explore the release notes and new samples to learn more about what’s new in the API, such as: Smart Mapping updates, CSVLayer updates, FeatureLayer updates, Widget updates, Draw updates, and more.

Version 4.7 release notes
Version 4.7 samples
Version 3.24 release notes
Version 3.24 samples

About the authors

Passionate about JavaScript, maps, and writing (not necessarily in that order). Big fan of squirrels. Journeyman mapper of Utility Lines and Public Restrooms. Product Engineer on the ArcGIS API for JavaScript team. In Noah’s spare time, he also enjoys parenting.


I spend a ton of time outdoors and when not on a mountain somewhere I'm a Sr. Product Engineer for the ArcGIS Maps SDK for JavaScript. I work on ES modules, 3rd party JavaScript frameworks, and other cool mapping-related goodies.


20+ years of experience with web mapping. Currently lead project engineer for the ArcGIS Maps SDK for JavaScript development team at Esri.


Raluca works as a web cartographer with the Geo Experience Center team at Esri. She loves to play around with web technologies and visualization styles. If she's not in front of the computer, she's probably somewhere up in the mountains.


Next Article

Getting to Know the Geoprocessing Synthetic Aperture Radar Toolset

Read this article