Honua honua-migrate codemod — before / after · Migrate from Esri ← samples starting…

Existing ArcGIS Maps SDK for JavaScript code runs against Honua Server with minimal or zero changes. The esri-compat shims accept the same FeatureLayer, Search, and map.add() calls; the honua-migrate codemod optionally rewrites them to the native @honua/sdk-js equivalent. Same app, same Maui zoning layer — the live map on the right is the migrated code running.

Before

ArcGIS Maps SDK for JavaScript

@arcgis/core
// widgets pointed at an ArcGIS FeatureServer
import FeatureLayer from "@arcgis/core/layers/FeatureLayer";
import MapView from "@arcgis/core/views/MapView";
import Search from "@arcgis/core/widgets/Search";

const zoning = new FeatureLayer({
  url: "https://demo.honua.io/rest/services/" +
       "maui-zoning/FeatureServer/0",
  outFields: ["*"],
});

map.add(zoning);
const view = new MapView({ container: "map", map });
view.ui.add(new Search({ view }), "top-right");
runnpx honua-migrate ./src
After

esri-compat shim · @honua/sdk-js

zero-to-minimal diff
// same widget names, resolved by the esri-compat shim —
// or the codemod rewrites to native @honua/sdk-js:
import { FeatureLayer, MapView, Search }
  from "@honua/sdk-js/esri-compat";

const zoning = new FeatureLayer({
  // OGC API Features items — native GeoJSON
  url: "https://demo.honua.io/ogc/features/" +
       "collections/maui-zoning",
  outFields: ["*"],
});

map.add(zoning);           // unchanged
const view = new MapView({ container: "map", map });
view.ui.add(new Search({ view }), "top-right");

The shim maps ArcGIS widget idioms onto Honua's protocol surfaces — FeatureLayer.url resolves to GeoServices REST or /ogc/features/collections/…/items (GeoJSON), and map.add() / Search behave as before. The map on the right renders maui-zoning loaded from that OGC items endpoint — the migrated code, live.