TanStack Table, the headless UI library for building tables and datagrids across JavaScript frameworks, has announced TanStack Table V9 in beta, a foundational release that reworks state management, memory usage, bundle size, and extensibility while keeping the core table logic developers already know. The beta, announced on X on 8 June 2026, ships state management built on TanStack Store, fine grained re-render control through state subscriptions, lower memory usage at scale, tree-shakable features with type safety, a clearer plugin model, and rewritten devtools. It is available for React, Preact, Angular, Solid, Vue, Svelte, and Lit. The headline change is that features are now opt in. In V8 every feature shipped together, but V9 registers only what a table uses, so a small table can start at around 5kb and a full enterprise grid pulls in sorting, filtering, and pagination as needed. TypeScript enforces this, so an API such as setSorting only exists once its feature is registered. The other big shift is state. The migration guide explains that useReactTable becomes useTable, and state now flows through table.state, table.store, and per-slice atoms rather than getState(). A new table.Subscribe lets row selection changes re-render only the count that displays them, instead of every control that touches the table instance. Lead maintainer Kevin Van Cott says the design was borrowed directly from TanStack Form and Store, and that the React Compiler becoming stable was what forced the rewrite because V8's patterns "started breaking" under it. Van Cott has been unusually candid about the multi-year delay, admitting the release "has probably taken too long" and that trying to fix every V8 complaint at once was "a big mistake" he would approach differently next time. Writing on Medium, Ahmad Fiaz cautioned that "the new atoms API in v9 beta is not a drop-in replacement for controlled state, and the distinction matters in Angular and React apps alike." The extensibility work also speaks to a recurring complaint, seen in a Reddit thread where a developer described growing projects where "instead of writing code I'm trying to hack this library." One exchange under the r/reactjs announcement thread captured how the plugin model is landing with users. Commenter Arceus919 asked whether per-table state was still a gap: Am I seeing correctly that there is still no per-table meta and everything is still global :( I have a bunch of very function-heavy tables in my app so per-table meta is a must for my case - I’ve just created my own useTable hook to support it but would love to someday switch Van Cott replied by pointing to a feature and guide he had just shipped covering table and column meta. Migration is designed to be gradual. A useLegacyTable hook accepts the V8 style API on top of V9, and importing stockFeatures restores the old everything-included behaviour at the cost of bundle size. Table markup itself is unchanged. Compared with commercial options like AG Grid or MUI X Data Grid, TanStack Table stays headless and free, and wrappers such as Material React Table build on top of it. V9 is in beta now, positioned as the base for future releases.
Comments
Sign in to join the conversation
Sign InNo comments yet. Be the first to share your thoughts!