Skip to content
cccskills
FreePublished on GitHub

table-state

Plan Table v9 state ownership across the table, framework state, and external atoms that hold values. Covers initial values, update callbacks, and reset behavior, helping coordinate individual state sections without conflicting owners.

OriginalShow the original description

Choose Table v9 state ownership, atoms, initialization, updates, and resets. Load for controlled slices or state coordination; use the adapter state skill for reactive reads.

See how to install

Good for

  • Choosing where to manage pagination state
  • Connecting external state to update callbacks
  • Reviewing external atom ownership
  • Diagnosing initial value and reset behavior

Files included (1)

  • SKILL.md5.8 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Shared table state

Read core first for stable model inputs and feature-gated types. State repair in an existing table can start here without adapter setup guidance.

Start with internal ownership

Omit state, atoms, and on<Slice>Change for slices that Table should own. Use initialState only to customize their initial values.

<!-- skill-snippet:check -->
import {
  constructTable,
  createColumnHelper,
  rowPaginationFeature,
  tableFeatures,
} from '@tanstack/table-core'
import { storeReactivityBindings } from '@tanstack/table-core/store-reactivity-bindings'

type Person = { id: string; name: string }
const features = tableFeatures({
  coreReactivityFeature: storeReactivityBindings(),
  rowPaginationFeature,
})
const helper = createColumnHelper<typeof features, Person>()
const columns = helper.columns([helper.accessor('name', {})])
const data: Person[] = [{ id: '1', name: 'Ada' }]
const table = constructTable({
  features,
  columns,
  data,
  initialState: { pagination: { pageIndex: 0, pageSize: 25 } },
})
table.setPageSize(50)
console.log(table.atoms.pagination.get().pageSize)
table.resetPagination()
console.log(table.atoms.pagination.get().pageSize)

This example demonstrates state only. A pagination row-model slot is needed when Table should also slice the data.

Choose one owner per slice

OwnerConfigurationUpdate path
TableOmit external values; optionally provide initialState.<slice>Feature setter or interaction handler
Framework stateCurrent state.<slice> plus matching on<Slice>ChangeCallback applies the updater and the adapter receives the fresh value
External atomStable writable atoms.<slice>Feature setters write directly to that atom; no matching callback is needed

Prefer the smallest set of externally owned slices. Load the adapter's table-state skill before selecting framework state or an external atom package. Native signals, runes, refs, tracked properties, and Store atoms have different adapter wiring.

An updater can be a value or a function of the previous value. In a custom callback, use functionalUpdate(updater, previousValue) from @tanstack/table-core and write the result to the owner. Supplying only on<Slice>Change replaces the internal updater without returning a current controlled value; supplying only state.<slice> leaves no effective external update path.

If both atoms.<slice> and state.<slice> are supplied, the external atom wins. Choose one owner deliberately; writing an internal base atom cannot change a slice resolved from an external atom.

Distinguish state reads and writes

  • table.baseAtoms contains internal writable atoms created from resolved initial state. Prefer feature setters; direct base-atom writes bypass feature-specific behavior.
  • table.atoms contains readonly resolved atoms per registered slice. table.atoms.pagination.get() reads whichever owner supplies pagination.
  • table.store is the readonly flat combination of resolved slices. table.store.state reads its current snapshot.
  • table.state, where an adapter exposes it, is adapter-selected state. Its presence and subscription behavior are not shared core contracts.

A feature must be registered before its state appears in initialState, state, atoms, baseAtoms, or store. Let the concrete feature registry infer TableState; import a slice type such as PaginationState for an external owner instead of widening the complete state.

A direct atom/store read is not a portable framework subscription. Its tracking depends on the adapter and the scope of the read. For reactive UI, load intent load <package>#table-state using the installed adapter package, for example intent load @tanstack/react-table#table-state. Use that skill's supported read and subscription APIs.

Initialization and resets

initialState resolves at construction. Changing the supplied object later does not reset the table. Keep the registered features and external atom identities stable for the instance lifetime.

Feature resets such as resetPagination() use table.initialState by default. Many accept true to use the feature's blank/default state. They run through the feature updater and can therefore reset a controlled slice or external atom when its owner accepts the update.

table.reset() resets internal base atoms and transient feature instance data. It does not reset external atoms or make an external controlled owner forget its value. Use the feature reset or the external owner's reset for those slices.

Installed API discovery

Inspect node_modules/@tanstack/table-core/dist/core/table/coreTablesFeature.types.d.ts, dist/types/TableState.d.ts, and the relevant feature's *.types.d.ts. Follow the adapter skill for reactive consumption and commit timing.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

core

FreeSummary

Build table data processing with TanStack Table v9 while keeping data and column definitions stable. The skill guides type inference, which determines types automatically, row identity, optional features, and checks for missing APIs.

  • Set up the foundation for table data processing
  • Troubleshoot column type inference
  • Investigate missing APIs or optional features
TanStack/table28.5KUpdated Oct 13, 2026

custom-features

FreeSummary

Build a Table v9 plugin when built-in settings and typed metadata are insufficient. Guides custom state, options, and methods, with initialization hooks and runtime checks to ensure declared APIs actually exist and reset correctly.

  • Add reusable custom table behavior
  • Design plugin state and reset behavior
  • Keep declared APIs consistent with runtime behavior
TanStack/table28.5KUpdated Oct 13, 2026

devtools

FreeSummary

Connect React Table v9 to Devtools, a development inspection interface. Configure table registration, unique keys, and enabled settings, and diagnose missing panels while understanding registration cleanup and the separate entrypoint for explicit production use.

  • Adding Devtools to React tables
  • Diagnosing missing Table panels
  • Controlling registration with enabled
TanStack/table28.5KUpdated Oct 13, 2026

devtools

FreeSummary

Register Angular TanStack Table v9 instances with Devtools, a tool for developers. The skill covers unique table keys, registration that responds to changes, automatic cleanup, and the different setup rules for development and production.

  • Register an Angular table with Devtools
  • Investigate a table that fails to register
  • Enable or remove registration as conditions change
TanStack/table28.5KUpdated Oct 13, 2026

devtools

FreeSummary

Connect Preact Table v9 to Devtools, a development inspection interface. This skill guides package selection, unique table keys, registration settings, and development-only behavior to help diagnose tables that do not appear.

  • Connecting Preact tables to Devtools
  • Diagnosing missing table targets
  • Checking duplicate keys across tables
TanStack/table28.5KUpdated Oct 13, 2026

devtools

FreeSummary

Connect TanStack Table instances to developer tools for inspecting options, state, features, columns, rows, and row models. Diagnose missing connections, assign unique table keys, and manage registration replacement and cleanup.

  • Inspect table options, state, columns, and rows
  • Diagnose tables missing from developer tools
  • Assign distinct keys to multiple tables
TanStack/table28.5KUpdated Oct 13, 2026

See all skills by TanStack

Report a problem with this skill