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
staleTimeandgcTime - Framework-agnostic cores: Table’s logic runs under ten frameworks or in plain TypeScript, and Query’s
QueryClientlives 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
cacheTimetogcTimeandloadingtopending, 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
@tanstackRouter 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) // 2The main libraries#
Checked 2026-10-09. TanStack also maintains smaller libraries; these are the ones most apps meet first.
| What it does | Renders UI? | Stable since | |
|---|---|---|---|
| Query | Fetches, caches and refetches server state | No | v5 in October 2023 (v4, the first under the TanStack name, in July 2022) |
| Table | Sorting, filtering, grouping and pagination for tables and data grids | No (headless) | v9 in August 2026 |
| Form | Form state and validation with type-safe fields | No (headless) | v1 in March 2025 |
| Router | Type-safe routing with typed search params and caching loaders, for React and Solid | Renders your route components | v1.0.0 in December 2023 |
| Start | Full-stack React framework on Router: SSR, streaming, server functions | Yes, your React app | Release 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
QueryClientand subscriptions into a shared core so hooks likeuseQuerybecame 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
- 2020
React Table v7, a headless, hooks-only rewrite, in March
- 2022
React Query v4 becomes TanStack Query, with a framework-agnostic core
- 2023
Query v5 in October; Router 1.0 in December
- 2025
Form v1 in March; Start release candidate in September
- 2026
npm supply-chain attack on Router and Start packages in May
- 2026
Table v9 with opt-in features and ten framework adapters in August
- TanStack blog: The State of TanStack, Two Years of Full-Time OSS (November 2025; Nozzle, partners, 13 projects)
- TanStack blog: TanStack Charts 1.0 (Nozzle’s marketing and SEO data)
- GitHub: React Table v7.0.0 release notes (March 2020)
- TanStack blog: Announcing TanStack Query v4 (July 2022)
- TanStack blog: Announcing TanStack Query v5 (October 2023)
- GitHub: TanStack Router v1.0.0 release (23 December 2023)
- TanStack blog: Announcing TanStack Form v1 (March 2025)
- TanStack blog: TanStack Start v1 Release Candidate (September 2025)
- TanStack blog: Postmortem, TanStack npm supply-chain compromise (May 2026)
- TanStack blog: Announcing TanStack Table V9 (August 2026)
- TanStack Query docs: Overview (server state)
- TanStack Router docs: Overview (100% inferred TypeScript support)
Sources15 · facts checked 9 October 2026
- TanStack Query docs: Overview (fetching, caching, deduping, background updates)
- TanStack Query docs: Important Defaults (stale immediately, refetch triggers, 3 retries, 5-minute gcTime)
- TanStack Query docs: QueryClient reference (query(), invalidateQueries(); fetchQuery deprecated)
- TanStack Query docs: Query invalidation
- TanStack Table docs: Overview (headless, agnostic core, compatible with any CSS or component library; AG Grid as a pre-built alternative)
- TanStack blog: Announcing TanStack Table V9 (ten adapters, up to 86% less retained heap)
- TanStack Form docs: Overview (headless, framework-agnostic; React, Vue, Angular, Solid, Svelte and Lit)
- TanStack Router docs: Overview (React and Solid, typed search params, SWR loaders)
- TanStack Start docs: Overview (release candidate, Vite or Rsbuild, server functions; funding)
- TanStack blog: Announcing TanStack Query v5 (breaking changes)
- TanStack blog: TanStack Start security update, CVE-2026-102989 (30 September 2026)
- TanStack blog: Postmortem, TanStack npm supply-chain compromise (11 May 2026)
- TanStack blog: The State of TanStack, Two Years of Full-Time OSS (November 2025)
- GitHub: TanStack/query (MIT)
- GitHub: TanStack/table (MIT)