@adapttable/core
v2.1.2
Published
Headless, UI-agnostic React data table engine — state, URL sync, virtualization, prop-getters, and a unified client/server TableSource. Zero UI-kit imports.
Downloads
2,849
Maintainers
Readme
@adapttable/core
📖 Documentation · 🚀 Live demo · Get started · ⚡ Try in StackBlitz
Migrating from TanStack Table? See the migration guide.
The headless engine behind AdaptTable —
a UI-agnostic React data table. Zero UI-kit imports: state, hooks,
prop-getters, and a unified client/server TableSource contract.
pnpm add @adapttable/core reactYou usually want a styled adapter on top (@adapttable/mantine,
@adapttable/mui, @adapttable/chakra, @adapttable/unstyled). Reach for
@adapttable/core directly when you want to render your own markup with full
control via prop-getters.
Features
- Automatic mobile cards — the engine resolves the layout by viewport and every adapter renders rows as cards below the mobile breakpoint, state intact;
forceMobile,mobileLabelandhideOnMobiletune it. Docs. - Client or server data through one
TableSourcecontract — same props either way. - URL-synced search / sort / filters / page — shareable, deep-linkable links.
- Pagination — paged or infinite scroll via
paginationMode; server sources report their own totals, client sources derive them. - Sorting — comparator resolution, multi-key
sortValue, accessible header state. - Filtering — filter model, operators, chips and counts; bring your own predicate.
- Selection + bulk actions — ids, tri-state select-all, and the bulk-action contract.
- Row actions with optional confirm,
isHidden/isDisabledper row. - Row expansion — detail-panel state via
renderRowDetail. - Inline cell editing —
onCellEditpluseditablecolumns; text, number and select editors, keyboard commit/cancel, Tab advance. Omit the handler and no cell opens. - Row grouping —
groupBywith per-group aggregates sharing thesummaryRowmapper. - Column management — show/hide, reorder, pin (sticky) and resize state.
- Saved views — name a filter/sort/column arrangement and switch between them.
- CSV export (
exportCsv) — current page or the full filtered set. - Virtualization (
virtualize) — row/card windowing for very large lists. - RTL and i18n-agnostic labels — pass
labelsor atfunction. - Headless — hooks and prop-getters only. No components, no styling, no UI-kit imports.
See it work
One dataset, re-rendered by each adapter — these clips are the cross-kit tour.
Row grouping — group rows by a column with per-group subtotals

Inline cell editing — double-click a cell; text, number and select editors

Filtering — type a bound and the table answers as you type

Column management — show, hide, reorder, pin and resize

RTL — the whole table mirrors, not just the text

Documentation
Getting started · Live demo · Comparison vs ag-Grid · MUI X · TanStack
- Data — client vs server tiers · pagination & infinite scroll · URL-synced state
- Interaction — filtering · sorting · selection & bulk actions · row expansion · inline cell editing
- Columns — show/hide · reorder · pin · resize · row grouping & aggregates · CSV export
- More — i18n & RTL · virtualization · customization · API · FAQ

