@tanstack/table-core
Version:
Headless UI for building powerful tables & datagrids for TS/JS.
114 lines (78 loc) • 3.02 kB
Markdown
---
name: api-not-found
description: >
Diagnose missing TanStack Table v9 exports, options, state slices, and instance methods. Load before inventing an API when code sees a type error, undefined feature method, absent object key, adapter mismatch, or v8-shaped example.
metadata:
type: sub-skill
library: '@tanstack/table-core'
library_version: '9.0.0'
requires: ['core', 'table-features']
sources:
- 'TanStack/table:packages/table-core/src/index.ts'
- 'TanStack/table:packages/table-core/src/types/TableFeatures.ts'
- 'TanStack/table:docs/framework/react/guide/migrating.md'
---
This skill builds on `core` and `table-features`. Treat the installed package—not remembered docs—as exact API truth.
## Setup
```ts
import { readFile } from 'node:fs/promises'
const packageJson = JSON.parse(
await readFile('node_modules/@tanstack/table-core/package.json', 'utf8'),
)
const entrypoint = await readFile(
'node_modules/@tanstack/table-core/dist/index.d.ts',
'utf8',
)
console.log(packageJson.version, entrypoint.includes('rowSortingFeature'))
```
## Core Patterns
### Trace an export to source
```sh
rg "export .*rowSortingFeature|rowSortingFeature" node_modules/@tanstack/table-core/dist/
```
For an adapter API, start at `node_modules/@tanstack/<framework>-table/dist/index.d.ts`.
### Check feature gating before replacement
```ts
const features = tableFeatures({ rowSortingFeature })
```
If the export exists but the instance API does not, inspect `TableFeatures.ts` and the table's registry.
## Common Mistakes
### [CRITICAL] Substituting a remembered v8 API
Wrong:
```ts
const options = { getSortedRowModel: getSortedRowModel() }
```
Correct:
```ts
const features = tableFeatures({
rowSortingFeature,
sortedRowModel: createSortedRowModel(),
})
```
V9 moved row-model factories to named feature slots and renamed `get*` factories to `create*`.
Source: `docs/framework/react/guide/migrating.md#row-model-factories`
### [HIGH] Mistaking omitted feature for removal
Wrong:
```ts
const features = tableFeatures({})
```
Correct:
```ts
const features = tableFeatures({ columnVisibilityFeature })
```
Optional APIs and state are typed and installed from the concrete feature registry.
Source: `packages/table-core/src/types/TableFeatures.ts`
### [HIGH] Discovering methods through own keys
Wrong:
```ts
const methods = Object.keys(row).filter((key) => key.startsWith('get'))
```
Correct:
```ts
const value = row.getValue('name')
const prototype = Object.getPrototypeOf(row)
```
V9 shares many instance methods through prototypes, so spread, serialization, and `Object.keys` omit them.
Source: `docs/framework/react/guide/migrating.md#instance-methods-must-be-called-on-their-instance`
## API Discovery
Use this order: installed `package.json` version, installed adapter `dist/index.d.ts`, installed core `dist/index.d.ts`, then the exported implementation or feature directory. Prefer `dist/**/*.d.ts` (Ember: `declarations/**/*.d.ts`; Angular: `dist/types/*.d.ts`).