Cloud Parts

TanStack

A family of open-source TypeScript libraries (Query, Table, Form, Router, Start and more), each a framework-agnostic core with thin adapters, that handle state and logic while you keep the markup.

What it is
UI libraries (headless libraries)
Type
Open source
Made by
TanStack
License
MIT
Facts checked
9 October 2026

What it is

TanStack Query manages server state: data that lives on a server, is fetched asynchronously and can change without your app knowing. You give it a key and a function that returns a promise, and it caches the result, merges identical requests into one, and refetches stale data in the background when a component mounts, the window regains focus or the network reconnects. By default cached data counts as stale immediately, failed queries retry 3 times with exponential backoff, and unused entries are garbage-collected after 5 minutes. TanStack Table is a headless engine for tables and data grids: it sorts, filters, groups and paginates rows but renders nothing, so you write the markup with any CSS or component library. Version 9 (August 2026) makes every feature opt-in for smaller bundles and, in TanStack’s own benchmark, retains up to 86% less JavaScript heap than v8. TanStack Form is a headless, type-safe form library with adapters for React, Vue, Angular, Solid, Svelte and Lit.

TanStack Router is a router for React and Solid whose types are inferred from your route definitions, so links, path params and validated search params are checked by the compiler; route loaders cache with stale-while-revalidate. TanStack Start is a full-stack React framework built on Router and Vite or Rsbuild, adding server-side rendering, streaming, server routes, server functions (type-safe RPCs between client and server) and middleware. As of October 2026 its docs still call Start a release candidate, with React Server Components experimental.

Each library keeps its logic in framework-agnostic TypeScript and connects it to a framework through an adapter: Table v9 ships ten adapters plus @tanstack/table-core. Tanner Linsley started the libraries at Nozzle, an earlier startup Linsley worked on, and has worked on TanStack full time since about November 2023. TanStack LLC is bootstrapped, with no venture funding; partner companies pay for the work. In November 2025 TanStack counted 13 active projects and 36 core contributors.

Why teams pick it

  • Query removes most hand-written fetching code: caching, request deduplication, background refetching, retries and garbage collection are defaults, tuned per query with options such as staleTime and gcTime
  • Framework-agnostic cores: Table’s logic runs under ten frameworks or in plain TypeScript, and Query’s QueryClient lives in a core shared by its framework adapters
  • Headless Table and Form fit any design system, from Tailwind to Material UI, because they never render markup of their own
  • Types inferred end to end in Router and Start: route paths, params and search params are typed from the route definitions
  • MIT-licensed and independent, funded by partner companies rather than investors

Watch out for

  • Headless means more code: Table hands you rows and state, not a grid, so every header, cell and pagination control is yours to build and style; AG Grid or MUI X ship ready-made grids
  • Major versions break APIs: Query v5 removed call overloads and renamed cacheTime to gcTime and loading to pending, and Table v9 makes you declare each feature you use
  • Query’s defaults catch newcomers off guard, as its docs warn: data is stale at once and refetched on mount, focus and reconnect, and failures retry 3 times before the UI sees an error
  • Start is still a release candidate; a critical reflected XSS in its server-function handling (CVE-2026-102989) was patched on 30 September 2026
  • On 11 May 2026 an attacker used GitHub Actions cache poisoning to publish 84 malicious versions of 42 @tanstack Router and Start packages to npm; they were deprecated within the hour and other libraries were unaffected

How it fits with other technologies

TanStack Query’s core without a framework: one request for two callers, then the cache · ts

// npm install @tanstack/query-core@5
import { QueryClient } from '@tanstack/query-core'

let calls = 0
async function fetchUser(id: number) {
  calls++
  await new Promise((resolve) => setTimeout(resolve, 50)) // a slow API
  return { id, name: 'Ada' }
}

const client = new QueryClient({
  defaultOptions: { queries: { staleTime: 60_000 } }, // fresh for 1 minute
})

const options = { queryKey: ['user', 1], queryFn: () => fetchUser(1) }

// two components ask at the same moment: one request is made
const [a, b] = await Promise.all([client.query(options), client.query(options)])
console.log(a === b, calls) // true 1

// asked again within staleTime: served from the cache
await client.query(options)
console.log(calls) // 1

// after a write, mark it stale; the next read refetches
await client.invalidateQueries({ queryKey: ['user'] })
await client.query(options)
console.log(calls) // 2

The main libraries#

Checked 2026-10-09. TanStack also maintains smaller libraries; these are the ones most apps meet first.

What it doesRenders UI?Stable since
QueryFetches, caches and refetches server stateNov5 in October 2023 (v4, the first under the TanStack name, in July 2022)
TableSorting, filtering, grouping and pagination for tables and data gridsNo (headless)v9 in August 2026
FormForm state and validation with type-safe fieldsNo (headless)v1 in March 2025
RouterType-safe routing with typed search params and caching loaders, for React and SolidRenders your route componentsv1.0.0 in December 2023
StartFull-stack React framework on Router: SSR, streaming, server functionsYes, your React appRelease candidate since September 2025

See it in a real stack

No architecture uses TanStack yet. Drop it into the playground and wire it up yourself.Open playground →
Where it came from2020–2026

TanStack grew out of a handful of libraries Tanner Linsley built at Nozzle, an earlier startup Linsley worked on, which had large amounts of marketing and SEO data to show. Two of them, React Table and React Query, carried the React name until the TanStack rename. React Table v7, released in March 2020 after more than a year of work, rebuilt it as a hooks-only, headless utility that renders no UI at all, so the library could stay small and leave the look of each table to the app.

In July 2022 React Query v4 was renamed TanStack Query and restructured as a monorepo with a framework-agnostic core and framework adapters, so the same caching engine could serve Vue, Svelte and Solid as well as React. Query v5 followed in October 2023, after 91 alphas, 35 betas and 16 release candidates, and Router reached 1.0 in December 2023. Around then Tanner went full time on TanStack, paid for by partner companies rather than investors.

Form v1 shipped in March 2025 with five framework adapters, and Start, a full-stack framework on Router, reached a release candidate in September 2025. In May 2026 an attacker chained a pull_request_target workflow, GitHub Actions cache poisoning and an OIDC token read from runner memory to publish malicious Router and Start versions, and TanStack published a detailed postmortem. Table v9 arrived in August 2026, after more than two years of on-and-off work.

Why it’s built this way

Headless instead of a component
React Table v7’s release notes argued that the look of a table belongs to the app, that dropping UI options removes a huge API surface to maintain, and that apps can then extend it however they like.
Treat server state apart from client state
Query’s docs note that server state is stored remotely, needs async APIs, is shared with other people and goes out of date, which general client-state stores don’t handle; caching, deduplication and background updates follow from that.
One agnostic core, thin framework adapters
Query v4 moved the QueryClient and subscriptions into a shared core so hooks like useQuery became a small React layer, and the same logic could serve other frameworks.
Types inferred from the code
Router is designed so TypeScript knows every route’s path, params, search params and context, making a link to a route that doesn’t exist a compile error rather than a runtime 404.

Timeline

  1. 2020

    React Table v7, a headless, hooks-only rewrite, in March

  2. 2022

    React Query v4 becomes TanStack Query, with a framework-agnostic core

  3. 2023

    Query v5 in October; Router 1.0 in December

  4. 2025

    Form v1 in March; Start release candidate in September

  5. 2026

    npm supply-chain attack on Router and Start packages in May

  6. 2026

    Table v9 with opt-in features and ten framework adapters in August

Sources15 · facts checked 9 October 2026

Improve this page on GitHub