TanStack Query owns remote state, not the request protocol
TanStack Query sits between UI components and promise-returning data functions. It tracks whether a query is loading, fresh, stale, failed, paused, or being refreshed. It also coordinates retries, cancellation, invalidation, pagination, mutations, and background updates. The application still chooses fetch, GraphQL, an SDK, or any other transport. That boundary lets one cache model work across very different APIs.
The same boundary causes common misuse. A query library cannot decide whether a response may be cached for 30 seconds, whether an error deserves retrying, or which mutation invalidates which list. Teams encode those decisions in query keys and options. If those keys are inconsistent, two screens that appear to show the same record can occupy separate cache entries and update at different times.
What happened when we ran it
Our sandbox installed 2,840 pnpm packages in 58 seconds and consumed 2,198 MB on disk. The monorepo build then passed in 9 seconds. Vitest completed in 897 seconds with 1,736 passed and 0 failed of 1,736. We tested commit 96f2da6 in an unprivileged container with 3 CPUs, 8 GB of RAM, and Node 22.
The checkout contained 2,333 files, about 180,710 lines of source, and occupied 26.3 MB before installation. Our scan found 4 CI workflow files, workspace configuration, no Dockerfile, and no tests directory. The successful 1,736-test command demonstrates that tests live within the packages or source layout rather than in one root folder.
An 897-second suite is a contributor cost, while the 9-second build is quick once dependencies exist. The 2,198 MB installation is the larger operational warning for CI caching and short-lived development containers. Consumers installing @tanstack/react-query or another adapter do not receive this entire workspace, so the lab footprint must not be mistaken for browser bundle size. We measured repository development, not shipped JavaScript weight.
Seven UI families share one query core
The release published August 26 lists packages for React, Vue, Solid, Svelte, Angular, Preact, and Lit, plus persistence, developer tools, storage persisters, and the framework-neutral query core. That range is valuable in an organization with several frontends. Shared concepts and cache rules can travel between teams even when hooks, providers, and reactivity differ.
Adapters do not behave identically because their frameworks do not. The same day's activity included Solid hydration changes, Preact error-boundary handling, and type-only exports across multiple packages. The latest release fixed React Query's handling of falsy errors at an error boundary. A team should test the adapter and rendering mode it deploys, particularly server rendering, hydration, Suspense, and error boundaries. Core success does not erase framework-specific edges.
Cache defaults are product behavior
TanStack Query can refetch when a component mounts, the window regains focus, or connectivity returns, depending on configuration and query state. Retries and garbage collection also affect what users see. These defaults are sensible for many dashboards, but surprising network traffic or a briefly old screen often comes from an unstated freshness policy rather than a broken fetch call.
Write the policy beside each domain, not as scattered component overrides. Prices, permissions, feature flags, and an immutable help article have different tolerances. Mutations need an explicit decision between invalidating and refetching, updating cached data directly, or applying an optimistic result with rollback. The library supplies each mechanism; it cannot determine which consistency promise your application owes its users.
Protocol agnosticism trades schema knowledge for flexibility
Apollo Client understands GraphQL identities and can normalize entities across query results. TanStack Query generally caches by query key and result. That is simpler for REST endpoints, custom SDKs, and mixed backends, but it does not automatically merge one changed entity into every cached response containing it. Invalidation or deliberate cache updates are part of the application layer.
For a small page, this may be more machinery than the problem needs. A server-rendered route that fetches once and never mutates can often use the framework's data primitive directly. TanStack Query earns its place when users stay on the page long enough for stale data, retries, concurrent viewers, pagination, offline transitions, or optimistic mutations to become visible product concerns.
Release 5.102.6 shows active adapter maintenance
The latest GitHub release was generated on August 26, 2026 and included @tanstack/react-query 5.102.6 alongside many coordinated packages. GitHub recorded another push on August 27. The repository had 50,210 stars and 126 combined open issues and pull requests when fetched. MIT licensing keeps adoption uncomplicated, though each application's API and data obligations remain its own.
The clean 1,736-test run supports using TanStack Query in serious applications. The decision should rest on data behavior, not popularity. Adopt it when remote-state rules are already leaking into components and request helpers. Define query keys, freshness, retries, mutation effects, and SSR behavior before rollout, then keep the 2.2 GB contributor footprint out of ordinary application images.

