TanStack Table

Headless, type-safe tables and datagrids for React, Vue, Solid, and more.

Library
npm
v9.1.2
28,347stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
93/100Excellent
Development Activity100
Maintenance96
Community76
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
85/100Excellent
Architecture92
Code Quality76
Innovation88
Learning Curve82

TanStack Table is a headless, TypeScript-first library for building tables and datagrids. It ships zero UI markup and instead computes state and row/column/header models for you to render however you like — HTML tables, divs, or any component library — while handling sorting, filtering, grouping, pagination, row selection, and column sizing/pinning as opt-in plugins.

What You Get

  • A framework-agnostic core (@tanstack/table-core) plus adapters for React, Vue, Solid, Svelte, Angular, and Qwik that all share the same API
  • Opt-in feature plugins for sorting, column/global filtering, grouping, row/column pinning, column sizing, expanding, pagination, and row selection
  • Full TypeScript generics so column value types, accessors, and cell renderers are inferred end-to-end with no codegen step
  • flexRender() and a fully headless rendering model, so you control every DOM element and can style with Tailwind, CSS Modules, or any component library
  • Composable row/column/header models (getCoreRowModel, getSortedRowModel, getFilteredRowModel, etc.) that you assemble a la carte to keep bundle size tied to what you use

Common Use Cases

  • Building an admin dashboard datagrid with sortable, filterable, paginated columns without shipping a heavyweight UI kit
  • Adding client-side or server-side pagination and sorting to a data table backed by a REST or GraphQL API
  • Implementing row selection with checkboxes for bulk-action toolbars (delete, export, assign)
  • Rendering expandable/nested rows for hierarchical data (org charts, nested line items, grouped transactions)
  • Building a spreadsheet-like editable grid with per-cell editing and controlled column sizing/pinning

Under The Hood

Architecture TanStack Table’s architecture cleanly separates a framework-agnostic core (@tanstack/table-core) from thin per-framework adapters (@tanstack/react-table, vue-table, solid-table, etc.). The core’s createTable() (packages/table-core/src/core/table.ts) composes a fixed list of built-in TableFeature plugins — Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting, GlobalFiltering, RowSorting, ColumnGrouping, RowExpanding, RowPagination, RowPinning, RowSelection, and ColumnSizing (table.ts:41-57) — each contributing its own state slice, default options, and instance methods via a shared TableFeature interface (packages/table-core/src/features/*.ts). Rows, columns, cells, and headers (packages/table-core/src/core/{row,column,cell,headers}.ts) are lazily computed and memoized into row models so re-renders only recompute what changed. The React binding (packages/react-table/src/index.tsx) is intentionally thin: useReactTable() wraps createTable() in a single useState ref, mirrors table state into React state via onStateChange, and re-merges user-controlled state on every render — the framework adapter owns none of the table logic itself.

Tech Stack The published 8.21.3 line is pure TypeScript with zero runtime dependencies outside the internal @tanstack/table-core workspace package (packages/react-table/package.json) — no DOM libraries, no rendering engine, and no CSS. table-core builds via Rollup with a separate tsc —noEmit type-check step, and the monorepo is orchestrated with pnpm workspaces plus Nx (test:lib, test:types, build targets). Tests run on Vitest (packages/table-core/tests/.test.ts, packages/react-table/tests/**/.test.tsx). The public API is fully typed via TypeScript generics (RowData, ColumnDef<TData>), giving column-value type inference end-to-end without codegen.

Code Quality Test coverage is present but modest relative to the codebase’s size: table-core’s tests/ directory (RowSelection.test.ts, RowPinning.test.ts, getGroupedRowModel.test.ts, utils/document.test.ts) covers roughly 674 lines against ~8,450 lines of core source, and react-table adds a handful of integration tests (core.test.tsx, RowSelection.test.tsx, Visibility.test.tsx) with snapshot coverage. Error handling is minimal by design — the library trusts caller-supplied column defs and data rather than validating them at runtime, leaning on TypeScript to catch misuse at compile time instead. Naming is consistent across the whole surface (getRowModel, use, on*Change), and the plugin/feature pattern keeps each concern in its own file, which limits blast radius when reading or modifying a single feature.

