Open-source project
Kanaries/graphic-walker avatar
Kanaries/graphic-walker

Graphic Walker: an embeddable React alternative to Tableau

An open source alternative to Tableau. Embeddable visual analytic

3,258 stars190 forksTypeScriptApache-2.0

At a glance

What is it?
Graphic Walker is a TypeScript visual analytics component from Kanaries that drops into a React app, builds vega-lite charts from drag-and-drop or a hand-written spec, and runs its aggregation in web workers. It is not a BI platform, and the README says so.
Who is it for?
Adopt Graphic Walker when you are building a React product and need exploratory charting inside it, and you already have a data source to hand it. Skip it if you need a hosted BI platform with connectors, scheduling and access control: the README describes a plugin, and the standalone deployment path is a yarn workspace build rather than a server.
Can I use it commercially?
Yes. Apache-2.0 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 7 days 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 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The problem Graphic Walker solves is embedding, not dashboarding

Most open source analytics tools are applications. You install them, point them at a database, and your users log into someone else's UI. Graphic Walker takes the opposite position. Its README states the original purpose "is not to be a heavy BI platform, but a easy to embed, lite, plugin", and the primary distribution channel is npm rather than a container image. The audience is therefore a React developer who needs their own users to explore a table of data without leaving the product.

The interaction model borrows from Tableau deliberately. Columns are classified as dimensions or measures, measures get an aggregation such as sum, mean or count, and fields are dragged into visual channels: rows, columns, color, opacity. Putting more than one measure into rows or columns produces a concat view; putting a dimension there produces facets. Anyone who has used Tableau will recognize the grammar. Anyone who has not will need to learn it, and the README does not present a simpler mode.

How the data flows: a parsed table in, a vega-lite spec out

Graphic Walker does not connect to your warehouse. The README is explicit that you pass it parsed data, and that its own upload screen accepts csv or json only, with a note that more data source types are under development. If you need connectors, the README points at Rath, which uses Graphic Walker as an embedded component and handles loading and cleaning before handing the table over. The boundary is the point: the component owns the visual grammar, not the ingestion.

Underneath, the chart layer is based on vega-lite, and the project describes the interface as "a grammar of graphics based visual analytic user interface where users can build visualizations from low-level visual channel encodings". Computation runs in web workers, which is what allows the README to describe a pure front-end mode with no server round trip. For heavier queries the README mentions a general query interface for submitting to your own computation service, and cites PyGWalker's use of DuckDB as the reference implementation of that pattern. So there are two shapes: everything in the browser, or the browser plus a service you write.

Two features sit outside the drag-and-drop path. The Data Explainer takes a question like why a value is lower than expected and returns candidate explanations, with the README showing a bike-sharing example where the percent of working days below average is surfaced as a factor. Spatial visualization accepts GeoJSON and TopoJSON. Both are documented as capabilities rather than with algorithm details, so treat the explainer as a suggestion generator rather than a statistical test.

Installing Graphic Walker and rendering a first chart

The repository is a yarn workspace, and the root package.json declares an engine requirement of Node >=20.0.0, so check that first. To build the standalone app from a clone, the README gives two commands: install at the root, then build the workspace package.

bash
yarn install

yarn workspace @kanaries/graphic-walker build

The workspace build script in the root package.json is the same command, exposed as yarn build. Note that the root package is private and its dependencies object is empty; the real package lives under packages/, which is why the build is addressed through the workspace name rather than run from the root directory.

For embedding, install the published package. The README gives both package managers.

bash
yarn add @kanaries/graphic-walker

# or

npm i --save @kanaries/graphic-walker

Then import the single component. The README's example begins with the import line and the component name; the full prop list is truncated in the README text, so read the package's own documentation before wiring it up.

typescript
import { GraphicWalker } from '@kanaries/graphic-walker';

What you should expect after that: a field list on the left holding your original columns, and visual channels you drag them into. There is also a hand-written chart spec format called TerseSpec, which the README describes as describing charts with field names and an agg(field) shorthand that is then expanded with normalize(). That is the escape hatch when drag-and-drop is too slow to reproduce.

If you do not want to build anything, the README points to a hosted version at graphic-walker.kanaries.net and a separate examples page on the same domain.

Where Graphic Walker is the wrong tool

The clearest limitation is stated by the project itself: it is not a BI platform. There is no mention in the README of saved dashboards shared across users, scheduled refresh, row-level permissions, or a server that other people log into. Persistence is manual. The README says that when you finish exploring you can save the result into a local file and import it next time. That is a fine workflow for one analyst and a poor one for a team that expects a shared dashboard URL.

