ImageryLayer.effect Bug 4.19, 4.20

07-15-2021 05:41 PM
Occasional Contributor III

Starting in 4.19, and including 4.20, setting the effect property on instances of ImageryLayer has no effect.  This can be verified in the sandbox for the sample Intro to ImageryLayer.  In the constructor for the layer on line 39, you can add an effect property like so:


const layer = new ImageryLayer({
    effect: "grayscale(100%)",
    format: "jpgpng" // server exports in either jpg or png format



When you refresh the sample using the Refresh button at the top-right of the page, you see the layer in full color as before.  Now, go to line 16 and change the API version to 4.18 like so:


<script src=""></script>



When you refresh the sample again, the layer now renders in grayscale, as it should.  Other 4.19 layer types, like FeatureLayer, MapImageLayer, and TileLayer work just fine in this regard; the issue seems limited to ImageryLayer.

I can't fully explain the issue, as I don't fully understand it, but the following workaround is working for me in version 4.19 (I'm unable to verify it in 4.20 since it's not available for download yet).  If you have a locally hosted copy of the API, make the following change in esri\views\2d\layers\ImageryLayerView2D.js:

Search for:"timeExtent",()=>{


Replace with:"layer.effect",()=>{this.subview.container.effect=this.get("layer.effect")}),"timeExtent",()=>{



3 Replies
Esri Contributor

Hi Joel - thank you for reporting this. We are looking into this bug and hope to have it fixed soon.

0 Kudos
Esri Regular Contributor

Hi there, 

This issue is fixed at version 4.21 and it is planned to be released end of September. You can test the fix by pointing your app to  <script src=""></script>. 


Thanks for reporting this issue, 



0 Kudos
Occasional Contributor III

After upgrading to 4.21, I have found this issue is indeed fixed.  Thank you!

0 Kudos