Kepler.gl: A Redux-Bound Map Renderer for Large Geolocation Datasets
Kepler.gl is a powerful open source geospatial analysis tool for large-scale data sets.
At a glance
- What is it?
- Kepler.gl is a web-based geospatial analysis tool that renders millions of points and performs on-the-fly spatial aggregations. It is also a React component tied to Redux, which makes embedding it a specific architectural decision.
- Who is it for?
- Adopt kepler.gl if you need a browser-based tool that renders millions of points and performs spatial aggregations without a server, and if you are already using React and Redux. Do not adopt it if you want a standalone map viewer with no Redux dependency, or if you are on a Node version older than 20.19.3.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 14, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What Kepler.gl Solves and Who It Is For
Kepler.gl addresses the problem of visualizing large geolocation datasets directly in the browser. The README describes it as a data-agnostic, high-performance web-based application for visual exploration. It can render millions of points representing thousands of trips and perform spatial aggregations on the fly. That means you do not need to pre-aggregate data on a server before viewing it. The intended user is a developer who wants to embed a map-based analysis tool into a React application, or an analyst who uses the hosted demo or Jupyter widget. The project is not a general-purpose mapping library; it is a full analysis UI with layers, filters, and charts, built on top of MapLibre GL and deck.gl.
Architecture: Redux State, React Components, and Side Effects
The core design choice is that kepler.gl is both an application and a React component that uses Redux to manage its state and data flow. The README explicitly states that you must mount a reducer, `keplerGlReducer`, into your Redux store. It also requires the `taskMiddleware` from `react-palm` to handle side effects. The documentation notes that the team is working on a solution where `react-palm` is not required, but as of now it is a mandatory dependency. This means kepler.gl is not a drop-in component; it assumes you are already using Redux, or are willing to adopt it. The component instance is identified by an `id` prop, and its state lives under `state.keplerGl[id]`. If you mount the reducer at a non-standard path, you must pass a `getState` function to the component. This architecture gives you fine-grained control over the map state, but it also couples you to Redux's patterns.
Getting It Running: Commands, Tokens, and Reducer Setup
To use kepler.gl as a dependency, you install modules separately. The README shows `npm install --save @kepler.gl/components` or `yarn add @kepler.gl/components`. You also need a Mapbox Access Token, because kepler.gl is built upon Mapbox for base maps. The README states you must have a token to use it. For development of the repository itself, you need Node 20.19.3, as specified in `.nvmrc`; newer Node versions can cause `yarn install` to compile the `gl` dependency from source, which may fail. The basic usage involves two steps. First, add the reducer to your store: import `keplerGlReducer` and `enhanceReduxMiddleware` from `@kepler.gl/reducers`, then apply middleware with `enhanceReduxMiddleware([...])`. Second, mount the component: `import KeplerGl from '@kepler.gl/components'` and render `<KeplerGl id="foo" width={width} mapboxApiAccessToken={token} height={height} />`. If you do not use a bundler, you can load a precompiled UMD build from `https://unpkg.com/kepler.gl/umd/keplergl.min.js`.
The Redux and react-palm Coupling Is a Real Limitation
The most significant limitation is the mandatory Redux and react-palm setup. If your application does not already use Redux, you must introduce it solely for kepler.gl. The README acknowledges this by saying they are actively working on a solution where react-palm will not be required, but it is still a lightweight side effects tool. This is a maintenance burden: you need to understand Redux middleware, reducer composition, and how react-palm's task middleware works. For a simple map view, this is overkill. The documentation also notes that older Node versions are not supported or tested, which can be a problem if you are on a legacy LTS. Another limitation is the Mapbox token requirement. If you cannot obtain a token, you cannot render base maps, which defeats the purpose of a geospatial tool. The project is also in alpha releases (v3.3.0-alpha.8), so stability is not guaranteed for new features.
Alternative: Deck.gl Directly
A real alternative is to use deck.gl directly, without kepler.gl's UI layer. deck.gl is one of the underlying rendering libraries, and it can render millions of points as well. The difference in approach is that deck.gl is a low-level visualization framework that gives you control over layers and rendering, but you must build your own UI for filters, layer toggles, and data uploads. Kepler.gl provides that UI out of the box, along with Redux state management. If your project needs a custom interface or you want to avoid Redux, deck.gl is a better fit. You would use deck.gl's `ScatterplotLayer` or `ArcLayer` directly, and manage your own state with plain React or any state library. The trade-off is development time: you build the analysis controls yourself, but you avoid the coupling that kepler.gl imposes.
Maintenance and Upgrade Cost
The repository has a default branch of `master` and recent pushes, indicating active maintenance. However, the version numbers are alpha releases (v3.3.0-alpha.8), which suggests that the project is in a pre-release phase for the 3.3 series. Upgrading between alpha versions may introduce breaking changes, especially in the reducer API or component props. The README does not provide a migration guide, so you would need to check the changelog or release notes on GitHub. The license is MIT, which means you can use it in commercial projects without paying royalties, but you must retain the copyright notice. There are no explicit maintenance costs mentioned, but the Redux middleware and react-palm dependency mean that when those upstream libraries change, you may need to update your integration. The UMD build is available for quick testing, but for production, you would likely bundle the modules, which requires a module bundler.
Editorial conclusion
Adopt kepler.gl if you need a browser-based tool that renders millions of points and performs spatial aggregations without a server, and if you are already using React and Redux. Do not adopt it if you want a standalone map viewer with no Redux dependency, or if you are on a Node version older than 20.19.3. Before committing, verify that your Mapbox token is available, that your data fits the client-side aggregation model, and that the alpha releases (v3.3.0-alpha.8) do not introduce breaking changes for your use case. The project is actively maintained, but the Redux and react-palm requirements are a real cost that you must accept.
Community notes