Control TanStack Table v9 leaf columnOrder with stable IDs while accounting for pinning regions, visibility, and groupedColumnMode precedence. Load for drag-and-drop columns or rendered order that differs from state.
70
86%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
This skill builds on core and table-features. columnOrder orders unpinned leaf IDs; other plugins can still determine the final visual regions.
import { columnOrderingFeature, tableFeatures } from '@tanstack/table-core'
export const features = tableFeatures({ columnOrderingFeature })
export const initialState = { columnOrder: ['name', 'age', 'actions'] }const next = columnOrder.filter((id) => id !== activeId)
next.splice(next.indexOf(overId), 0, activeId)
table.setColumnOrder(next)Use column IDs as drag identities and replace the array.
Wrong: renderIds(columnOrder)
Correct: renderColumns(table.getAllLeafColumns())
Pinning regions and grouping mode apply after base ordering. If
columnVisibilityFeature is also registered, render
table.getVisibleLeafColumns() to apply visibility too.
Source: docs/framework/react/guide/column-ordering.md#what-affects-column-order
Wrong: const activeId = column.columnDef.header as string
Correct: const activeId = column.id
Headers can collide or change; ordering state stores stable leaf column IDs.
Source: packages/table-core/src/features/column-ordering/columnOrderingFeature.types.ts
Wrong: columnOrder.splice(0, 1); table.setColumnOrder(columnOrder)
Correct: table.setColumnOrder(columnOrder.slice(1))
Reactive owners commonly require a new array reference.
Source: examples/react/column-dnd/src/main.tsx
Inspect node_modules/@tanstack/table-core/dist/features/column-ordering/; combine with pinning/visibility skills when those plugins are registered.
9e523bc
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.