<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Alternative for applyEdits for client side features that is performant? in ArcGIS JavaScript Maps SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1335324#M82404</link>
    <description>&lt;P&gt;I'm creating my own "Editor" widget and stumbled upon some very strange behavior of the `applyEdits` method on `FeatureLayer`. When using `applyEdits`, if you're trying to use `addFeatures` and then shortly after call `applyEdits` again but with `deleteFeatures` of the newly added features, it won't delete them.&lt;BR /&gt;&lt;BR /&gt;I'm assuming the above happens due to `applyEdits` being an asynchronous function and thus it hasn't actually finished `addFeatures` before we're calling `applyEdits` with `deleteFeatures`.&lt;BR /&gt;&lt;BR /&gt;In the code attached below I've implemented three versions of "draw a point to the screen and delete what was previously drawn".&lt;BR /&gt;&lt;BR /&gt;1. `drawPointGraphicsIntended` - this draws Graphic points using the "intended" way according to documentation, but it slow and buggy (NOTE: this isn't bugged if you move the cursor very slowly)&lt;BR /&gt;&lt;BR /&gt;2. `drawPointGraphicsIntendedFixed` - this draws Graphic points using the "intended" way, but it "fixed" the buggy part, by basically deleting a graphic twice.&lt;BR /&gt;&lt;BR /&gt;3. `drawPointGraphicsFastAndResponsive` - this draws Graphic points onto the `view`'s graphics. This is very fast and responsive and works as the API intended.&lt;BR /&gt;&lt;BR /&gt;-----------------&lt;BR /&gt;&lt;BR /&gt;I'm curious if there is an actual way to use the `FeatureLayer` API to not suck. The reason why I'd prefer to use the `FeatureLayer` API is so that I can access `Graphic.layer` to get the parent Layer, if I use the `view`, it'd get the global View layer instead of the actual parent layer.&lt;BR /&gt;&lt;BR /&gt;Code:&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;&amp;lt;html lang="en"&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset="utf-8" /&amp;gt;
    &amp;lt;meta
      name="viewport"
      content="initial-scale=1,maximum-scale=1,user-scalable=no"
    /&amp;gt;
    &amp;lt;title&amp;gt;
      Update FeatureLayer using applyEdits() | Sample | ArcGIS Maps SDK for
      JavaScript 4.27
    &amp;lt;/title&amp;gt;

    &amp;lt;link
      rel="stylesheet"
      href="https://js.arcgis.com/4.27/esri/themes/light/main.css"
    /&amp;gt;
    &amp;lt;script src="https://js.arcgis.com/4.27/"&amp;gt;&amp;lt;/script&amp;gt;

    &amp;lt;style&amp;gt;
      html,
      body,
      #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
    &amp;lt;/style&amp;gt;

    &amp;lt;script&amp;gt;
      require([
        "esri/Map",
        "esri/views/MapView",
        "esri/layers/FeatureLayer",
        "esri/Graphic",
      ], (Map, MapView, FeatureLayer, Graphic) =&amp;gt; {
        const pointLayer = new FeatureLayer({
          source: [],
          geometryType: "point",
          fields: [
            {
              name: "ObjectID",
              alias: "ObjectID",
              type: "oid",
            },
          ],
          objectIdField: "ObjectID",
        });

        const map = new Map({
          basemap: "dark-gray-vector",
          layers: [pointLayer],
        });

        const view = new MapView({
          container: "viewDiv",
          map: map,
          center: [-117.18, 34.06],
          zoom: 14,
        });

        // cache for drawn graphics
        let pointGraphicCache = [];

        // implementation of what _should_ be used according to documentation
        const drawPointGraphicsIntended = (paths) =&amp;gt; {
          pointLayer.applyEdits({
            deleteFeatures: pointGraphicCache,
          });

          pointGraphicCache = paths[0].map(
            (point) =&amp;gt;
              new Graphic({
                geometry: {
                  type: "point",
                  longitude: point[0],
                  latitude: point[1],
                },
              })
          );

          pointLayer.applyEdits({
            addFeatures: pointGraphicCache,
          });
        };

        // implementation of how it should be used according to documentation, but fixed
        const drawPointGraphicsIntendedFixed = (paths) =&amp;gt; {
          pointLayer.applyEdits({
            deleteFeatures: pointGraphicCache.map((data) =&amp;gt; {
              data.deleted = true;
              return data.graphic;
            }),
          });

          const graphics = paths[0].map((point) =&amp;gt; ({
            graphic: new Graphic({
              geometry: {
                type: "point",
                longitude: point[0],
                latitude: point[1],
              },
            }),
            deleted: false,
          }));
          pointGraphicCache = graphics;

          pointLayer
            .applyEdits({
              addFeatures: graphics.map((g) =&amp;gt; g.graphic),
            })
            // after applyEdits is finished, check if it got deleted during execution
            .then(() =&amp;gt; {
              const graphicsToDelete = graphics
                .filter((g) =&amp;gt; g.deleted)
                .map((g) =&amp;gt; g.graphic);
              if (graphicsToDelete.length) {
                pointLayer.applyEdits({
                  deleteFeatures: graphicsToDelete,
                });
              }
            });
        };

        // implementation of what is _expected_ of how the behavior of the map should work/look
        const drawPointGraphicsFastAndResponsive = (paths) =&amp;gt; {
          for (const graphic of pointGraphicCache) {
            view.graphics.remove(graphic);
          }

          pointGraphicCache = paths[0].map(
            (point) =&amp;gt;
              new Graphic({
                geometry: {
                  type: "point",
                  longitude: point[0],
                  latitude: point[1],
                },
              })
          );

          for (const graphic of pointGraphicCache) {
            view.graphics.add(graphic);
          }
        };

        // draw point on pointer move
        view.on("pointer-move", (event) =&amp;gt; {
          const mapPoint = view.toMap(event);

          const paths = [[[mapPoint.longitude, mapPoint.latitude]]];

          // NOTE: change execution method here
          drawPointGraphicsIntended(paths);
          // drawPointGraphicsIntendedFixed(paths);
          // drawPointGraphicsFastAndResponsive(paths);
        });
      });
    &amp;lt;/script&amp;gt;
  &amp;lt;/head&amp;gt;

  &amp;lt;body&amp;gt;
    &amp;lt;div id="viewDiv"&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 05 Oct 2023 12:00:38 GMT</pubDate>
    <dc:creator>AlexJohnK</dc:creator>
    <dc:date>2023-10-05T12:00:38Z</dc:date>
    <item>
      <title>Alternative for applyEdits for client side features that is performant?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1335324#M82404</link>
      <description>&lt;P&gt;I'm creating my own "Editor" widget and stumbled upon some very strange behavior of the `applyEdits` method on `FeatureLayer`. When using `applyEdits`, if you're trying to use `addFeatures` and then shortly after call `applyEdits` again but with `deleteFeatures` of the newly added features, it won't delete them.&lt;BR /&gt;&lt;BR /&gt;I'm assuming the above happens due to `applyEdits` being an asynchronous function and thus it hasn't actually finished `addFeatures` before we're calling `applyEdits` with `deleteFeatures`.&lt;BR /&gt;&lt;BR /&gt;In the code attached below I've implemented three versions of "draw a point to the screen and delete what was previously drawn".&lt;BR /&gt;&lt;BR /&gt;1. `drawPointGraphicsIntended` - this draws Graphic points using the "intended" way according to documentation, but it slow and buggy (NOTE: this isn't bugged if you move the cursor very slowly)&lt;BR /&gt;&lt;BR /&gt;2. `drawPointGraphicsIntendedFixed` - this draws Graphic points using the "intended" way, but it "fixed" the buggy part, by basically deleting a graphic twice.&lt;BR /&gt;&lt;BR /&gt;3. `drawPointGraphicsFastAndResponsive` - this draws Graphic points onto the `view`'s graphics. This is very fast and responsive and works as the API intended.&lt;BR /&gt;&lt;BR /&gt;-----------------&lt;BR /&gt;&lt;BR /&gt;I'm curious if there is an actual way to use the `FeatureLayer` API to not suck. The reason why I'd prefer to use the `FeatureLayer` API is so that I can access `Graphic.layer` to get the parent Layer, if I use the `view`, it'd get the global View layer instead of the actual parent layer.&lt;BR /&gt;&lt;BR /&gt;Code:&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;&amp;lt;html lang="en"&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset="utf-8" /&amp;gt;
    &amp;lt;meta
      name="viewport"
      content="initial-scale=1,maximum-scale=1,user-scalable=no"
    /&amp;gt;
    &amp;lt;title&amp;gt;
      Update FeatureLayer using applyEdits() | Sample | ArcGIS Maps SDK for
      JavaScript 4.27
    &amp;lt;/title&amp;gt;

    &amp;lt;link
      rel="stylesheet"
      href="https://js.arcgis.com/4.27/esri/themes/light/main.css"
    /&amp;gt;
    &amp;lt;script src="https://js.arcgis.com/4.27/"&amp;gt;&amp;lt;/script&amp;gt;

    &amp;lt;style&amp;gt;
      html,
      body,
      #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
    &amp;lt;/style&amp;gt;

    &amp;lt;script&amp;gt;
      require([
        "esri/Map",
        "esri/views/MapView",
        "esri/layers/FeatureLayer",
        "esri/Graphic",
      ], (Map, MapView, FeatureLayer, Graphic) =&amp;gt; {
        const pointLayer = new FeatureLayer({
          source: [],
          geometryType: "point",
          fields: [
            {
              name: "ObjectID",
              alias: "ObjectID",
              type: "oid",
            },
          ],
          objectIdField: "ObjectID",
        });

        const map = new Map({
          basemap: "dark-gray-vector",
          layers: [pointLayer],
        });

        const view = new MapView({
          container: "viewDiv",
          map: map,
          center: [-117.18, 34.06],
          zoom: 14,
        });

        // cache for drawn graphics
        let pointGraphicCache = [];

        // implementation of what _should_ be used according to documentation
        const drawPointGraphicsIntended = (paths) =&amp;gt; {
          pointLayer.applyEdits({
            deleteFeatures: pointGraphicCache,
          });

          pointGraphicCache = paths[0].map(
            (point) =&amp;gt;
              new Graphic({
                geometry: {
                  type: "point",
                  longitude: point[0],
                  latitude: point[1],
                },
              })
          );

          pointLayer.applyEdits({
            addFeatures: pointGraphicCache,
          });
        };

        // implementation of how it should be used according to documentation, but fixed
        const drawPointGraphicsIntendedFixed = (paths) =&amp;gt; {
          pointLayer.applyEdits({
            deleteFeatures: pointGraphicCache.map((data) =&amp;gt; {
              data.deleted = true;
              return data.graphic;
            }),
          });

          const graphics = paths[0].map((point) =&amp;gt; ({
            graphic: new Graphic({
              geometry: {
                type: "point",
                longitude: point[0],
                latitude: point[1],
              },
            }),
            deleted: false,
          }));
          pointGraphicCache = graphics;

          pointLayer
            .applyEdits({
              addFeatures: graphics.map((g) =&amp;gt; g.graphic),
            })
            // after applyEdits is finished, check if it got deleted during execution
            .then(() =&amp;gt; {
              const graphicsToDelete = graphics
                .filter((g) =&amp;gt; g.deleted)
                .map((g) =&amp;gt; g.graphic);
              if (graphicsToDelete.length) {
                pointLayer.applyEdits({
                  deleteFeatures: graphicsToDelete,
                });
              }
            });
        };

        // implementation of what is _expected_ of how the behavior of the map should work/look
        const drawPointGraphicsFastAndResponsive = (paths) =&amp;gt; {
          for (const graphic of pointGraphicCache) {
            view.graphics.remove(graphic);
          }

          pointGraphicCache = paths[0].map(
            (point) =&amp;gt;
              new Graphic({
                geometry: {
                  type: "point",
                  longitude: point[0],
                  latitude: point[1],
                },
              })
          );

          for (const graphic of pointGraphicCache) {
            view.graphics.add(graphic);
          }
        };

        // draw point on pointer move
        view.on("pointer-move", (event) =&amp;gt; {
          const mapPoint = view.toMap(event);

          const paths = [[[mapPoint.longitude, mapPoint.latitude]]];

          // NOTE: change execution method here
          drawPointGraphicsIntended(paths);
          // drawPointGraphicsIntendedFixed(paths);
          // drawPointGraphicsFastAndResponsive(paths);
        });
      });
    &amp;lt;/script&amp;gt;
  &amp;lt;/head&amp;gt;

  &amp;lt;body&amp;gt;
    &amp;lt;div id="viewDiv"&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 05 Oct 2023 12:00:38 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1335324#M82404</guid>
      <dc:creator>AlexJohnK</dc:creator>
      <dc:date>2023-10-05T12:00:38Z</dc:date>
    </item>
    <item>
      <title>Re: Alternative for applyEdits for client side features that is performant?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1335541#M82408</link>
      <description>&lt;P&gt;If you want the performance seen when using the view's graphics collection, but want a separate layer for the graphic, then it seems using a &lt;A href="https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-GraphicsLayer.html" target="_self"&gt;GraphicsLayer&lt;/A&gt; would be suitable:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;&amp;lt;html lang="en"&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset="utf-8" /&amp;gt;
    &amp;lt;meta
      name="viewport"
      content="initial-scale=1,maximum-scale=1,user-scalable=no"
    /&amp;gt;
    &amp;lt;title&amp;gt;
      Update FeatureLayer using applyEdits() | Sample | ArcGIS Maps SDK for
      JavaScript 4.27
    &amp;lt;/title&amp;gt;

    &amp;lt;link
      rel="stylesheet"
      href="https://js.arcgis.com/4.27/esri/themes/light/main.css"
    /&amp;gt;
    &amp;lt;script src="https://js.arcgis.com/4.27/"&amp;gt;&amp;lt;/script&amp;gt;

    &amp;lt;style&amp;gt;
      html,
      body,
      #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
    &amp;lt;/style&amp;gt;

    &amp;lt;script&amp;gt;
      require([
        "esri/Map",
        "esri/views/MapView",
        "esri/layers/GraphicsLayer",
        "esri/Graphic"
      ], (Map, MapView, GraphicsLayer, Graphic) =&amp;gt; {
        const graphic = new Graphic({ geometry: null });

        const pointLayer = new GraphicsLayer({});
        pointLayer.add(graphic);

        const map = new Map({
          basemap: "dark-gray-vector",
          layers: [pointLayer]
        });

        const view = new MapView({
          container: "viewDiv",
          map: map,
          center: [-117.18, 34.06],
          zoom: 14
        });

        // draw point on pointer move
        view.on("pointer-move", (event) =&amp;gt; {
          graphic.geometry = view.toMap(event);
        });
      });
    &amp;lt;/script&amp;gt;
  &amp;lt;/head&amp;gt;

  &amp;lt;body&amp;gt;
    &amp;lt;div id="viewDiv"&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 05 Oct 2023 18:59:01 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1335541#M82408</guid>
      <dc:creator>JoelBennett</dc:creator>
      <dc:date>2023-10-05T18:59:01Z</dc:date>
    </item>
    <item>
      <title>Re: Alternative for applyEdits for client side features that is performant?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1335692#M82411</link>
      <description>&lt;P&gt;I'd lose the ability to use the Symbol from the FeatureLayer, but I suppose I could just change the API I'm making a bit, so not a deal breaker. Suppose this is a decent alternative, are there really no other ways of making FeatureLayer not take second(s) to update?&lt;/P&gt;</description>
      <pubDate>Fri, 06 Oct 2023 08:31:58 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1335692#M82411</guid>
      <dc:creator>AlexJohnK</dc:creator>
      <dc:date>2023-10-06T08:31:58Z</dc:date>
    </item>
    <item>
      <title>Re: Alternative for applyEdits for client side features that is performant?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1335840#M82416</link>
      <description>&lt;P&gt;Somebody else can chime in if they know differently, but I don't think you'll find any other way.&amp;nbsp; The FeatureLayer module just doesn't appear to have been designed for this kind of thing.&lt;/P&gt;</description>
      <pubDate>Fri, 06 Oct 2023 16:55:06 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1335840#M82416</guid>
      <dc:creator>JoelBennett</dc:creator>
      <dc:date>2023-10-06T16:55:06Z</dc:date>
    </item>
    <item>
      <title>Re: Alternative for applyEdits for client side features that is performant?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1335854#M82417</link>
      <description>&lt;P&gt;You are correct that `applyEdits()` is synchronous.&amp;nbsp; With that in mind, I wouldn't expect to do anything that depends on the applyEdits method being completed without waiting for its result.&amp;nbsp; Even if the result is effectively instantaneous, the next synchronous line of code immediately after the line that calls applyEdits is likely (maybe guaranteed?) to execute before the applyEdits function has completed.&amp;nbsp; The applyEdits method returns a promise - that enables you you wait for it to be completed before doing anything, for example:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;layer.applyEdits(...).then(result =&amp;gt; doSomething(result)).catch(error =&amp;gt; console.log(error));&lt;/LI-CODE&gt;&lt;P&gt;&lt;BR /&gt;If you're making a bunch of apply edits, you could wait for all of them - I believe this would work:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;Promise.all(
  layer1.applyEdits(...),
  layer2.applyEdits(...),
  ...,
).then(results =&amp;gt; doSomething(results)).catch(error =&amp;gt; console.log(error));&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;As long as you wait for the result returned by the promises before doing anything else, you should be fine.&lt;/P&gt;</description>
      <pubDate>Fri, 06 Oct 2023 17:22:13 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1335854#M82417</guid>
      <dc:creator>mleahy_cl</dc:creator>
      <dc:date>2023-10-06T17:22:13Z</dc:date>
    </item>
    <item>
      <title>Re: Alternative for applyEdits for client side features that is performant?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1335864#M82418</link>
      <description>&lt;P&gt;PS: re-reading your code...since it's an event repeatedly raised by the point-move, you might consider debouncing calls to the function that applies the edits, maybe using requestAnimationFrame()...at the completion of the apply edits, store a reference to the added graphics.&amp;nbsp; On subsequent calls, you could then update features that you have added instead of delete/remove, or just make sure any previous features are deleted simultaneously...and perhaps do a similar cleanup of previous features at the completion of each applyEdits.&lt;/P&gt;</description>
      <pubDate>Fri, 06 Oct 2023 17:33:03 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1335864#M82418</guid>
      <dc:creator>mleahy_cl</dc:creator>
      <dc:date>2023-10-06T17:33:03Z</dc:date>
    </item>
    <item>
      <title>Re: Alternative for applyEdits for client side features that is performant?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1335871#M82419</link>
      <description>&lt;P&gt;FeatureLayer isn't really the right tool for fast updates like this, using mouse move events. GraphicsLayer would be the first option, but you said you want to use the renderer of a FeatureLayer.&lt;/P&gt;&lt;P&gt;In that case, another option might be a client-side &lt;A href="https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-StreamLayer.html" target="_blank" rel="noopener"&gt;StreamLayer&lt;/A&gt;. There's a sample showing how to use this client-side.&lt;/P&gt;&lt;P&gt;&lt;A href="https://developers.arcgis.com/javascript/latest/sample-code/layers-streamlayer-client/" target="_blank"&gt;https://developers.arcgis.com/javascript/latest/sample-code/layers-streamlayer-client/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Here's a modified version using points.&lt;/P&gt;&lt;P&gt;&lt;A href="https://codepen.io/odoe/pen/MWZzLbY?editors=1000" target="_blank"&gt;https://codepen.io/odoe/pen/MWZzLbY?editors=1000&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 06 Oct 2023 17:53:08 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1335871#M82419</guid>
      <dc:creator>ReneRubalcava</dc:creator>
      <dc:date>2023-10-06T17:53:08Z</dc:date>
    </item>
    <item>
      <title>Re: Alternative for applyEdits for client side features that is performant?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1336235#M82421</link>
      <description>&lt;P&gt;like mentioned in your reply, it isn't really viable due to needing to await the previous async function to complete, as I want real time update to track cursor movement&lt;/P&gt;</description>
      <pubDate>Mon, 09 Oct 2023 11:28:13 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1336235#M82421</guid>
      <dc:creator>AlexJohnK</dc:creator>
      <dc:date>2023-10-09T11:28:13Z</dc:date>
    </item>
    <item>
      <title>Re: Alternative for applyEdits for client side features that is performant?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1336236#M82422</link>
      <description>&lt;P&gt;Looks like a decent option, but seems very specificly designed for certain use cases, in particular the way cleanup works, so not really applicable to my application. Guess I'll go for GraphicsLayer as mentioned here and earlier&lt;/P&gt;</description>
      <pubDate>Mon, 09 Oct 2023 11:29:15 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/alternative-for-applyedits-for-client-side/m-p/1336236#M82422</guid>
      <dc:creator>AlexJohnK</dc:creator>
      <dc:date>2023-10-09T11:29:15Z</dc:date>
    </item>
  </channel>
</rss>

