Custom features
tableFeatures({ densityFeature })Add state, options, and APIs through the same extension system used by built-in features.
A powerful engine for building Data Grids.
TanStack Table is a headless engine for sorting, pagination, filtering, faceting, grouping, aggregation, row expansion, row and cell selection, cell spanning, row and column pinning, column ordering, visibility, resizing, and more.
| Router docs | active | 98 | |
| Query cache | review | 94 | |
| Table filters | shipped | 91 | |
| Virtual lists | active | 88 |
Headless by design
Having 100% control of your code matters more than ever. TanStack Table supplies state and typed APIs without prescribing a single element or style. Use its built-in client-side processing or bring rows processed by your server, then render with any component library or design system, including your own.
TanStack Table handles
Headless table logic
You control
100% of the rendered result
Works with your stack
Use any component library or design system, including your own.
headless logic → your UIFine-grained state
Every registered state slice is backed by TanStack Store, whose fine-grained reactivity is built on alien-signals. Read selected state from table.state, create local subscription islands with table.Subscribe, or hand ownership to an external writable atom when the rest of the app needs it.
<table.Subscribe selector={(state) => state.sorting}>Move a reactive read to the smallest part of the tree that renders it.
Performance architecture
Every feature is independently tree-shakable, and table objects share feature methods in memory. Client-side row-model stages memoize derived work. When processing moves to the server, manual modes bypass those stages and consume the rows you provide.
01
Core
automaticdata to rows
02
Filter
createFilteredRowModel()column + global
03
Group
createGroupedRowModel()grouped rows
04
Sort
createSortedRowModel()ordered rows
05
Expand
createExpandedRowModel()visible sub-rows
06
Paginate
createPaginatedRowModel()current page
Composition and tooling
TanStack Table exposes its own architecture as a public toolkit. Extend it with typed features, package shared conventions into reusable table hooks and options, and inspect live instances with dedicated Devtools.
Custom features
tableFeatures({ densityFeature })Add state, options, and APIs through the same extension system used by built-in features.
Reusable tables
createTableHook({ features, ... })Share typed features, options, column helpers, and registered components across a product.
Devtools
useTanStackTableDevtools(table)Inspect table state and derived data in supported framework integrations instead of logging internals.
Sponsors get special perks like private discord channels, priority issue requests, and direct support!