// the find
keplergl/kepler.gl
Kepler.gl is a powerful open source geospatial analysis tool for large-scale data sets.
kepler.gl is a browser-based geospatial visualization tool built on deck.gl and MapLibre GL, capable of rendering millions of points via WebGL. It ships as an embeddable React/Redux component with Python/Jupyter bindings on the side. Originally from Uber, it has been actively maintained and is a serious tool for analysts and developers who need interactive large-scale map exploration without building the rendering stack themselves.
- The rendering foundation is solid: deck.gl handles the GPU-accelerated layer rendering, which means arc layers, hexbin aggregation, and trip animations at scale actually work rather than grinding the browser to a halt.
- The dependency injection system via `injectComponents` and factory pattern is genuinely useful — you can replace any panel or UI element without forking the repo, which is not something most visualization libraries get right.
- The entire map state serializes cleanly through the schema manager, so save/load and shareable map configs are first-class features, not afterthoughts bolted on.
- Python bindings (`bindings/python`) let data scientists drop this into a Jupyter notebook without standing up a React app, which meaningfully expands where it can be used.
- The Redux coupling is a real cost: you must mount kepler.gl's reducer at a specific key in your store and wire up `react-palm` middleware. In 2026, forcing Redux on apps using Zustand, Jotai, or just Context is a genuine integration burden — the README even admits react-palm is something they want to remove but haven't.
- Despite migrating from mapbox-gl to MapLibre, the docs and README still tell you to get a Mapbox Access Token for base maps. That's confusing and adds an unnecessary account/billing dependency for what should be a fully open setup.
- Local dev setup has real friction: pinned to Node 20.19.3 via `.nvmrc`, yarn workspaces monorepo, and a native `gl` dependency that can fail to compile on newer Node versions — the DEVELOPERS.md has a whole troubleshooting section for it.
- The library is large and ships everything: if you only need point and polygon layers, you're still pulling in the full bundle with trip animations, H3, S2, raster tiles, WMS, and 3D tiles. There's no documented way to tree-shake down to just the layer types you need.