Starting around version 4.20 of the ESRI JavaScript API, we noticed that FeatureLayers began returning all features from the server when the layer is loaded or made visible, regardless of the current map extent. I now see this behavior is confirmed in the 4.33 release notes and appears to be the new standard.
We manage hundreds of map services, and some layers contain tens of thousands of features. Now, even simple web maps with only 10–15 layers can take 20–30 seconds to load, depending on how many features are in each. This is significantly affecting performance and usability.
We’ve confirmed:
Even if the map is zoomed in before the layer is toggled visible, all features are still fetched from the server.
This behavior occurs even with small test apps using basic FeatureLayers from various sources.
It's not specific to our server; we've tried ArcGIS Server 11 and tested with binary (PBF) format responses—no significant improvement.
Questions:
Why does the FeatureLayer no longer respect the current extent when requesting features?
Is this really the permanent behavior moving forward?
Is the only viable solution to switch to MapImageLayer for every service that contains a large number of features?
Are there any workarounds or configurations (e.g., definitionExpression, featureReduction, etc.) that can force extent-based filtering?
If this is the intended behavior, this change will significantly increase the load on our infrastructure and may require a complete overhaul of our web maps.
We’d really appreciate any insights, solutions, or confirmation from Esri or others who’ve encountered and worked around this.
Thanks in advance.