Table
The data-grid logic, without the data-grid component.
Table is a headless engine for rows, columns, sorting, filtering, grouping, selection, pagination, and controlled state—without a data-grid component attached.
| Router docs | active | 98 | |
| Query cache | review | 94 | |
| Table filters | shipped | 91 | |
| Virtual lists | active | 88 |
Row-model pipeline
Compose behavior instead of buying a grid monolith.
Start with core rows, then opt into only the transformations the product needs. Each row model has one job, a visible input, and a visible output.
Core
getCoreRowModel()8 rows
Filter
getFilteredRowModel()5 rows
Sort
getSortedRowModel()5 rows
Page
getPaginationRowModel()4 rows
Headless rendering
One engine. Whatever surface the job calls for.
Column definitions and row models describe behavior, not elements. Feed the same model into semantic rows, responsive cards, or a dense operational view.
Table
Owns columns, row models, feature state, and the data handed to your renderer.
Virtual
Measures the scroll surface and limits which rows or columns are mounted. Pair it with Table when rendering volume demands it.
State ownership
Control exactly the state that has somewhere else to be.
Let Table manage state until another part of the product needs it. Then lift only sorting, filters, selection, visibility, or pagination into the component, URL, or server.
navigate({ search: { sort } })Shareable, restorable state for product navigation.