Release Notes

Version 1.18

(April 2022)

New functions

Version 1.17

(March 2022)

New profiles

Version 1.16

(December 2021)

New functions

Updated functions

  • The Attachments function now includes a metadata option. When true, the function returns exif information for the attachments.

New profiles

Updated profiles

Version 1.15

(September 2021)

New functions

New profiles

Updated profiles

The Attachments function can now be used in the Popup profile.

Version 1.14

(August 2021)

New functions

Updated functions

  • All geometry functions now support nautical-miles as a valid unit.
  • GetUser was updated to return more information about the user by default when the portal is not provided. Note the updated payload for the following expression:
var u = getUser($featureset)
return text(u);

// payload at 1.14
   "id" : <String> //user id
   "username": <String> // username
   "fullName": <String> // First Name + Last name
   "email":  <String> // email
   "groups" -> <Array> // e.g. [ "Electric", "Water" ]`
   "role" -> <String>  // (Administrator, Publisher, User, Viewer or Custom Role)
   "privileges" -> <Array> // Array of fine privileges (edit, view etc.. )
   "userLicenseTypeExtensions" -> <Array> // ["Utility Network", "Parcel Fabric"]

// payload prior to 1.14
   "username": <String> // username

New profiles

Version 1.13

(April 2021)

New functions

Updated functions

  • Schema was updated to support $feature inputs in addition to FeatureSet inputs.

New profiles

Updated profiles

Added $featureSet global to Attribute Rules and Field Calculation profiles.

Version 1.12

(December 2020)

New functions

New profiles

Documentation enhancements

Images were added to the documentation of some geometry functions to clarify meaning. See Angle for an example.

Version 1.11

(July 2020)

The following features were added to ArcGIS Enterprise server 10.8.1, but not ArcGIS Enterprise portal 10.8.1. See version 1.10 for new features added to ArcGIS Enterprise portal 10.8.1.

Bitwise Operators

You can now use bitwise operators in Arcade expressions. The expression evaluates the operation based on the binary representation of numbers.

7 & 14
// binary 0111 & 1110, which results in 0110
// the expression will return 6

Template literals

Template literals allow for embedding expressions in text literals using the following syntax:

`Text is wrapped in backticks, and expressions ${ /* go inside curly braces preceded by a $ */ }.`

This allows for easier text manipulation in Arcade. For example, in Arcade 1.11 you can do this...

var textContent = `The average score was ${Round(Average(scores), 2)}%.`

...instead of text concatenation...

var textContent = "The average score was " + Round(Average(scores), 2) + "%".

Read the Template literals guide for more information and examples.

New functions

New profiles

Version 1.10

(July 2020)

Updated functions

FeatureSetByAssociation was updated to include two additional associationType types: junctionEdge and midspan.

Updated profiles

The following profiles added a new global, $editcontext.editType, which indicates the type of edit (insert, update, delete) performed on the feature.

Version 1.9

(January 2020)

New functions

Updated profiles

The following profiles added a new global, $originalFeature, which represents the original state of the feature executing the Arcade expression.

Version 1.8

(October 2019)

New functions

Updated functions

  • Dictionary
    • Added an additional signature that allows users to parse stringified JSON as an Arcade Dictionary.
  • Distinct
    • Added support for FeatureSet inputs.
  • FeatureSetByPortalItem
    • Now implemented in the Popup profile with a modified signature. You are now required to provide a reference to the portal where the item belongs.

Documentation updates

The function documentation now displays multiple signatures for functions that have overloaded parameters. This includes new documentation for the following functions:

Version 1.7

(July 2019)

New profiles

New functions

Updated functions

The following functions were updated to support an array of points as inputs.

The following functions were updated to support FeatureSet inputs:

Bug fixes

  • The parameter order of Contains and Within functions were updated to properly work for FeatureSets and standalone geometries.

Version 1.6

(March 2019)

New profiles

New functions

Version 1.5

(December 2018)

FeatureSet support in popups and attribute rules

FeatureSet is a new data type that gives you access to other features in the same layer, feature service, or map as the feature executing an Arcade expression. This functionality is only available in the Popup and Attribute Rule profiles.

We introduced three new global variables in these profiles:

  • $layer - A FeatureSet containing all features in the same layer as the $feature. This only applies to feature layers.
  • $map - A collection of layers in the same map as the $feature.
  • $datastore - A collection of layers in the same feature service as the $feature.

FeatureSets allow you to write expressions that return a result based on the feature's relationship with other features in the map. For example, you can compare the value of a feature's field to the statistics of the same field for all features in the layer.

// returns the difference between the feature's 'population' and the average value of `population` in the dataset
$feature.population - Mean($layer, 'population');

You can chain functions that support FeatureSet.

var sensitiveAreas = FeatureSetByName($map, 'Sensitive Land', ['LandType'], true);
var affectedLandPoly = Geometry($feature);
var countAreas = Count( Intersects( Filter( sensitiveAreas, "LandType='Arable'"), affectedLandPoly) );

You can also substitute Arcade variables in functions that take SQL92 expressions as a parameter using the @ character.

var averageValue = Average($layer, 'POPULATION');
var result = Filter($layer, 'POPULATION > @averageValue');

New profiles

New functions

Existing functions that support FeatureSet

Deprecated functions

  • Relate()

Version 1.4

(July 2018)

Casting Feature to Geometry

For your convenience, we added support for internally casting features to geometries in all geometry functions. That means you can directly pass a feature (e.g. $feature) to any parameter that accepts Geometry types.

// At Arcade 1.4, you can pass a feature directly to any geometry
// function, which internally casts the feature as a geometry object

AreaGeodetic( $feature, 'square-meters' )

// This supersedes the previous workflow, which required you to
// cast the Feature to a Geometry yourself

// required syntax at Arcade 1.3
AreaGeodetic( Geometry($feature), 'square-meters' )

New profiles

Arcade expressions can now be executed in the following profiles:

These profiles allow you to write expressions for attribute rules in ArcGIS Pro.

New functions

Version 1.3

(December 2017)

Geometry operations

We added several new geometry functions that allow you to perform geometric operations in any of the following categories:

  • Testing topological relationships
  • Overlay
  • Measurement
  • Proximity

See the updated overview of Geometry Functions for more information and the new functions listed below.

Many of the geometry functions, such as the overlay and testing functions, require more than one input geometry. In the current release of Arcade, you can manually construct geometry objects as needed within the expression. For example, you can calculate the distance from one hard-coded point to all points in a layer. In a future release, we will provide methods that allow you to access other geometries within the same layer and features in other layers.

New functions

Version 1.2

(September 2017)

New functions

Version 1.1

(June 2017)

The popup profile was added, allowing users to define expressions that will evaluate and display values calculated on the client when the popup displays in the view. Users can reference Arcade expressions with placeholders that will be replaced by expression values when the popup is opened. See the individual ArcGIS SDKs for examples of how this works within applications.

New functions

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.