Dev.to WebDev πŸ›  Dev πŸ‘ 0 πŸ“– 3 min read

Rebuilding geojson.io: A Look at the 2026 Rewrite

If you've worked with spatial data on the web, you've probably used geojson.io. Since Tom MacWright first built it in 2013, it's become one of those quietly indispensable tools in the mapping community β€” drop in a GeoJSO

If you've worked with spatial data on the web, you've probably used geojson.io. Since Tom MacWright first built it in 2013, it's become one of those quietly indispensable tools in the mapping community β€” drop in a GeoJSON file, sketch a polygon, grab a quick bounding box, copy the coordinates back out. No GIS software, no setup, just a browser tab.

This year we shipped the biggest change in the app's history: a full rewrite of the editor, cut over to production on June 1, 2026. Here's what changed, why, and what's shipped since.

Why rewrite it

geojson.io's core had aged in place for a while. The original app was built on Mapbox.js and Leaflet, then refactored in 2022 to Mapbox GL JS and Mapbox GL Draw for vector rendering and drawing tools. That got us vector tiles and better rendering, but the editing layer itself was still a D3-and-vanilla-JS codebase built and bundled with Rollup β€” serviceable, but increasingly hard to extend. Multi-feature selection, bulk property editing, and richer spatial operations were all things users asked for that didn't fit cleanly into that architecture.

Rather than bolt more onto GL Draw, we forked Placemark Play β€” an open-source map editor, also built by Tom MacWright, with an editing model designed from the start around multiselect and structured data editing β€” and adapted it into geojson.io's new foundation.

The new stack

The rewrite moved the app to React 18, Vite, and TypeScript. A few of the more interesting pieces under the hood:

  • No more mapbox-gl-draw. All drawing and editing logic is custom, built around a PMap class that wraps Mapbox GL JS (v3.24.0) directly and layers a Deck.gl MapboxOverlay (@deck.gl/core, `@op for vertex rendering, selection highlighting, and snappingβ€” Deck.gl's WebGL layers turned out to be a better fit for high-frequency selection-state re-renders than the Mapbox GL JS paint-property route.
  • State lives in Jotai atoms, with atomWithStorage things like camera position and UI preferences straight tolocalStorage/sessionStorage, no separate persistence layer needed.
  • Style loading got smarter. Styles are fetched and ating layers and fog get injected into whatever base style isactive β€” with a sequence counter guarding against races when a user switches basemaps mid-fetch.

We soft-launched this as a parallel /next route back in January 2026, ran it in production alongside the legacy app for a few months to work
out the rough edges, and promoted it to the root domain o

What's new since launch

The rewrite wasn't just an architecture change β€” it unloct would've been difficult to build on the old codebase:

  • Multiselect and bulk editing β€” select multiple featerties at once, powered by the Placemark-derived editingmodel.
  • **Spatial operations, marker styling, and a Table Paneloperties in bulk alongside the existing Feature Editor.
  • Custom raster layers, including WMS support and TMS tilesets with inverted Y coordinates, so you can bring your own basemap imagery.
  • Globe projection and 3D, with a toggle between globh/rotation support for tilted views.
  • Vertex snapping while dragging, so edited geometries can snap cleanly to nearby features.
  • Shareable URLs β€” features are zipped and base64-enccan hand someone a working map without a backend.
  • A steady stream of smaller fixes: streamlined file import for unambiguous formats (GeoJSON, KML, GPX, Shapefile skip the dialog entirely now), mobile panel resizing and two-finger pan while drawing, a that survives a page reload.

It's a lot of surface area for a tool that's supposed to it feeling simple β€” while adding real capability underneath β€”has been the actual design challenge of this rewrite.

Still open source

geojson.io remains open source, and the rewrite hasn't changed that. If you hit a bug or have a feature request, open an issue on
GitHub
β€” ane it's headed, the fullchangelog is public too.

Thanks to Tom MacWright for building geojson.io in the first place, and for Placemark Play, which gave this rewrite most of its DNA.

πŸ“° Read the original article on Dev.to WebDev

Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes β€” full credit and traffic to the original publisher.