The map is no longer the hard part.
All 226 American Red Cross chapters, drawn live by about forty lines of code. Click one.
// The page: <arcgis-map id="heroMap"></arcgis-map>
const [Map, FeatureLayer] = await $arcgis.import([
"@arcgis/core/Map.js",
"@arcgis/core/layers/FeatureLayer.js",
]);
const chapters = new FeatureLayer({
url: "https://services.arcgis.com/pGfbNJoYypmNq86F/arcgis/rest/services/Master_ARC_Geography_2022/FeatureServer/3",
outFields: ["Chapter", "Region", "Division", "City", "State", "Phone"],
renderer: {
type: "unique-value",
field: "Division",
uniqueValueInfos: divisionColors, // six muted fills, one per division
},
});
const mapEl = document.getElementById("heroMap");
mapEl.map = new Map({ layers: [chapters] }); // no basemap: the data is the map
mapEl.view.goTo({ center: [-96.5, 38.5], scale: 20000000 }); // frame the lower 48
mapEl.view.on("click", async (event) => {
const hit = await mapEl.view.hitTest(event, { include: chapters });
const result = hit.results.find((r) => r.graphic?.layer === chapters);
if (result) showCard(result.graphic.attributes); // our own card, no gray pop-up
});
What an SDK actually is
SDK stands for Software Development Kit. Forget the acronym. Think of it as a box of finished map parts: the map itself, the layers, the legends, the search bars, the pop-ups, the charts. Esri built every part, tested every part, and keeps every part current.
Experience Builder hands you a furnished model home. The rooms are nice, but the walls are where the walls are. The SDK hands you the same materials and lets you place every wall yourself. Same Esri foundation, same data, same security. The difference is who decides what the tool looks like and how it behaves: the template, or you.
And here is the part that surprises people: you do not install anything. One line in a plain web page loads the whole kit from Esri's servers. Your "development environment" can be a single text file.
The Parts
Maps, layers, widgets, and charts as ready-made building blocks. You assemble; you do not invent.
The Freedom
Any layout, any behavior, any audience. If you can describe it, the page can do it.
The Reach
It runs in a plain web page. No servers to manage, no licenses to chase, nothing for users to install.
Your first map is one HTML tag
This is a complete web page. Not an excerpt. Ten lines, and three of them are just closing tags.
<!DOCTYPE html>
<html>
<head>
<script type="module" src="https://js.arcgis.com/5.1/"></script>
<style> arcgis-map { height: 100vh; display: block; } </style>
</head>
<body>
<arcgis-map basemap="osm" center="-82.46,27.95" zoom="7"></arcgis-map>
</body>
</html>
A map is now an HTML tag, the same way a photo is. Change center and zoom and it is your town instead of Tampa Bay.
Add real data with five more lines
Point the page at any feature service you can see in ArcGIS Online. These are the live Red Cross chapter boundaries, straight from the same layers the official apps use.
const FeatureLayer = await $arcgis.import(
"@arcgis/core/layers/FeatureLayer.js");
document.querySelector("arcgis-map").map.add(
new FeatureLayer({
url: "https://services.arcgis.com/pGfbNJoYypmNq86F/arcgis/rest/services/Master_ARC_Geography_2022/FeatureServer/3",
opacity: 0.55,
}));
No export, no copy, no upload. The layer on your map is the layer in the org, always current.
Make it answer questions
Fifteen more lines and the map talks back. Click any chapter below: the page reads the data underneath your cursor and writes the card itself. This is the moment dashboards cannot follow you past.
const mapEl = document.querySelector("#answerMap");
mapEl.view.on("click", async (event) => {
const hit = await mapEl.view.hitTest(event,
{ include: chapters });
const result = hit.results.find(
(r) => r.graphic?.layer === chapters);
if (!result) return;
const a = result.graphic.attributes;
card.innerHTML = `
<h3>${a.Chapter}</h3>
<p>${a.Region} · ${a.Division}</p>
<p>${a.City}, ${a.State}</p>`;
});
Your own info card, your own wording, your own formatting. The gray default pop-up never appears.
Click a chapter to see its card.
So why do we all build dashboards?
Because until recently, this was the honest math: Experience Builder and Dashboards gave you eighty percent of what you wanted in an afternoon, and the SDK gave you a hundred percent in a month of JavaScript you did not have time to learn. Most of us took the eighty percent. That was the right call.
But the trade has changed. The builders still cost an afternoon. The SDK now costs about the same afternoon, because an AI assistant writes the first draft of the code and you steer it in plain English. When both paths take a day, the question is no longer which one is faster. It is which one gives you the tool you actually imagined.
Reach for the builders when
- The standard widgets already say what you need to say.
- The app is internal, routine, and temporary.
- Nobody on the team wants to touch a code file, even with help.
Reach for the SDK when
- You caught yourself saying "I wish it could just..."
- The audience deserves better than a template: donors, executives, the public.
- You want one page that loads fast, looks like yours, and does exactly one job well.
The AI shift, honestly stated
Here is the workflow that changed everything. You open an AI assistant and describe the tool: "A map of our chapters. Clicking one shows its region and phone number in a card on the right. Red accents, no default pop-ups." The assistant writes the SDK code. You look at the result, ask for changes the way you would ask a colleague, and repeat until it is right.
You are not typing JavaScript from memory. You are directing it. Your GIS judgment, the part you already have, is what steers: which layers, which fields, what the audience needs, what would mislead them. The assistant supplies syntax; you supply sense.
Two honest cautions. First, you still test what it builds, the same way you would check a stranger's map before publishing it. Second, the first day feels unfamiliar. Every tool on this page after that first day feels like a superpower.
Watch the four-minute film
A short film on how mapping work used to be done, how it works now, and what building layers really means.
Built with it
Every one of these is a working tool built this way: one person, the SDK, and an AI assistant. None of them took longer than a few days.
Start here
-
Save the ten-line file
Copy the file from Your First Map into a text editor and save it as
map.html. Double-click it. That is a running SDK app. -
Ask for one change
Open an AI assistant, paste the file, and ask for something small: your city, a different basemap, one of your own layers. Watch what comes back.
-
Read the real documentation
Esri's SDK documentation and components reference are excellent, and every sample runs live in the browser.
-
Put it on the web
A free GitHub account and a free Vercel account turn that file into a real URL you can send to anyone. This page you are reading was published exactly that way.