| Bug ID Number |
BUG-000150969 |
| Submitted | July 21, 2022 |
| Last Modified | December 8, 2025 |
| Applies to | Portal for ArcGIS |
| Version found | 10.9.1 |
| Operating System | Windows Server |
| Operating System Version | 2019 64 Bit |
| Status | As Designed
After review by the development team, it has been determined that this behavior is as designed. See the Additional Information section for details.
|
Additional Information
This issue is expected due to the complexity of the expression and some differences between ArcGIS API for JavaScript 3.x used in Map Viewer Classic and ArcGIS API for JavaScript 4.x used in Map Viewer. The expression in question works in Map Viewer Classic because the older ArcGIS API for JavaScript 3.x queries every field in the layer no matter what. This may seem more flexible for a complex expression like this but it comes at a major performance cost, especially when the expression initiates a query against a layer with many fields and data. ArcGIS API for JavaScript 4.x used in Map Viewer is smarter as it detects the fields it knows it requires and only queries those fields to help save on query performance. However, there are limits to this field detection, especially when fields are referenced in an expression without using the $feature.fieldname notation and doubly so when referenced within an array (as is the case in the provided expression).
Refer to the Workaround section for best practices on how to properly declare fields in an Arcade script to prevent this issue.
Workaround
There are some best practices for fixing or safeguarding against this, and the solution depends on the ArcGIS Enterprise version used.
- In ArcGIS Enterprise 10.9.1 and earlier, it is best to explicitly declare all fields used in the execution of the expression. This best practice is noted in this ArcGIS Arcade documentation under the 'Global variables' section: https://developers.arcgis.com/arcade/guide/logic/#variables.
- In ArcGIS Enterprise 11.0, a new Expects function is added. Refer to this ArcGIS Arcade documentation: https://developers.arcgis.com/arcade/function-reference/data_functions/#expects. The Expects function is an optimized way of declaring fields, functioning the same as the example above.
Steps to Reproduce