API Design Getting started requires a single hook call — useReactTable({ data, columns, getCoreRowModel: getCoreRowModel() }) — after which every other feature (sorting, filtering, pagination) is opted into by adding one more getXRowModel() function, keeping API surface proportional to what’s actually used. Because the library is headless, there is real boilerplate: consumers must write their own table/row/cell markup and wire flexRender() for header/cell content, which raises the initial learning curve compared to a batteries-included datagrid. In exchange, naming is highly consistent (table.getHeaderGroups(), row.getVisibleCells(), column.getCanSort()) and documentation plus dozens of runnable examples under examples/react cover nearly every feature combination, offsetting the extra setup work once a developer is past the first table.

Used by 101 apps in this directory

TypeScript
99%
Other

Activepieces

Automation · AI Assistants

23,887

Open-source AI automation platform that converts 280+ workflow integrations into MCP servers for LLMs, with no-code builders and TypeScript extensibility.

View details
92
Repo Health
85
Technical
65
Dependency
Built with
TypeScript99%
Updated today
TypeScript
88%
Other

AFFiNE

Productivity · Project Management · Note Taking

71,668

Write, draw, and plan in one infinite canvas — the open-source alternative to Notion and Miro that keeps your data yours.

View details
91
Repo Health
87
Technical
68
Dependency
Built with
TypeScript88%
Updated today
Python
66%
Apache 2.0

Agent Control

AI Agents

295

An open-source runtime control plane for AI agents — define safety guardrails once, apply them across agents built on LangChain, CrewAI, Google ADK, or AWS Strands, and update controls without redeploying code.

View details
79
Repo Health
71
Technical
70
Dependency
Built with
Python66%
TypeScript33%
Updated yesterday
Python
90%
Apache 2.0

Apache Airflow

Data Engineering

46,530

Define, schedule, and monitor complex data workflows as Python code — with a powerful UI, 80+ provider integrations, and battle-tested scalability across thousands of production deployments.

View details
96
Repo Health
89
Technical
66
Dependency
Built with
Python90%
Updated today
TypeScript
84%
MIT

Amical

Note Taking · AI Assistants

1,495

Local-first AI dictation that understands your active app — private, offline, and built for speed.

View details
79
Repo Health
82
Technical
67
Dependency
Built with
TypeScript84%
Updated 3 weeks ago
Python
68%
Other

AutoGPT

Automation · Productivity · AI Assistants

186,687

Build, deploy, and run autonomous AI agents that automate complex multi-step workflows using a visual block-based graph editor.

View details
93
Repo Health
78
Technical
67
Dependency
Built with
Python68%
TypeScript31%
Updated today
TypeScript
49%
AGPL 3.0

BrowserOS

Browser · AI Assistants

13,248

The open-source agentic Chromium browser with native AI agents, MCP server, and visual workflow automation — your data never leaves your machine.

View details
87
Repo Health
82
Technical
69
Dependency
Built with
TypeScript49%
Rust22%
Python16%
Updated today
Java
73%
Other

ByteChef

Automation · AI Agents

990

Unified open-source platform for AI agent orchestration and workflow automation with 180+ connectors, MCP support, and durable execution.

View details
81
Repo Health
82
Technical
73
Dependency
Built with
Java73%
TypeScript26%
Updated 2 days ago
TypeScript
96%
Other

Cal.diy

Scheduling

47,796

The 100% MIT-licensed, community-driven scheduling platform — self-host your own booking infrastructure with no enterprise strings attached.

View details
93
Repo Health
86
Technical
66
Dependency
Built with
TypeScript96%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search