Decision. Four candidates are actually alive and safe to start a 2026 project on: TanStack Table (headless — pick it when the table is your product UI and you accept writing the chrome yourself)[4], AG Grid (pick it when the table is the application — pivot, master/detail, server-side row model — and $999/dev is cheaper than three engineer-months)[10], MUI X Data Grid (pick it if you already ship Material UI; Pro is $299/dev/yr)[14], and react-data-grid (the free, batteries-included, React-19-only outsider — with the asterisk that it has never shipped a stable v7)[31].
Do not start new work on Mantine React Table (v2 frozen in beta since Feb 2025, stable v1 still pins Mantine 6)[19] or Glide Data Grid (last stable Feb 2024, React 19 peer-dep issue open 17 months)[23].
The real axis is not features — it is how much table you agree to write. Headless costs you the entire UI layer plus a virtualizer; a commercial grid costs money and a design-system fight.
The three-way architectural split
Every candidate sits in exactly one of three buckets, and the bucket — not the feature matrix — is the decision.
| Bucket | What ships | What you write | Candidates |
|---|---|---|---|
| Headless logic library | Row models, state machines, type-safe column defs. Zero DOM, zero CSS.[4] | <table> markup, every cell/header renderer, sticky headers, resize handles, pagination controls, virtualization, empty/loading states, export. |
TanStack Table; shadcn/ui "data table" is a recipe on top of it, not a component[17] |
| Batteries-included component | A styled, virtualized grid you configure with props. Opinionated look. | Column definitions, data fetching, a handful of custom cell renderers. | MUI X Data Grid, react-data-grid, RevoGrid, Material/Mantine React Table |
| Full commercial grid | Everything above plus pivot, aggregation, master/detail, server-side row model, Excel export, integrated charts — behind a paywall.[11] | Config. And a purchase order. | AG Grid Enterprise, Handsontable, MUI X Premium |
shadcn/ui is not a fourth bucket — it is TanStack Table with the markup written for you once, then handed over. Its docs say so explicitly: "instead of a data-table component, I thought it would be more helpful to provide a guide on how to build your own."[17] That is genuinely useful — it removes the first two days of the headless tax — but you own every line from then on. shadcn/ui ⭐ 119k (Jul 2026)[18].
Candidate matrix
| Library | ⭐ Stars | Latest stable | Weekly dl | Bucket | Licence | React 19 | Bundle (gzip) | Verdict |
|---|---|---|---|---|---|---|---|---|
| TanStack Table | ⭐ 28k | 8.21.3 — Apr 2025; v9.0.0-beta.47 Jul 2026[2][3] | 15.9M[3] | Headless | MIT | ✓ (peer >=16.8)[3] |
~15 KB core; ~30 KB realistic with your UI + virtualizer[32][33] | Default for product UI. ⚠ v8 stable frozen 15 months while v9 churns. |
| AG Grid | ⭐ 15k | 36.0.0 — Jun 2026[8] | 2.9M (community) | Commercial grid | MIT core / $999+/dev Enterprise[10] | ✓ since 34.3[8] | ~330 KB community; +~200 KB Enterprise[32][33] | Buy it when the grid is the app. |
| MUI X Data Grid | ⭐ 5.8k | 9.9.0 — Jul 2026[15] | 2.4M[15] | Batteries → commercial | MIT core / $299–$1,399/dev/yr[14] | ✓ (peer ^19)[15] |
~121 KB[32] | Only if you already run Material UI. |
| react-data-grid | ⭐ 7.7k | none — 7.0.0-beta.60, Jul 2026[31] | 370k[31] | Batteries | MIT | ✓ — and only 19.2+[31] | — | Free virtualized grid, zero deps. ⚠ Perpetual beta; drops React 18.[30] |
| Handsontable | ⭐ 22k | 18.0.0 — Jun 2026 | 276k | Commercial grid | Not open source; free tier is non-commercial only; $999+/dev[25][26] | ✓ | — | Spreadsheet-first. Stars predate the licence flip — don't read them as OSS signal.[27] |
| RevoGrid | ⭐ 3.4k | 4.23.22 — Jul 2026[29] | 25k[29] | Batteries | MIT | ✓ | — | MIT + 1M rows + Excel-ish editing is a real niche. ⚠ Web-component/Stencil wrapper; tiny adoption; single-vendor bus factor.[28] |
| Glide Data Grid | ⭐ 5.3k | 6.0.3 — Feb 2024[24] | 490k | Batteries (canvas) | MIT | ✗ peer caps at 18.x; issue open since Feb 2025[23] |
— | ⚠ Stalled. Canvas rendering is still the fastest thing here[22], but two years without a stable release is a hard no for new work. |
| Mantine React Table | ⭐ 1.1k | 1.3.4 — Nov 2023 (pins Mantine 6)[20] | 92k | Batteries | MIT | ⚠ v2 beta only | — | ⚠ Effectively dead: v2 stuck at beta.9 since Feb 2025.[19] |
| Material React Table | ⭐ 1.8k | 3.2.1 — Mar 2025[21] | 361k | Batteries | MIT | ✓ (peer >=18) |
— | The healthier sibling, but same single author as MRT and TanStack Table — correlated bus factor.[7] |
| ReactGrid | ⭐ 1.7k | 4.1.17 — Apr 2025[35] | 59k | Batteries | MIT | ✗ peer caps at ^18 |
— | Spreadsheet also-ran; v5 alpha-only. Skip. |
Stars, open issues and last-push dates read from the GitHub REST API on 2026-07-13; versions and download counts from the npm registry the same day.
How much of the table do you end up writing?
This is the tradeoff the feature matrices hide. TanStack Table's own docs are blunt about the deal: "Table gives you the math and state. Your app keeps the elements, classes, interactions, density, empty states, and brand-specific details… Virtualization stays your choice. Pair with TanStack Virtual ⭐ 7.0k (Jul 2026)."[4][34]
| Capability | TanStack Table (+shadcn) | MUI X Data Grid | AG Grid | react-data-grid |
|---|---|---|---|---|
| Sort / filter / paginate logic | ✓ built in[4] | ✓ | ✓ | ✓ |
| Sort / filter / paginate UI | ✗ you write it | ✓ | ✓ | ✓ |
| Row virtualization | ✗ add TanStack Virtual[34] | ✓ | ✓ | ✓[30] |
| Column resize / reorder handles | state only, ✗ DOM | ✓ | ✓ | ✓ |
| Frozen / pinned columns | state only, ✗ DOM | ✓ | ✓ | ✓[30] |
| Cell editing + copy/paste | ✗ you write it | ✓ | ✓ | ✓[30] |
| Row grouping / aggregation | logic ✓, UI ✗ | Pro/Premium[14] | Enterprise[11] | ✓ (tree data)[30] |
| Pivot / master-detail / server-side row model | ✗ | Premium[14] | Enterprise[11] | ✗ |
| Excel export | ✗ | Premium | Enterprise[11] | ✗ (CSV-ish DIY) |
| Natural-language / AI control | ✗ | ✓ v9 AI Assistant[13] | ✓ v36 AI Toolkit[9] | ✗ |
| Matches your design system | ✓ by construction | only if you're MUI | theming fight | light/dark, then CSS vars |
Read the ✗ column as a schedule. Sticky header + resize handles + a virtualizer + a filter popover + selection UX + keyboard nav + an empty state is not an afternoon; it is the reason the shadcn recipe exists, and the recipe only covers the first slice.[17] The honest framing: headless is cheap in bytes and expensive in weeks (~30 KB realistic[33]); AG Grid is expensive in bytes and dollars and cheap in weeks (~330 KB gzip before Enterprise[32]).
Maintenance state — the part that decides for you
TanStack Table: healthy project, awkward moment
28k stars and 15.9M weekly downloads[3], but the latest dist-tag has been 8.21.3 since April 2025 while every release since is a v9 beta — beta.47 landed the morning of this writeup.[2] The lead maintainer said publicly he could not give the project much time in 2025 and that shipping v9 in 2026 "is going to be a challenge."[5] Two named maintainers[7], inside a TanStack org with 16 funding partners and a paid-maintainer model[6] — so the org isn't going anywhere, but Table specifically is thin.
Adopt v8 today, not v9. v9 is genuinely better — TanStack Store under the hood, granular subscriptions, opt-in tree-shakable feature plugins (~6–7 KB for a small table vs 15–20 KB on v8), real devtools — and it exists partly because v8's state patterns are incompatible with React Compiler.[1] That last point matters if you're turning on the compiler. But it's beta, the API is different enough to need a migration, and the migration guide is on the beta docs. ⚠ Budget for a v8→v9 port in the next 12 months.
AG Grid: the only candidate with a boring release train
v34.3 (Oct 2025) → v35.0 (Dec 2025) → v35.1 (Feb 2026) → v36.0 (Jun 2026): a major roughly every six months, plus a v32 LTS tag on npm.[8] 141 open issues on a 15k-star repo, pushed daily.[12] That is what a company-funded grid buys you. v36's headline is calculated columns plus an AI Toolkit that lets an LLM drive filter/sort/group.[9]
MUI X: healthy, but the licence moved under you
v9.9.0 shipped 2026-07-09[15]; MUI X and Material UI now share a major version, and the Data Grid got an AI Assistant, in-grid charts and default keyboard nav.[13] ⚠ Two things to price in: the ~1,695 open issues across the mui-x monorepo[16], and the April 2026 licensing change — Pro/Premium are counted per concurrent front-end developer, priority support is now Enterprise-only, and upgrading v8→v9 is what triggers the new prices.[14]
The stalled ones
- Glide Data Grid ⭐ 5.3k — last stable release 6.0.3, February 2024; everything since is
6.0.4-alpha*.[24] The published peer range still stops at React 18, and the React 19 issue has been open since Feb 2025.[23] The canvas renderer remains the best answer for a million-cell spreadsheet feel[22] — but you'd be adopting a snapshot, with--legacy-peer-deps. - Mantine React Table ⭐ 1.1k — stable is 1.3.4 from November 2023, pinned to
@mantine/core ^6.0; v2 has sat at beta.9 since Feb 2025.[20][19] If you're on modern Mantine, this library cannot be installed cleanly. Its MUI sibling Material React Table ⭐ 1.8k is healthier (3.2.1, Mar 2025)[21] — but note both, plus TanStack Table itself, share one author.[7] That's a correlated bus factor across three of your options. - ReactGrid ⭐ 1.7k — 4.1.17 (Apr 2025), peer React ≤18, v5 alpha-only.[35]
React 19, RSC and the App Router
Short version: there is no RSC-native data grid in 2026, and there won't be one. Every candidate is stateful and event-driven, so every candidate lives below a "use client" boundary — the shadcn recipe marks both the columns file and the DataTable component as client components.[17] The App Router question is therefore not "does it support RSC" but "how much serializable data am I pushing across the boundary", and that's a data-fetching design problem, not a library-selection one.
What does differ is the React 19 peer story:
| Library | Declared React peer range | Consequence |
|---|---|---|
| TanStack Table v8/v9 | >=16.8[3] | ✓ Installs anywhere. v9 additionally targets React Compiler compatibility.[1] |
| AG Grid 36 | ^16.8 || ^17 || ^18 || ^19[8] | ✓ React 19.2 supported since 34.3. |
| MUI X Data Grid 9 | ^17 || ^18 || ^19[15] | ✓ |
| react-data-grid 7 beta | ^19.2 only[31] | ⚠ React 19.2+ mandatory — a blocker on React 18 apps, a non-issue on greenfield. |
| Glide Data Grid 6.0.3 | ^16.12 || 17.x || 18.x[24] | ✗ Peer conflict on React 19; needs an override.[23] |
| RevoGrid 4.x | web component + React wrapper[28] | ✓ but ⚠ custom-element SSR needs care in the App Router. |
TypeScript quality
All four live candidates are TS-first. The differentiator is inference: TanStack Table's ColumnDef<TData, TValue> generics propagate your row type through accessors, cell renderers and filter fns — which is exactly why v9 fought hard to keep type safety while making features pluggable.[1] react-data-grid ships TS types with zero external dependencies[30], which is the cleanest dependency footprint of the batteries-included group. AG Grid and MUI X are typed but configuration-object-shaped — you get autocompletion, not row-type inference into every cell.
Picking
- Product UI table, bespoke design system, ≤ a few thousand rows → TanStack Table v8 + TanStack Virtual, seeded from the shadcn recipe. Accept ~1–3 weeks of chrome.[17][34]
- Internal tool, need it Tuesday, already on MUI → MUI X Data Grid; escalate to Pro ($299/dev/yr) only when you actually hit row grouping.[14]
- Internal tool, no design system, want free + batteries → react-data-grid 7 beta, if you're on React 19.2+.[31]
- The grid IS the product (pivot, master/detail, server-side rows, Excel) → AG Grid Enterprise. $999/dev is one week of an engineer.[10]
- Spreadsheet semantics (formulas, ranges, fill handle) → Handsontable, but budget for the licence: it is not open source and the free tier is non-commercial.[25][26] RevoGrid is the MIT alternative if you can live with a 25k-download/week bus factor.[29]