Data volume is the second boundary. Because computation is pushed into web workers for the pure front-end mode, the practical ceiling is whatever the browser tab can hold. The README does not publish a row limit, and it does not document a failure mode when a dataset is too large. If your table does not fit comfortably in memory, the query-interface path exists but you have to build the service behind it; the README does not ship one.

Third, the embedding contract is React. The package is TypeScript, the example is a React component, and the README frames the whole product around that. If your front end is Vue, Svelte or server-rendered templates, there is no documented wrapper, and you would be mounting a React root inside a foreign framework. That is possible but it is not what the documentation supports.

Finally, expect the API surface to move. The release history shows frequent patch releases, with v0.4.82 on 2026-04-30 and v0.4.83 and v0.4.84 both on 2026-05-19, and the last push to the repository was on 2026-09-08. A pre-1.0 version number plus that cadence means you should pin the version and read the changelog before upgrading.

Graphic Walker versus PyGWalker and the notebook path

The most useful comparison is not Tableau, it is the project's own sibling. PyGWalker wraps the same visual grammar for Jupyter, and the README cites it as the example of how to route queries through DuckDB. The difference is where the state lives. In PyGWalker the dataframe is already in the notebook kernel and the output is a cell; in Graphic Walker the data has to be handed to a component inside your application, and the result is part of your UI. If your analysis happens in a notebook and stops there, PyGWalker is the shorter path and you never touch a bundler. If the analysis has to appear inside a product your users already log into, Graphic Walker is the one that fits, and you inherit the build, the version pinning and the data plumbing that the notebook version hides from you.

The same split applies against Rath. Rath is a full application that embeds Graphic Walker for its visualization layer and adds data loading and cleaning around it. Choosing Rath means accepting its shell; choosing Graphic Walker means writing your own.

Licence, maintenance and upgrade cost

Graphic Walker is Apache-2.0, and the repository carries both a LICENSE and a LICENSE2 file at the top level. The root package.json also declares "license": "Apache 2.0". Apache-2.0 is a permissive licence with an explicit patent grant, which is generally the reason a company can embed a component like this in a closed product without publishing its own source. Check LICENSE2 yourself, since the README does not explain why two licence files exist, and this is not legal advice.

The maintenance signal is mixed in a specific way. The repository is not archived, and the last push was on 2026-09-08, which is recent. The most recent tagged release, however, is v0.4.84 from 2026-05-19, roughly four months earlier. That gap between commits and releases is normal for a project that batches tags, but it means the published npm package may lag the main branch. If you depend on something you saw in the repository, confirm it is in the released version.

Upgrade cost is the pre-1.0 version number. There is no documented deprecation policy in the README, and no migration guide is mentioned. Pin the exact version in your lockfile, and treat each minor bump as something to test against your own data rather than a drop-in.

Editorial conclusion

Adopt Graphic Walker when you are building a React product and need exploratory charting inside it, and you already have a data source to hand it. Skip it if you need a hosted BI platform with connectors, scheduling and access control: the README describes a plugin, and the standalone deployment path is a yarn workspace build rather than a server. Before committing, check that the published @kanaries/graphic-walker version matches the repository you are reading, and confirm your Node version satisfies the root package.json engine field of >=20.0.0.

Frequently asked questions

Is Graphic Walker a free alternative to Tableau?

It is free to use under Apache-2.0, and the README describes it as an open source alternative to Tableau. The difference is scope: it is an embeddable React component rather than a BI platform you deploy and log into.

What is the best free data visualization software?

That depends on whether you need an application or a component. Graphic Walker is aimed at developers who want to embed visual analytics into a React app, and the README also points to a hosted online version at graphic-walker.kanaries.net if you only want to explore a csv or json file.

What is the best data visualization library?

Graphic Walker is a library in the sense that you install @kanaries/graphic-walker and import a single React component, but it ships a full drag-and-drop interface rather than chart primitives. Its chart layer is based on vega-lite, so if you want low-level primitives that is the layer to look at instead.

What is the best open source tool for data visualization?

The README positions Graphic Walker as a lite plugin rather than a heavy BI platform, so it fits when the visualization has to live inside your own app. If you need data loading and cleaning as well, the README points to Rath, which embeds Graphic Walker and handles those steps.

Official sources

  1. Kanaries/graphic-walker on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/kanaries-graphic-walker.svg)](https://hysenlabs.com/projects/kanaries-graphic-walker)