
Table State
Read and control Table v9 state in octane.
Install
npx skills add TanStack/table --skill table-state -g -a claude-code -y- Repository
- TanStack/table28.5k
- Category
- Engineering
- Updated
- 14d ago
- License
- MIT
- Context cost
- Lightabout 590 tokens
- Runs scripts
- No, instructions only
What it does
Read and control Table v9 state in octane. Use for tracked reads, subscriptions, controlled slices, and framework-specific reactive boundaries.
Load intent load @tanstack/table-core#table-state first for shared ownership, initialization, updater, and reset rules.
useTable selects all registered state by default. Its second argument changes the selected shape exposed as table.state and shallow-gates owner rerenders. Atom .get() and table.store.state reads are snapshots; use selected state or a rendered table.Subscribe to update the UI.
Controlled slice setup
import { useState } from 'octane'
import {
rowPaginationFeature,
tableFeatures,
useTable,
} from '@tanstack/octane-table'
const features = tableFeatures({ rowPaginationFeature })
const columns = [{ accessorKey: 'name' }]
const data = [{ name: 'Ada' }]
function PageStatus() @{
const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 20 })
const table = useTable({
features,
columns,
data,
state: { pagination },
onPaginationChange: setPagination,
})
<button onClick={() => table.nextPage()}>
Page {String(table.state.pagination.pageIndex + 1)}
</button>
}
Reactive boundaries
- Pass both the controlled value and its callback. Octane setters accept Table's value-or-updater callbacks; a callback alone cannot feed the new value back.
- Render
<table.Subscribe>as a component. Calling it as a normal function shares the owner's compiler slots instead of creating an independent hook scope. useTablestages fresh options for same-render reads. Controlled state reaches the store only from an accepted layout commit, so abandoned work cannot publish speculative values.- A stable atom from
@tanstack/octane-storeis a direct synchronous owner. Table writes reach it immediately; it takes precedence over controlledstatefor the same slice. - Keep features, columns, and data stable. Use the default selector until render cost justifies narrower subscriptions.
