This episode reviews the latest stable features in the TanStack ecosystem: updates to Router, Table, Query, Virtual, and Charts, trends in headless libraries and data-driven React, and strategies for keeping your TanStack skills relevant in the future.

The TanStack ecosystem never stops moving. Episode 22 maps the latest stable features across the whole library family, discusses the trends reshaping how people write React, and gives you strategies so your skills don't go stale as updates keep coming.
As a user of libraries running in production, you need to distinguish stable features that are safe to adopt from experimental features that are still changing. Understanding trends also helps you decide when adopting a new technology is the right call.
By the end of the episode, you'll know what's new, what's trending, and how to keep up with TanStack's development without being drowned by its release cadence.
Modern TanStack Query introduces queryOptions, which combines the query key and queryFn in a single object, making code easier to reorganize and reuse. This structure also keeps the data type unified across all usages.
export const penggunaOptions = queryOptions({
queryKey: ["pengguna"],
queryFn: () => ambilPengguna(),
})
function DaftarPengguna() {
const { data } = useQuery(penggunaOptions)
return <ul>{data?.map((u) => <li key={u.id}>{u.nama}</li>)}</ul>
}queryOptions({ queryKey, queryFn }) returns an object you can pass straight to useQuery. Because the types are bound in one place, usage in any component is always consistent and auto-inferred.
Modern Router strengthens type safety for search params and loader results. An auto-generated route tree means new files are connected without manual declarations, and search validation with Zod has become common practice.
Table v8 fully separates the core from the UI adapters, and using TanStack Virtual for large tables is increasingly common. Remote sorting and filtering are handled by direct integration with query state.
One of the biggest directions is cross-library coordination: Table state is hooked into Router search params, while table data is supplied by Query. This combination yields shareable URLs with persisted filters and sorting.
const { navigate, search } = useRouter({ from: "dashboard" })
const table = useReactTable({
columns,
data,
state: {
sorting: search.sorting,
globalFilter: search.q,
},
})search.sorting and search.q read state from the URL, so filters and sorting travel along when a page is shared. Navigation then writes table state changes back to the URL, keeping a single source of truth.
TanStack Charts keeps rounding out its chart API for dashboards without sacrificing data readability. TanStack Virtual continues to lead for massive lists with increasingly accurate dynamic item measurement.
The global trend moves away from UI libraries that force a design. Headless components like TanStack Table provide logic and state, while design is fully controlled by the team. This separation makes libraries last longer because the look can always be redone.
With server components on the rise, the division of labor gets clearer: the server handles initial data, the client handles interactivity. TanStack Query is adapted to fill the cache gap after HTML is sent, not to replace the server's work.
The development direction shows deeper integration between Query and Router: Router loaders can directly leverage query options, and cache state becomes part of navigation decisions. The boundary between the data layer and the routing layer keeps thinning without losing clarity.
Follow the official release notes and community mailing lists. Big version jumps usually come with migration guides, and understanding why a change happened is worth more than memorizing new APIs.
The best way to understand updates is to use them in a real project. Upgrade one library at a time, run the test suite, and measure the impact before rolling it out across the whole codebase.
npm outdated @tanstack/react-query @tanstack/react-tablenpm outdated @tanstack/react-query @tanstack/react-table shows the latest available versions for each library. Scheduling regular checks helps you not miss important updates while avoiding version jumps that are too large.
Keep in mind, following trends doesn't mean switching libraries every month. The greatest value lies in understanding the problem each release solves, then deciding with data whether that update matters for your project.
Episode 22 wrapped up stable features and trends: queryOptions and persistence in Query, Router type safety, cross-library state coordination, headless trends, and strategies for following updates through releases, testing, and gradual upgrades.
Key takeaways:
In the final episode, episode 23, we'll discuss building a full-stack data app — designing an end-to-end architecture with TanStack, combining query caching, table rendering, and routing in one real app, weighing performance and UX tradeoffs, up to production-ready deployment and maintenance. The peak of your entire journey!