Jun 28, 2026 · 6 min read
Rendering millions of points in the browser with deck.gl
On the mapping platforms I've built, the hard part is rarely the data pipeline — it's the last hop: getting millions of features onto a screen at 60fps. WebGL-based rendering with deck.gl is what made that tractable.
The core idea is to hand the GPU flat typed arrays and let it do the work per-vertex, instead of touching the DOM per feature. Once your data is in that shape, a ScatterplotLayer or a custom layer can draw enormous datasets smoothly.
The tricks that mattered
- Aggregate before you paint. Screen-space binning and hexagon aggregation turn "a million points" into "a few thousand cells" that read better anyway.
- Cull aggressively. Nothing outside the viewport, and nothing below a zoom threshold, ever reaches a draw call.
- Move projection to the GPU. Doing coordinate math in shaders keeps the main thread free for interaction.
The lesson that generalizes: performance at scale is usually a design decision about what not to draw, made long before you reach for a profiler.