About table-features
A coding skill for configuring TanStack Table v9 features. It guides developers through feature registration, dependencies, and which references to consult for table behavior.
Key features
- 01Register optional table features
- 02Check feature prerequisites
- 03Choose references by task
- 04Inspect installed feature APIs
Use cases
- 01Adding sorting or filtering
- 02Choosing row-processing stages
- 03Finding why an API is unavailable
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ tanstack/ table --skill table-featuresAfter installing, type/table-featuresin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/aggregation.mdcell-selection.mdcell-spanning.mdclient-vs-server.mdcolumn-faceting.mdcolumn-filtering.mdcolumn-ordering.mdcolumn-pinning.mdcolumn-resizing.mdcolumn-sizing.mdcolumn-visibility.mdexpanding.mdglobal-filtering.mdgrouping.mdpagination.mdrow-pinning.mdrow-selection.mdsorting.mdDetails
From the project READMEFeature architecture
Read core first for the headless model and stable inputs.
Register the behavior the table uses
import {
createSortedRowModel,
rowSortingFeature,
sortFn_alphanumeric,
tableFeatures,
} from '@tanstack/table-core'
export const features = tableFeatures({
rowSortingFeature,
sortedRowModel: createSortedRowModel(),
sortFns: { alphanumeric: sortFn_alphanumeric },
})
Pass the stable features object to the installed adapter constructor. The concrete registry determines optional APIs, options, state slices, and their types. The core row model is automatic; a custom core model uses coreRowModel.
Registration rules
- Register each prerequisite feature before its dependent slot in the same
tableFeaturescall. A processing factory alone cannot install that feature's APIs or state. - Row-model factories use
create*RowModel()feature slots. Their names and prerequisites are in the feature reference. They take no function-registry arguments. filterFns,sortFns, andaggregationFnsare feature slots, not table options. They requirecolumnFilteringFeature,rowSortingFeature, androwAggregationFeature, respectively.- Import individual built-ins such as
sortFn_alphanumericand register their conventional keys. Those keys become typed string names;'auto'can resolve only registered functions. Pass a function directly when a column needs no named registry entry. Full registry exports bundle every built-in. columnResizingFeaturerequirescolumnSizingFeature;globalFilteringFeaturerequirescolumnFilteringFeature. Check installedFeatureSlotPrereqsfor other dependencies.- Use explicit features for normal construction.
stockFeaturesis a deliberate all-features convenience or temporary migration aid, with the corresponding bundle cost.
A missing API can mean missing registration. Check the concrete feature object before casting, recreating an API, or assuming v9 removed it.
Select references by the requested change
Read only references needed for the requested behavior and its dependencies, including features being added. An unrelated feature already registered on the table does not make its reference necessary.
| Task involves | Read |
|---|---|
| Manual modes, server data, mixed row-processing stages, or dataset scope | Client/server ownership |
| Totals, multiple aggregations, grouped aggregate values, or custom aggregate definitions | Aggregation |
| Facet option counts, numeric ranges, or incomplete server facets | Column faceting |
| Per-column filters, filter functions, metadata, or nested-row filtering | Column filtering |
| Group rows, placeholders, or grouping with expansion/pagination | Grouping |
| Drag ordering or leaf-column order differing from state | Column ordering |
| Sticky column regions, logical start/end, or pinning gaps | Column pinning |
| Drag resize handles, gesture events, or resize performance | Column resizing |
| Numeric widths, min/max limits, or model/CSS size mismatch | Column sizing |
| Hidden columns, visibility-aware rendering, or hiding controls | Column visibility |
| A search across columns or global-filter eligibility | Global filtering |
| Hierarchical subrows, detail panels, or expansion/page interaction | Expanding |
| Page slicing, counts, navigation, or page-index resets | Pagination |
| Top/bottom pinned rows or their visibility outside the current page | Row pinning |
| Rectangular cell selection, include/exclude ranges, or drag outlines | Cell selection |
| Merged body cells, covered cells, or spans changing with row order | Cell spanning |
| Row checkboxes, select-all, Shift ranges, or IDs across pages | Row selection |
| Sorting, comparators, undefined values, or sort interaction cycles | Sorting |
For controlled state or reset behavior, read shared state and load the installed adapter's state skill for reactive wiring.
Installed API discovery
Inspect node_modules/@tanstack/table-core/dist/types/TableFeatures.d.ts for slots and FeatureSlotPrereqs. Follow dist/features/<feature>/ for exact state, option, and instance declarations. Each reference names its feature directory.