Skip to content
CAI
Software that uses CAICheck a score

TanStack/query

58.8

Adequate · 28 September 2026

68.2k

lines of production code

TypeScript

with JavaScript

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is the TanStack Query library, a data-fetching and caching solution for modern frontend frameworks including React, Angular, Vue, Svelte, Solid, Lit, and Preact. It provides framework-specific adapters that enable features such as automatic background refetching, pagination, infinite scrolling, optimistic updates, and server-side rendering hydration. The repository also includes developer tooling like ESLint plugins, devtools panels, and persistence utilities to manage cache state across sessions and tabs.

How it got here

2019–2022 — TanStack Query v5 migration and ecosystem expansion

54 changes.

The project underwent a comprehensive restructuring to align with TanStack Query v5, migrating the build toolchain to Vite and tsdown while renaming the core package. This period saw the introduction of new APIs for hydration, suspense, and options, alongside the release of official adapters for Solid.js and Vue. The ecosystem was further expanded with new examples, devtools enhancements, and a refined persistence strategy.

2023 — Svelte 5 runes migration and framework expansions

52 changes.

The Svelte adapter and all associated examples were rewritten to support Svelte 5 runes, replacing legacy reactivity with modern primitives. This period also saw the introduction of experimental Angular and Solid integrations, alongside new devtools and persistence packages for multiple frameworks.

2024–2025 — Framework integrations and developer tooling

44 changes.

This period focused on expanding framework support by adding comprehensive examples and integration scaffolds for Angular, Solid, Svelte, and Next.js versions 14 through 16. It also significantly enhanced developer tooling through new ESLint rules, codemods for migration, and improved devtools configuration across adapters.

2026 — Preact and Lit adapter expansion

23 changes.

This period focused on expanding framework support by introducing official adapters and comprehensive examples for Preact and Lit, including core query hooks, devtools, and persistence providers. The work also involved adding test coverage for these new integrations and enhancing existing React and Solid examples to demonstrate advanced patterns like optimistic updates and offline-first strategies.

Features

Add Angular CLI 20 integration scaffold with zoneless change detection

This change introduces a new integration scaffold for Angular CLI version 20.0.0-rc.2, providing the foundational project structure including configuration files (angular.json, tsconfig.json) and VS Code development settings. The scaffold is configured to use the new zoneless change detection mechanism via \provideZonelessChangeDetection\ and includes a demonstration component that utilizes TanStack Query for data fetching, ensuring the integration is ready for immediate development and testing.

integrations/angular-cli-20 · high confidence

Add Angular RxJS autocomplete example with devtools and mock API

The Angular example in this location now demonstrates an autocomplete search feature using RxJS for debouncing and distincting input changes, integrated with TanStack Query for data fetching. It includes a mock HTTP interceptor to simulate network latency and a service layer for API calls, while the application configuration enables TanStack Query devtools for debugging.

examples/angular/rxjs/src/app · high confidence

Add Angular RxJS example application

Added a new example application demonstrating TanStack Query with Angular and RxJS, including the entry point (main.ts) and root HTML template (index.html).

examples/angular/rxjs/src · high confidence

Add Angular basic persister example with local storage caching

This location introduces a new Angular example application that demonstrates how to persist TanStack Query cache data to the browser's local storage. The example configures the Angular application with \withPersistQueryClient\ using an \AsyncStoragePersister\ backed by \window.localStorage\, allowing users to mock offline behavior and retain cached data across sessions. It includes a simple post-listing UI with navigation, leveraging Angular's standalone components and signals.

examples/angular/basic-persister · high confidence

Add Angular example for managing query options in a service

This location introduces a new Angular example demonstrating how to define and reuse TanStack Query options via an injectable service. The example includes a \QueriesService\ that returns \queryOptions\ for fetching posts, which are consumed by standalone components using \injectQuery\. It also configures the application with \provideTanStackQuery\ and enables devtools via \withDevtools\, providing a complete reference for structuring data fetching logic in Angular applications.

examples/angular/query-options-from-a-service · high confidence

Add Angular infinite query example with max pages

The \examples/angular/infinite-query-with-max-pages\ directory now contains a complete, standalone Angular application demonstrating TanStack Query's infinite query capabilities. The example showcases fetching paginated data with a maximum page limit (\maxPages: 3\), using \injectInfiniteQuery\ to manage forward and backward navigation, and includes a mock HTTP interceptor to simulate network latency. It is configured as a modern Angular standalone application using the new \app.config\ provider pattern, \provideHttpClient\ with interceptors, and the \withDevtools\ integration for debugging.

(repo-wide) · high confidence

Add Angular pagination example with devtools and prefetching

A new Angular pagination example has been added to the repository, demonstrating how to implement paginated data fetching with TanStack Query. The example showcases key features such as preserving previous data during page transitions using \keepPreviousData\, prefetching the next page in the background via an \effect\, and integrating the Angular Query Devtools for debugging. It is configured as a standalone Angular application using the \Bundler\ module resolution and runs on Node.js 22.

examples/angular/pagination · high confidence

Add Angular router example with TanStack Query integration

A new example application has been added to \examples/angular/router\ that demonstrates integrating TanStack Query with Angular's router. The example uses lazy-loaded routes (\loadComponent\) for a posts list and individual post details, leveraging \withComponentInputBinding\ to automatically bind route parameters to component inputs. It showcases query caching and background refetching behavior, where previously visited posts load instantly from cache while refreshing in the background, and highlights cached items by styling their links in bold green.

examples/angular/router, integrations/solid-vite, integrations/svelte-vite · high confidence

Add Lit Query SSR example and Vite integration demo

This change introduces a new Server-Side Rendering (SSR) example for Lit (\examples/lit/ssr\) and a Vite integration demo (\integrations/lit-vite\). The SSR example demonstrates how to hydrate query state from the server using \@tanstack/lit-query\, including a custom \SsrApp\ component and bootstrap logic that reads dehydrated state. The Vite integration provides a minimal setup with custom elements (\lit-query-provider\, \lit-query-app\) to showcase basic query fetching and rendering within a Vite-built Lit application.

examples/lit/ssr, integrations/lit-vite · high confidence

Add Lit pagination example with query and mutation controllers

A new Lit-based pagination example has been added to the examples directory, demonstrating how to use TanStack Query's \createQueryController\ and \createMutationController\ for paginated data fetching and mutations. The example includes a complete API layer (\api.ts\) that interacts with a local server on port 4184, handling project listing, creation, and favorite toggling, along with a Lit component (\main.ts\) that manages query state, caching, and optimistic updates for mutations.

examples/lit/pagination · high confidence

Add Next.js 13+ App Router integration example with React Query v5

This change introduces a new example integration for Next.js 13+ using the App Router, demonstrating how to use React Query v5 with server components, client components, and server actions. The example includes a root layout, a client component that fetches data using React Query, a server action that triggers a revalidation, and a route handler. It also sets up a QueryClient with custom serialization using tupleson and the Temporal polyfill for date handling. The integration uses the new \environmentManager.isServer()\ API to determine the execution environment, replacing the deprecated \isServer\ property.

integrations/react-next-16 · high confidence

Add Next.js 15 integration example with React Query hydration

This location introduces a new Next.js 15 example application that demonstrates integrating TanStack Query with Next.js App Router features. The example showcases server-side data prefetching and hydration using \dehydrate\ and \HydrationBoundary\, custom serialization via \tupleson\ for complex types like \Temporal.PlainDate\, and proper client/server query client instantiation using \environmentManager.isServer()\. It also includes a server action example for revalidation and a route for fetching count data, providing a complete pattern for using React Query in a Next.js 15 environment.

integrations/react-next-15 · high confidence

Add Next.js App Router Suspense Streaming example

The Next.js Suspense Streaming example has been migrated to the Next.js App Router, introducing a new project structure with \src/app\ directories. The example now demonstrates server-side data fetching using \useSuspenseQuery\ combined with React's \Suspense\ boundaries to stream content progressively. It includes a dedicated API route (\/api/wait\) to simulate network latency, a \Providers\ component that initializes the React Query client and integrates \ReactQueryStreamedHydration\ for efficient hydration, and a \next.config.js\ that disables module concatenation for the server build to ensure correct streaming behavior.

examples/react/nextjs-suspense-streaming · high confidence

Add Next.js App Router optimistic updates example

A new example project in \examples/react/nextjs-app-optimistic-updates\ demonstrates optimistic updates with TanStack Query v5 in a Next.js 14 App Router application. It provides a todo list interface that showcases two distinct implementation strategies: rendering pending items directly via \mutation.variables\ (UI Variables approach) and manually managing the cache with \onMutate\ snapshots and rollback logic (Cache Manipulation approach). The example includes a simulated API endpoint that randomly fails to illustrate automatic rollback behavior.

examples/react/nextjs-app-optimistic-updates · high confidence

Add Next.js example with server-side data fetching and hydration

This location introduces a new Next.js example demonstrating how to integrate React Query with Next.js data fetching methods. The example includes a Home page that uses \getStaticProps\ to prefetch queries and hydrate them in the browser, as well as a Client-Only page that loads data directly on the client side. It provides the necessary configuration files (\next.config.js\, \tsconfig.json\), layout components, and hooks to showcase these patterns.

examples/react/nextjs · high confidence

Add Next.js examples for auto-refetching and infinite scroll

New Next.js-based React examples have been added to demonstrate data-fetching patterns with TanStack Query. The auto-refetching example shows how to periodically poll an API endpoint and invalidate queries on mutations, while the infinite scroll example demonstrates paginated data loading using \useInfiniteQuery\ and \react-intersection-observer\ to trigger fetches as the user scrolls. Both examples include necessary configuration files (Next.js config, TypeScript config with Bundler module resolution) and API routes to support the demonstrations.

examples/react/load-more-infinite-scroll · high confidence

Add Nuxt 3 example with Vue Query hydration

Added a new Nuxt 3 example demonstrating how to integrate @tanstack/vue-query with server-side rendering. The example includes a plugin that manages query state hydration and dehydration using Nuxt's useState and import.meta properties, along with a minimal app component that fetches data and waits for suspense resolution.

examples/vue/nuxt3 · high confidence

Add Preact example project

A new Preact example project has been added to the repository, providing a starter template for building applications with Preact and Vite. This includes the necessary configuration files such as \tsconfig.json\ (configured with \jsxImportSource: preact\ and path aliases for React compatibility), \vite.config.ts\ (using the \@preact/preset-vite\ plugin), and a basic \index.html\ entry point. The example also includes a README with instructions for installing dependencies and running the development server.

examples/preact · high confidence

Add Preact persist client provider

Introduces the \PersistQueryClientProvider\ component for Preact applications, enabling automatic restoration and subscription of persisted query client state. This component wraps the standard \QueryClientProvider\ and manages the \isRestoring\ state, ensuring that child components wait for cached data to be restored from a persister before rendering, with support for custom \onSuccess\ and \onError\ callbacks.

packages/preact-query-persist-client/src · high confidence

Add React + Vite integration scaffold

The integrations/react-vite directory now contains a complete starter project for building React applications with Vite. This includes a Vite configuration using the React plugin, a TypeScript configuration with 'Bundler' module resolution and 'react-jsx' JSX mode, and an ESLint setup extending 'plugin:react/jsx-runtime' and 'plugin:react-hooks/recommended'. The application source demonstrates a React component utilizing TanStack Query for data fetching, wrapped in a QueryClientProvider with React Query Devtools enabled.

integrations/react-vite · high confidence

Add React 18 + Next.js 14 integration with React Query

The \integrations/react-next-14\ directory now contains a complete Next.js 14 application setup. This integration demonstrates the App Router structure (including \app/layout.tsx\ and \app/page.tsx\), configures TypeScript with \moduleResolution: "Bundler"\, and integrates \@tanstack/react-query\ for client-side data fetching via a dedicated \Providers\ component. It also includes standard tooling files such as \.eslintrc.cjs\, \.gitignore\, and \next.config.js\ to support the development environment.

integrations/react-next-14 · high confidence

Add React Query DevTools Panel example

A new example application has been added to demonstrate the \ReactQueryDevtoolsPanel\ component from \@tanstack/react-query-devtools\. This example shows how to integrate the devtools panel into a React app, allowing users to toggle the panel's visibility via a button to inspect query data and state.

examples/react/devtools-panel, examples/vue/dependent-queries · high confidence

Add React Router contacts example with local persistence

The React Router example now includes a complete contacts management application. This adds a data layer using localforage for persistent storage, a dedicated error page component, and a root entry point that configures a React Router v6 browser router with TanStack Query for data fetching and caching. The example demonstrates routing, loaders, actions, and error handling for a full CRUD workflow.

examples/react/react-router/src · high confidence

Add React Router example with modern tooling configuration

A new React Router example has been added to the repository, providing a reference implementation for integrating TanStack Query with React Router. The example includes a complete project setup with a Vite-based entry point (\index.html\), a TypeScript configuration (\tsconfig.json\) targeting ES2020 with \react-jsx\ support, and an ESLint configuration (\.eslintrc\) that enforces the \plugin:react/jsx-runtime\ and \plugin:react-hooks/recommended\ rules. It also includes standard project scaffolding such as a \.gitignore\ file and a public emblem asset.

examples/react/react-router · high confidence

Add React batching example using TanStack Pacer

Added a new example application in \examples/react/batching\ that demonstrates request batching with TanStack Query. The example uses \@tanstack/react-pacer\'s \AsyncBatcher\ to group multiple character requests into a single API call, allowing users to load multiple Rick and Morty characters simultaneously via a simple UI input.

examples/react/batching · high confidence

Add React chat example demonstrating streamed queries

A new React chat example has been added to \examples/react/chat\ that showcases the \experimental\_streamedQuery\ API from TanStack Query. The application allows users to type questions and receive simulated responses streamed word-by-word, utilizing the \streamFn\ configuration within \queryOptions\. The example is built with Vite and Tailwind CSS, providing a functional UI to demonstrate real-time data streaming behavior in a React context.

examples/react/chat · high confidence

Add React pagination example for Next.js

Added a new Next.js-based example demonstrating paginated data fetching with TanStack Query. The example includes a server-side API endpoint that simulates paginated project data and a client-side page that uses \keepPreviousData\ to maintain visibility of the previous page while fetching the next, along with prefetching logic for smoother navigation.

examples/react/pagination · high confidence

Add React prefetching example using Next.js and TanStack Query

A new Next.js example has been added to demonstrate data prefetching with TanStack Query. The application lists characters from the Rick and Morty API and prefetches detailed data for a character when the user hovers over their name, displaying the details immediately upon click. The example uses the \queryClient.fetchQuery\ method (via \queryClient.query\) with a \staleTime\ to manage cache freshness and highlights prefetched items by changing their font weight.

examples/react/prefetching · high confidence

Add Solid Query + Astro example application

A new example project has been added at \examples/solid/astro\ that demonstrates integrating SolidJS with Astro using the \@astrojs/solid-js\ integration and Tailwind CSS. The application serves as a Pokemon viewer, utilizing \@tanstack/solid-query\ for data fetching and caching, and showcases server-side rendering capabilities alongside client-side navigation via a custom \Link\ component and history API usage.

examples/solid/astro · high confidence

Add Solid Query example demonstrating default query functions

A new example project has been added for Solid.js that demonstrates how to configure a default query function via the QueryClient. The example shows how to fetch data from a placeholder API using only query keys, while also including the Solid Query Devtools for debugging and a Vite-based build configuration.

examples/solid/default-query-function · high confidence

Add Solid offline example with persisted mutations

A new example application in \examples/solid/offline\ demonstrates offline-first patterns using Solid and TanStack Query. The app features optimistic UI updates for movie comments and persists mutations to \localStorage\ via \PersistQueryClientProvider\, allowing paused mutations to automatically resume when the network connection is restored. It includes a mock API service (MSW) to simulate network conditions and devtools for testing offline behavior.

examples/solid/offline · high confidence

Add Solid.js basic example with TanStack Query

A new basic example for Solid.js has been added to the repository, demonstrating how to integrate TanStack Query. The example includes a complete project structure with Vite configuration, TypeScript settings, and ESLint rules. It showcases fetching a list of posts and individual post details using the \useQuery\ hook, featuring loading states, error handling, background refetching, and caching visualization via the Solid Query Devtools.

examples/solid/basic · high confidence

Add Solid.js examples with TanStack Query and Devtools

New example projects for Solid.js have been added to demonstrate TanStack Query integration. The 'basic-graphql-request' example shows fetching posts from a GraphQL API using \graphql-request\, while the 'simple' example demonstrates fetching GitHub repository data via a standard REST API. Both examples include configuration for Vite with the Solid plugin, TypeScript, and ESLint, and feature the SolidQueryDevtools for debugging.

examples/solid/basic-graphql-request, examples/solid/simple · high confidence

Add SolidStart streaming example components

The SolidStart streaming example now includes dedicated UI components (\Example\, \PostViewer\, \UserInfo\, and \QueryBoundary\) that demonstrate how to use \@tanstack/solid-query\ with server-side streaming features like \deferStream\, simulated network delays, and error handling with retry capabilities.

examples/solid/solid-start-streaming/src/components · high confidence

Add SolidStart streaming example with API utilities and configuration

Introduces a new SolidStart streaming example located in examples/solid/solid-start-streaming. The example includes a README with setup and build instructions, a .gitignore for standard build and environment artifacts, and an app.config.ts using @solidjs/start/config. It provides src/utils/api.ts with fetchPost and fetchUser helpers that simulate latency and errors to demonstrate streaming behavior, and a tsconfig.json configured with moduleResolution Bundler, ESNext targets, and Vinxi/Vite client types.

examples/solid/solid-start-streaming · high confidence

Add Svelte + TypeScript + Vite example with TanStack Query integration

A new 'simple' Svelte example has been added to the repository, providing a minimal Vite + TypeScript + Svelte setup that integrates with TanStack Query. The example demonstrates how to configure the Svelte adapter with runes enabled, set up a QueryClient provider in the root component, and fetch data from the GitHub API using the createQuery hook. It also includes a guard to ensure the \#app mount target exists before mounting the application.

examples/svelte/simple · high confidence

Add Svelte Star Wars example with SvelteKit and Tailwind CSS

A new Star Wars example application has been added to the Svelte examples directory, providing a reference implementation for fetching data from the SWAPI. The project is configured as a SvelteKit application using Vite, Tailwind CSS, and TypeScript, and explicitly enables Svelte runes mode in the compiler options to demonstrate modern Svelte patterns.

examples/svelte/star-wars · high confidence

Add Svelte infinite-scroll example using Svelte 5 runes

The load-more-infinite-scroll example now uses Svelte 5 runes syntax, as seen in the new +layout.svelte file which utilizes $props() for component composition. The layout sets up the TanStack Query client with browser-only execution and includes the Svelte Query Devtools, while the +page.svelte file serves as the entry point rendering the LoadMore component.

examples/svelte/basic/src/lib, examples/svelte/load-more-infinite-scroll/src/routes · high confidence

Add SvelteKit scaffolding for the auto-refetching example

The auto-refetching example now includes the standard SvelteKit project structure, adding app.html, app.css, and app.d.ts files. This provides the necessary HTML entry point, global styling with dark/light mode support, and TypeScript declarations required to run the example as a complete SvelteKit application.

examples/svelte/auto-refetching/src · high confidence

Add TanStack Query React example with legacy ESLint configuration

A new React example application has been added to the \examples/react/eslint-legacy\ directory, demonstrating TanStack Query with \PersistQueryClientProvider\ and local storage persistence. The example includes a complete Vite-based setup (including \vite.config.ts\, \tsconfig.json\, and \index.html\) and is configured to use the legacy ESLint plugin via a dedicated \.eslintrc\ file extending \plugin:@tanstack/query/recommended\.

examples/react/eslint-legacy · high confidence

Add Vue + Vite integration with TypeScript and Vue Query

This change introduces a new Vue + Vite integration scaffold that sets up a TypeScript-based project using Vite and the Vue Query library. The integration includes a Vite configuration using the official Vue plugin, a TypeScript configuration targeting ES2020 with strict linting rules, and a sample application demonstrating data fetching with Vue Query. The entry point mounts the Vue app with the VueQueryPlugin, and the main component displays loading, error, and success states for a simulated async query.

integrations/vue-vite · high confidence

Add Vue persister example demonstrating query caching

A new Vue example application has been added to showcase the \experimental\_createQueryPersister\ from \@tanstack/query-persist-client-core\. The app demonstrates how to persist query data to \localStorage\ for a list view and to \idb-keyval\ (IndexedDB) for individual post details, allowing visited posts to load instantly from cache while the list benefits from background refetching.

examples/vue/persister · high confidence

Add basic Vue Query example with devtools integration

A new basic example has been added to the Vue examples directory, demonstrating how to integrate TanStack Query with a Vue application using Vite. The example includes a full project structure with Vue components for listing and viewing posts, TypeScript configuration, and Vite build settings. It specifically showcases the use of the VueQueryPlugin for data fetching and includes the VueQueryDevtools component in the app layout, allowing users to inspect query states directly in the browser.

examples/vue/basic · high confidence

Add icon assets for Query Devtools UI

The Query Devtools now includes a dedicated set of SVG icons (such as Search, Trash, Chevron, Arrows, and Sun/Moon) to support its user interface components, enabling features like theme toggling and navigation within the devtools panel.

packages/query-devtools/src/icons · high confidence

Add infinite query example with max pages limit

This location introduces a Next.js example demonstrating how to use \useInfiniteQuery\ with a \maxPages\ constraint to limit the number of cached pages. The example includes a backend API endpoint that simulates paginated data and a frontend page that allows users to load older and newer pages while respecting the maximum page limit, along with standard configuration files for TypeScript and Next.js.

examples/react/infinite-query-with-max-pages · high confidence

Add no-unstable-deps rule to prevent React hook dependency errors

Introduces a new ESLint rule that flags when the direct result of TanStack Query hooks (such as useQuery, useMutation, etc.) is passed into the dependency array of React hooks like useEffect, useCallback, or useMemo. This prevents bugs caused by referential instability, guiding users to destructure the hook results before using them in dependency arrays. The rule also supports tracking custom query hook wrappers and handles specific cases like useQueries with a combine property.

packages/eslint-plugin-query/src/rules/no-unstable-deps · high confidence

Add programmatic devtools panel injection for Angular

The Angular Query experimental package now exposes an \injectDevtoolsPanel\ function, allowing developers to programmatically inject and control a TanStack Query devtools panel within their application. This feature supports configuration via a computed options function, including custom \QueryClient\ instances, error types, CSP nonces, shadow DOM targets, and a close callback. The implementation handles browser-only rendering, dynamic loading of the \@tanstack/query-devtools\ package, and proper cleanup via Angular's \DestroyRef\. A stub implementation is provided for production builds to ensure zero runtime overhead when devtools are not needed.

packages/angular-query-experimental/src/devtools-panel · high confidence

Add simple Angular example with experimental TanStack Query adapter

The \examples/angular/simple\ directory now contains a complete, runnable Angular application demonstrating the experimental \@tanstack/angular-query-experimental\ adapter. The example showcases modern Angular practices, including standalone components, \inject()\ for dependency injection, and \ChangeDetectionStrategy.OnPush\. It configures TanStack Query with \provideTanStackQuery\ and includes the \withDevtools\ provider for development tooling, while fetching data from the GitHub API using RxJS's \lastValueFrom\ within a query function.

examples/angular/simple · high confidence

Add simple Vue example for TanStack Query

A new 'simple' example has been added to the Vue examples directory, demonstrating a basic TanStack Query setup using Vue 3 and Vite. The example includes a minimal application that fetches repository data from the GitHub API, displays loading and error states, and integrates VueQueryDevtools. It also provides configuration files for TypeScript (using moduleResolution: Bundler), Vite, and package managers including Bun.

examples/preact/simple, examples/vue/2.6-basic, examples/vue/simple · high confidence

Added Lit Query adapter examples and lifecycle contract fixtures

The \examples/lit/basic\ directory now includes a comprehensive set of Lit components demonstrating the \@tanstack/lit-query\ adapter. This includes a basic query example (\basic-query.ts\), a dedicated mutation example (\mutation.ts\), and a full E2E demo (\main.ts\) showcasing query and mutation controllers, cache invalidation, and status tracking. Additionally, \lifecycle-contract.ts\ provides a fixture for verifying that query consumers correctly bind to their provider's \QueryClient\ instance even when moved between different provider contexts or detached from the DOM.

examples/lit/basic · high confidence

Added MSW mock service worker for offline example

The offline React example now includes a generated Mock Service Worker (MSW v2.1.7) file in the public directory. This addition enables the application to intercept and mock network requests during development, facilitating offline testing and consistent API simulation without requiring a live backend.

examples/react/offline/public · high confidence

Added SolidStart streaming example application

A new SolidStart example application has been added to demonstrate streaming capabilities, including routes for streamed, deferred, mixed, error handling, hydration, and prefetching. The example is configured with TanStack Solid Query for data fetching and includes the necessary entry points for client and server rendering.

examples/solid/solid-start-streaming/src · high confidence

Added SvelteKit project scaffolding files

The basic SvelteKit example now includes the standard entry-point files: app.html (the HTML shell), app.css (global styles with light/dark mode support), and app.d.ts (TypeScript declarations). These files provide the foundational structure required to run the SvelteKit application.

examples/svelte/basic/src · high confidence

Added new SVG assets for branding and partner logos

The media directory now includes two new SVG files: \emblem-light.svg\, a light-themed logo asset generated from Sketch, and \partner\_logo.svg\, a branded graphic featuring the text 'QUERY YOU?' with specific styling. These assets are available for use in documentation or UI components requiring these specific visual identities.

media · high confidence

Demo app showcases exhaustive-deps allowlist and prefer-query-options rules

The React ESLint plugin demo now includes examples demonstrating the new \allowlist\ option for the \exhaustive-deps\ rule (allowing specific variables like \api\ and types like \AnalyticsClient\ to be ignored) and the new \prefer-query-options\ rule (encouraging the use of \queryOptions\ for co-locating query keys and functions).

examples/react/eslint-plugin-demo · high confidence

Enforce property order for infinite query functions

The \infinite-query-property-order\ ESLint rule now ensures that properties in \infiniteQueryOptions\, \useInfiniteQuery\, and \useSuspenseInfiniteQuery\ follow a specific order: \queryFn\ must appear before \getPreviousPageParam\ and \getNextPageParam\. This helps prevent inference issues in infinite query configurations.

packages/eslint-plugin-query/src/rules/infinite-query-property-order · high confidence

Initial release of @tanstack/preact-query-devtools

This entry introduces the new \@tanstack/preact-query-devtools\ package, providing a dedicated developer tools integration for Preact applications. The diff establishes the package's foundational build and test infrastructure, including configuration for the \tsdown\ bundler to target both modern and legacy environments, ESLint rules tailored for Preact and TypeScript, and a Vitest test setup that integrates with Preact Testing Library. It also includes a changelog tracking version updates relative to the core \@tanstack/preact-query\ and \@tanstack/query-devtools\ packages.

packages/preact-query-devtools, packages/preact-query-persist-client, packages/solid-query-devtools · high confidence

Initial release of @tanstack/query-broadcast-client-experimental with Vite 8 build support

This entry introduces the new \@tanstack/query-broadcast-client-experimental\ package, which enables cross-tab query state synchronization. The package is built using Vite 8 and includes a test setup that integrates React Testing Library with React Query's notification manager. It depends on \@tanstack/query-core\ (currently at version 5.104.0) and provides the infrastructure for broadcasting query client updates across browser tabs.

packages/query-broadcast-client-experimental · high confidence

Introduce @tanstack/lit-query adapter for Lit components

Adds the new @tanstack/lit-query package, providing a Lit adapter for TanStack Query that uses Lit reactive controllers. This enables Lit developers to integrate query and mutation primitives directly into their components via controllers like createQueryController and createMutationController, along with supporting utilities such as QueryClientProvider and query options helpers. The package includes build configuration (tsdown), test setup, and example applications to demonstrate usage.

packages/lit-query · high confidence

Introduce Angular-specific persistence integration

The \angular-query-persist-client\ package is now available, providing the \withPersistQueryClient\ function to enable query state persistence in Angular applications. This feature integrates with the core persistence logic via \@tanstack/query-persist-client-core\ and uses Angular's \ENVIRONMENT\_INITIALIZER\ to restore query state on the browser side, exposing \onSuccess\ and \onError\ callbacks for restoration completion handling.

packages/angular-query-persist-client/src · high confidence

Introduce Preact Query Devtools for debugging in development

A new \@tanstack/preact-query-devtools\ package is added, providing \PreactQueryDevtools\ and \PreactQueryDevtoolsPanel\ components to inspect and debug TanStack Query state within Preact applications. The devtools are automatically disabled in production builds (returning null), while the panel supports configuration for positioning, theming, custom error types, and Shadow DOM rendering, wrapping the underlying \@tanstack/query-devtools\ engine.

packages/preact-query-devtools/src · high confidence

Introduce Preact adapter for TanStack Query

Adds the \@tanstack/preact-query\ package, providing a full-featured Preact adapter for TanStack Query. This includes Preact-specific implementations of core hooks (\useQuery\, \useMutation\, \useInfiniteQuery\, \useSuspenseQuery\, etc.), context providers (\QueryClientProvider\), and utilities for hydration (\HydrationBoundary\) and error boundaries (\QueryErrorResetBoundary\).

packages/preact-query/src · high confidence

Introduce Solid Query Devtools with client-side-only loading

Added the \SolidQueryDevtools\ and \SolidQueryDevtoolsPanel\ components to the \solid-query-devtools\ package. These components wrap the core TanStack Query Devtools, exposing configuration options for positioning, theming, error types, CSP nonces, and shadow DOM targeting. To ensure compatibility with server-side rendering, the devtools are loaded exclusively on the client using a \clientOnly\ utility that bypasses server-side execution, returning null during SSR.

packages/solid-query-devtools/src · high confidence

Introduce Solid Query adapter with \`use\*\` primitives and \`create\*\` aliases

The \@tanstack/solid-query\ package now provides a complete Solid.js adapter for TanStack Query. It introduces \useQuery\, \useInfiniteQuery\, \useMutation\, \useQueries\, \useIsFetching\, \useIsMutating\, and \useMutationState\ as the primary primitives, while maintaining \createQuery\, \createInfiniteQuery\, \createMutation\, etc. as aliases for compatibility. The adapter includes \QueryClient\ and \QueryClientProvider\ for context management, and adds \queryOptions\, \infiniteQueryOptions\, and \mutationOptions\ for sharing configuration. It also introduces a \reconcile\ option in query options to handle Solid's reactivity model for data updates.

packages/solid-query/src · high confidence

Introduce Solid.js persistence client provider

Added a new \PersistQueryClientProvider\ component in the \solid-query-persist-client\ package, enabling Solid.js applications to persist query client state. The provider manages the restoration lifecycle by calling \persistQueryClientRestore\ and subscribing to updates via \persistQueryClientSubscribe\ from the core persistence library, exposing \onSuccess\ and \onError\ callbacks to consumers while wrapping children in an \IsRestoringProvider\ to signal restoration status.

packages/solid-query-persist-client/src · high confidence

Introduce Solid.js-based TanStack Query DevTools

The TanStack Query DevTools have been rewritten in Solid.js, replacing the previous React implementation. This change introduces new entry points, \TanstackQueryDevtools\ and \TanstackQueryDevtoolsPanel\, which manage the devtools UI via a class-based API that mounts to a DOM element. The new implementation supports configuration options such as \theme\, \shadowDOMTarget\, and \styleNonce\, and includes features like picture-in-picture mode, light/dark theme support, and query/mutation editing capabilities within the devtools panel.

packages/query-devtools/src · high confidence

Introduce Svelte Persist Query Client package

Adds the \@tanstack/svelte-query-persist-client\ package, providing a \PersistQueryClientProvider\ component that automatically restores and persists query cache state in Svelte applications. The implementation leverages Svelte 5 runes (such as \$state\ and \$effect\) to manage the restoration lifecycle, exposing \onSuccess\ and \onError\ callbacks to handle the asynchronous cache hydration process. The package includes a full test suite covering cache restoration, initial data handling, and error scenarios, alongside build configurations for Vite 8 and TypeScript.

packages/svelte-query-persist-client · high confidence

Introduce Vue Query Devtools as a standalone package

The \@tanstack/vue-query-devtools\ package is now available, providing Vue-specific components (\VueQueryDevtools\ and \VueQueryDevtoolsPanel\) that wrap the core TanStack Query Devtools. This allows Vue developers to easily integrate the debugging interface into their applications with support for configuration options such as theme, position, and shadow DOM targeting. The package is built with Vite 8 and includes its own ESLint configuration and TypeScript setup.

packages/vue-query-devtools · high confidence

Introduce async storage persister with throttled persistence

Added the \query-async-storage-persister\ package, providing a \createAsyncStoragePersister\ function that persists React Query cache to an asynchronous storage backend (such as AsyncStorage or IndexedDB). The implementation includes an \asyncThrottle\ utility to limit the frequency of write operations, configurable via the \throttleTime\ option, and supports custom serialization, deserialization, and retry logic for failed saves.

packages/query-async-storage-persister/src · high confidence

Introduce context providers for PiP, theming, and devtools configuration

Added new context files (PiPContext, QueryDevtoolsContext, ThemeContext) and their shared types to manage Picture-in-Picture window state, devtools props, and theme selection. The PiPContext handles opening and closing the devtools popup, including resetting the 'pip\_open' local storage state on programmatic close to prevent auto-reopening, and copying parent window styles to the popup. The QueryDevtoolsContext exposes core devtools configuration like client, position, and theme. The ThemeContext provides a default 'dark' theme accessor. These contexts are exported via index.ts for use by devtools components.

packages/query-devtools/src/contexts · high confidence

Introduce environment, focus, and online managers for runtime-agnostic state

TanStack Query now exposes \environmentManager\, \focusManager\, and \onlineManager\ in \query-core\, allowing you to override how the library detects the server environment, browser focus, and network connectivity. This is essential for non-standard runtimes (like Service Workers or React Native) where the default \window\ checks may fail, and enables manual control over these states to better manage refetching and scheduling behavior.

packages/query-core/src · high confidence

Introduce experimental Angular Query adapter with signal-based APIs

The \@tanstack/angular-query-experimental\ package is now available, providing a native Angular integration for TanStack Query. It introduces signal-based injection functions such as \injectQuery\, \injectMutation\, \injectInfiniteQuery\, and \injectQueries\, allowing developers to manage data fetching and mutations using Angular's reactive primitives. The package includes providers like \provideAngularQuery\ for setup, utilities for tracking fetching and mutation states (\injectIsFetching\, \injectIsMutating\), and support for Angular v19+ PendingTasks to integrate with \whenStable()\. This experimental adapter is designed to align with React Query's API while leveraging Angular's dependency injection and change detection mechanisms.

packages/angular-query-experimental/src · high confidence

Introduce experimental cross-tab query synchronization

Adds a new \broadcastQueryClient\ utility that synchronizes TanStack Query state across browser tabs and windows using the BroadcastChannel API. This feature allows queries updated in one tab to automatically reflect in others, while also handling edge cases such as preventing data overwrites on 'added' messages, recovering from errors during cross-tab message application, and providing an \onBroadcastError\ callback to handle serialization failures (e.g., for non-cloneable objects like streams or functions).

packages/query-broadcast-client-experimental/src · high confidence

Introduce new Lit Query adapter with reactive controllers and context provider

This change adds the \@tanstack/lit-query\ package, providing a native adapter for Lit elements. It introduces a \QueryClientProvider\ component that shares a \QueryClient\ via Lit context, and a suite of reactive controllers (\createQueryController\, \createInfiniteQueryController\, \createMutationController\, \createQueriesController\) that integrate TanStack Query with Lit's lifecycle. The adapter supports reactive options through an \Accessor\ type, allowing query keys and filters to depend on host state, and includes utility hooks like \useIsFetching\ and \useIsMutating\ for tracking cache status.

packages/lit-query/src · high confidence

Introduce query-persist-client-core package with fine-grained and client-wide persistence

The persistence logic has been split into a new \query-persist-client-core\ package, providing two distinct persistence approaches. First, \experimental\_createQueryPersister\ enables fine-grained, per-query persistence with support for async serialization/deserialization, configurable \refetchOnRestore\ behavior, and automatic cleanup of corrupted or expired entries. Second, the existing \persistQueryClient\ functions (\persist\, \restore\, \subscribe\) are retained for whole-client cache persistence, now featuring improved error handling that discards the persisted cache on restore failure. This separation allows users to choose between granular query control and simple client-wide caching.

packages/query-persist-client-core/src · high confidence

Introduce streamed hydration with CSP nonce support

The \react-query-next-experimental\ package now includes \ReactQueryStreamedHydration\, a new component that streams dehydrated query data from the server to the client using \useServerInsertedHTML\ to avoid unnecessary suspensions. This implementation adds a \nonce\ prop to support Content Security Policy (CSP) enforcement by allowing inline scripts to execute safely, and utilizes an HTML-escaping utility to mitigate potential XSS injection risks during data serialization.

packages/react-query-next-experimental/src · high confidence

New Angular devtools panel example with lazy-loading support

Added a new Angular example application that demonstrates how to integrate the TanStack Query devtools panel. The example includes a basic implementation using \injectDevtoolsPanel\ for programmatic panel toggling, as well as a lazy-loading variant that dynamically imports the devtools module on demand. The project is configured for Angular 19+ using standalone components, the \@angular/build\ builder, and \moduleResolution: Bundler\.

examples/angular/devtools-panel · high confidence

New CI and release automation scripts

The repository now includes several new scripts to automate documentation generation, release creation, and CI maintenance. The \generate-docs\ script handles TypeDoc-based reference documentation, including logic to redirect old flat URLs and render property lists as tables. The \create-github-release\ script automates changelog generation by parsing conventional commits and resolving PR authors. Additionally, \verify-links\ checks for broken relative links in documentation, \generate-labeler-config\ creates GitHub labeler configurations, and \getTsdownConfig\ provides build configurations for the new \tsdown\ bundler.

scripts · high confidence

New ESLint rule to enforce stable QueryClient instantiation

The \stable-query-client\ rule has been added to the ESLint plugin to detect when a \QueryClient\ is instantiated directly inside a React component or hook, which causes unnecessary re-creation on every render. When this pattern is detected, the rule reports an error and offers an automatic fix that wraps the instantiation in \React.useState\ to ensure stability across renders.

packages/eslint-plugin-query/src/rules/stable-query-client · high confidence

New ESLint rule to prevent void returns in queryFn

Added the \no-void-query-fn\ rule to the \eslint-plugin-query\ package. This rule flags \queryFn\ implementations that return \void\ or \undefined\, ensuring that query functions always resolve to a defined value. The rule uses TypeScript's type checker to analyze the return type of the function, including awaited types, and reports an error if the return type is illegal.

packages/eslint-plugin-query/src/rules/no-void-query-fn · high confidence

New Lit Query examples for basic, pagination, and SSR scenarios

The examples/lit directory now includes three runnable demo applications: a basic query example, a pagination example with a Node.js mock API server, and a server-side rendering (SSR) example using @lit-labs/ssr. Each example is configured with Vite, TypeScript, and environment-based port settings, and depends on @tanstack/lit-query@0.2.0. These examples demonstrate how to integrate TanStack Query with Lit components in standard, paginated, and SSR contexts.

examples/lit · high confidence

New PersistQueryClientProvider component with client-side restoration logic

The react-query-persist-client package now exposes a PersistQueryClientProvider component that manages the restoration of persisted query data. This provider wraps the standard QueryClientProvider and uses an IsRestoringProvider to signal when data is being restored from storage. It handles the restoration process asynchronously, calling onSuccess or onError callbacks based on the result, and subscribes to query updates after restoration completes. The component is marked with 'use client' to ensure it runs in the browser environment.

packages/react-query-persist-client/src · high confidence

New React Algolia search example

Added a new example demonstrating how to integrate TanStack Query with Algolia for search functionality. The example includes a React application using Vite, featuring an infinite query implementation via \useInfiniteQuery\ and \skipToken\ to handle search inputs and pagination. It provides a complete setup with ESLint configuration, TypeScript settings, and styling to showcase querying the Algolia 'bestbuy' index.

examples/react/algolia · high confidence

New React Native example app for React Query

This location introduces a complete React Native example application demonstrating React Query integration. The app features a movie-listing interface with navigation, utilizing hooks like useAppState and useOnlineManager to handle platform-specific behaviors (such as focus-based refetching and online status) and React Query's QueryClientProvider for data management. It includes UI components for lists, details, loading states, and error handling, along with configuration files for Expo, TypeScript, and ESLint to support the development environment.

examples/react/react-native · high confidence

New React Suspense example using Vite and modern React patterns

The suspense example has been migrated to Vite and updated to use modern React patterns, including the \react-jsx\ compiler mode and \useTransition\ for non-blocking UI updates. It demonstrates TanStack Query's \useSuspenseQuery\ hook within a \React.Suspense\ boundary, featuring lazy-loaded components, an error boundary for recovery, and manual query prefetching to improve navigation performance.

examples/react/suspense · high confidence

New React example demonstrating Shadow DOM integration

Added a new example in \examples/react/shadow-dom\ that shows how to mount a React application inside a Shadow DOM. The example configures a Vite + React + TypeScript project where the root element attaches a shadow root, and passes this shadow root to the \ReactQueryDevtools\ via the \shadowDOMTarget\ prop to ensure the devtools render correctly within the isolated DOM scope.

examples/react/shadow-dom · high confidence

New Solid.js persistence client package

The \@tanstack/solid-query-persist-client\ package is introduced, providing a Solid.js implementation for client-side data persistence. This new capability allows Solid.js applications to persist query cache data, leveraging the shared \@tanstack/query-persist-client-core\ and \@tanstack/solid-query\ dependencies. The package includes its own build configuration (using tsdown), test setup (Vitest with jsdom), and TypeScript configuration to support this integration.

packages/solid-query-persist-client · high confidence

New SolidStart streaming example routes

The SolidStart streaming example application now includes a comprehensive set of new route pages demonstrating various Solid Query behaviors in a server-side rendering context. These additions include a 404 handler, a home page, and specific examples for deferred rendering, hydration state comparison, mixed streaming strategies, link prefetching, error handling, and batched method scheduling. These routes serve as a practical reference for implementing streaming SSR with Solid Query.

examples/solid/solid-start-streaming/src/routes · high confidence

New exhaustive-deps ESLint rule for React Query

The \exhaustive-deps\ rule is now available in \eslint-plugin-query\ to enforce that all variables used in \queryFn\ are included in the \queryKey\. The rule analyzes the function body to detect external references, filters out irrelevant ones (such as function call targets, \instanceof\ operands, or global imports), and supports an \allowlist\ configuration for variables and types. It provides auto-fix suggestions to add missing dependencies to the query key, helping prevent stale data issues.

packages/eslint-plugin-query/src/rules/exhaustive-deps · high confidence

New infinite scroll example using Svelte Query runes

Added a new Svelte component example demonstrating infinite scrolling with \@tanstack/svelte-query\. The \LoadMore.svelte\ component uses the \createInfiniteQuery\ hook with the \initialPageParam\ option to fetch paginated data from the SWAPI endpoint, rendering a list of planets and a button to load more items as the user scrolls.

examples/svelte/load-more-infinite-scroll/src/lib · high confidence

Persist-client core package initialization and build configuration

The \@tanstack/query-persist-client-core\ package has been introduced as a separate core package for persistence logic, initially released at version 5.104.0. This new package includes a complete build and test setup using \tsdown\ for bundling (supporting both modern and legacy configurations via \tsconfig.legacy.json\ and \tsconfig.prod.json\), \vitest\ for testing with coverage and type-checking, and ESLint for code quality. The package depends on \@tanstack/query-core\ and includes a changelog documenting its history and dependency updates.

packages/angular-query-experimental, packages/query-persist-client-core · high confidence

React Query DevTools now supports theming, disabled query filtering, and a standalone panel component

The React Query DevTools package has been updated to expose new configuration options and a new component. Users can now customize the devtools appearance by passing a \theme\ prop (light, dark, or system) and choose to hide disabled queries using the \hideDisabledQueries\ option. A new \ReactQueryDevtoolsPanel\ component is available for embedding the devtools UI directly into the application layout, offering additional controls like custom styling, an \onClose\ callback, and shadow DOM support. The main \ReactQueryDevtools\ component also supports these options, along with \styleNonce\ and \shadowDOMTarget\ for enhanced compatibility with strict security policies. Additionally, the devtools are now strictly limited to development mode in the main entry point, ensuring they do not run in production builds.

packages/react-query-devtools/src · high confidence

React Query v4 codemod now handles query key array transformations and import updates

The \packages/query-codemods\ package has been updated with a new v4 codemod that automatically migrates code from the legacy \react-query\ API to the new \@tanstack/react-query\ structure. This codemod transforms query keys from string literals into arrays (e.g., \useQuery('todos')\ becomes \useQuery(\['todos'\])\), updates \useQueries\ to accept an object with a \queries\ property, and rewrites import statements to point to the new \@tanstack/react-query\ and \@tanstack/react-query-devtools\ packages. It also handles \QueryClient\ and \QueryCache\ method calls, ensuring that methods like \cancelQueries\ and \getQueryData\ receive the new array-based keys.

packages/query-codemods/src · high confidence

React Query v5: New hydration, suspense, and options APIs

This release introduces a major overhaul of the React Query API. The \HydrationBoundary\ component is now available to handle server-side rendering hydration, intelligently merging new queries during render and existing ones in an effect. Suspense behavior is enhanced with a 1-second minimum \staleTime\ to prevent unnecessary refetches, and \useQueries\ now supports suspense and error boundary handling. A new typed \queryOptions\ and \infiniteQueryOptions\ API allows sharing options across hooks and imperative APIs, while \mutationOptions\ provides similar type safety for mutations. The library now supports React 19, includes \usePrefetchQuery\ and \usePrefetchInfiniteQuery\ for data prefetching, and adds a \subscribed\ option to allow hooks to unsubscribe from the query cache.

packages/react-query/src · high confidence

Solid Query adapter release and build infrastructure

The @tanstack/solid-query package is released (starting at version 5.100.8 and progressing to 5.104.0), providing the Solid.js adapter for TanStack Query. This release includes a new build system using tsdown to generate ESM and CJS bundles, alongside updated Vite and Vitest configurations for testing and coverage. The package also incorporates several upstream fixes from query-core, including a fix for an Astro SSR crash, improved type propagation for mutation state, and the removal of experimental render-time prefetching.

packages/solid-query · high confidence

Star Wars example adds film listing and detail pages using Svelte Query

The Star Wars example now includes dedicated routes for browsing films and viewing individual film details. The new +page.svelte components in the films directory use @tanstack/svelte-query to fetch data from the Star Wars API, displaying loading and error states alongside lists of films and their associated characters.

examples/svelte/star-wars/src/routes/films · high confidence

TanStack Preact Query package initialization

The @tanstack/preact-query package has been added, providing Preact-specific hooks for data fetching, caching, and mutations. This release includes the core implementation, a test setup configured with Vitest and jsdom, and build tooling that utilizes tsdown for bundling and Vite for testing. The package is designed to work with the @tanstack/query-core library, as indicated by the dependency updates in the changelog.

packages/preact-query · high confidence

Removals

Removal of legacy React Query provider and hooks

The legacy \ReactQueryProvider\ context provider and the \useQuery\ hook implementation have been removed from \src/index.js\. This change eliminates the previous context-based state management and query execution logic, indicating a migration to a different architecture or library version for data fetching.

src · high confidence

Architecture

Angular Query Persist Client package scaffolding and build configuration

The \@tanstack/angular-query-persist-client\ package has been initialized with a new build and test infrastructure. It now uses Vite for testing and \tsdown\ for bundling, replacing previous tooling. The configuration includes specific TypeScript setups for production (\tsconfig.prod.json\) and legacy TypeScript versions (\tsconfig.legacy.json\), alongside a Vite test configuration that integrates Angular's testing utilities via \test-setup.ts\. Additionally, an \.attw.json\ file is added to ignore the \cjs-resolves-to-esm\ rule, and ESLint is configured with JSDoc and spell-checking rules.

packages/angular-query-persist-client · high confidence

Refactor ESLint plugin utility helpers for improved AST analysis

The \packages/eslint-plugin-query/src/utils\ directory has been restructured with new utility modules to support more robust rule implementation. \ast-utils.ts\ introduces helpers for traversing the AST (such as \traverseUpMemberExpression\ and \getFunctionAncestor\) and extracting external references, which improves how the plugin identifies dependencies and scopes. \detect-react-query-imports.ts\ centralizes the logic for detecting TanStack Query imports, allowing rules to accurately scope their checks to relevant code. Additionally, \create-property-order-rule.ts\ provides a factory for generating rules that enforce property ordering in configuration objects, while \sort-data-by-order.ts\ and \unique-by.ts\ offer generic data manipulation utilities used by these rules.

packages/eslint-plugin-query/src/utils · high confidence

Behavioural changes

Add Next.js App Router prefetching example with React Query v5

The Next.js App Router example in examples/react/nextjs-app-prefetching has been modernized to use React Query v5, replacing the deprecated prefetchQuery and fetchQuery APIs with the new query() method for data fetching and hydration. The example now uses environmentManager.isServer() to determine the execution environment and implements promise dehydration to include pending queries in the hydration state, ensuring a smoother user experience during server-side rendering.

examples/react/nextjs-app-prefetching · high confidence

Add NodeNext module resolution configuration and test hooks

The react-nodenext integration now includes a tsconfig.json that configures TypeScript for NodeNext module resolution and declaration emission, alongside new hook files (hooks.cts and hooks.ts) that serve as test fixtures using @tanstack/react-query to verify the integration's behavior under this module system.

integrations/react-nodenext · high confidence

Add Svelte auto-refetching example using runes

The auto-refetching example in the SvelteKit integration has been updated to use Svelte runes (e.g., $state, $props) and the new adapter APIs (createQuery, createMutation). The example now demonstrates periodic data fetching with a configurable interval and includes mutations for adding and clearing items, providing a modern reference for implementing auto-refetching behavior in Svelte applications.

examples/svelte/auto-refetching/src/routes · high confidence

Angular Query devtools are now conditionally loaded with configurable options

The devtools integration has been restructured to support conditional loading and new configuration options. By default, the devtools panel loads lazily only in development mode, but this behavior can be overridden using the new \loadDevtools\ option (accepting \auto\, \true\, or \false\) to force loading in production or disable it in development. A new \theme\ option allows users to set the panel's appearance to 'light', 'dark', or 'system'. The implementation uses a stub for production builds to ensure zero runtime overhead, and the feature is now exposed via a dedicated \withDevtools\ provider function that handles dynamic mounting and configuration updates.

packages/angular-query-experimental/src/devtools · high confidence

Angular basic example migrated to standalone components and Angular CLI

The basic Angular example has been converted to use the Angular CLI project structure and standalone components, replacing the previous module-based setup. The application now uses the \app.config.ts\ for provider configuration, including TanStack Query with devtools, and leverages Angular's signal-based APIs and \inject()\ for dependency injection. The example demonstrates fetching posts with background updates and caching, using the new \@tanstack/angular-query-experimental\ package.

examples/angular/basic · high confidence

Basic Svelte example updated to use Svelte runes and query persistence

The basic Svelte example has been rewritten to use Svelte runes (e.g., $props) and now includes query data persistence via localStorage. The layout component sets up a QueryClient with browser-only execution and wraps the application in a PersistQueryClientProvider, ensuring that cached query data survives page reloads.

examples/svelte/basic/src/routes · high confidence

Build tooling and configuration updates for storage persister packages

The @tanstack/query-async-storage-persister and @tanstack/query-sync-storage-persister packages have been updated to use tsdown for bundling (replacing tsup) and now generate both modern and legacy builds. The build configuration now relies on a custom resolution condition (@tanstack/custom-condition) for both standard and SSR environments, and TypeScript type-checking is enabled in the test runner. Additionally, ESLint has been migrated to the flat config format, and legacy TypeScript configuration files have been added to support older TypeScript versions.

packages/query-async-storage-persister, packages/query-sync-storage-persister · high confidence

Build tooling migration to Vite 8 and tsdown

The eslint-plugin-query package has migrated its build infrastructure to use Vite 8 and the tsdown bundler. This change updates the build configuration to produce both modern and legacy builds, ensuring compatibility with newer tooling versions while maintaining support for older environments. Users benefit from improved build performance and alignment with the latest ecosystem standards.

packages/eslint-plugin-query, packages/query-core · high confidence

Deprecation of createSyncStoragePersister

The \createSyncStoragePersister\ function in the \@tanstack/query-sync-storage-persister\ package is now deprecated. Users are advised to migrate to \createAsyncStoragePersister\ from the \@tanstack/query-async-storage-persister\ package instead. The implementation remains available but signals that synchronous storage is no longer the recommended approach.

packages/query-sync-storage-persister/src · high confidence

ESLint plugin restructured with new rules and flat config support

The \@tanstack/eslint-plugin-query\ has been reorganized to support ESLint's modern flat configuration format, exposing dedicated \flat/recommended\ and \flat/recommended-strict\ configs alongside the legacy ones. This update introduces two new linting rules: \mutation-property-order\, which enforces the correct order of inference-sensitive properties in \useMutation()\, and \prefer-query-options\, which encourages co-locating \queryKey\ and \queryFn\ using \queryOptions()\ builders. The plugin's internal structure has been refactored to use \ESLintUtils.RuleCreator\ and improved TypeScript typing for exported interfaces.

packages/eslint-plugin-query/src · high confidence

ESLint rule now detects rest destructuring and spread usage on Suspense hooks and custom query results

The \no-rest-destructuring\ rule has been expanded to cover \useSuspenseQuery\, \useSuspenseQueries\, and \useSuspenseInfiniteQuery\, ensuring developers are warned against excessive re-renders when using rest destructuring on these hooks. Additionally, the rule now detects when a query result variable is spread elsewhere in the code and can identify rest destructuring on custom query hooks by analyzing return types, providing more comprehensive linting coverage for TanStack Query usage.

packages/eslint-plugin-query/src/rules/no-rest-destructuring · high confidence

Example app migrated to use the external react-query package

The example application has been refactored to import the React Query library from the external 'react-query' package instead of using the local 'react-query.js' implementation. This change removes the local query client code and configuration files (such as .eslintrc, .prettierrc, and .rescriptsrc.js) from the example directory, simplifying the setup to rely on the standard library for data fetching and caching.

example · high confidence

Initialize SvelteKit playground structure and update styling

The Svelte playground example has been restructured to use the SvelteKit framework, introducing standard project files such as \app.d.ts\ for TypeScript declarations and \app.html\ for the HTML entry point. The application's visual presentation has been updated with a dark theme, applying a dark background and white text to the body, while also refining the font-family definitions in the CSS.

examples/svelte/playground/src · high confidence

Migrate React simple example to Vite

The React simple example in examples/react/simple has been migrated from its previous build setup to Vite. This change introduces a new project structure including a Vite configuration (vite.config.ts), an HTML entry point (index.html), and updated TypeScript settings (tsconfig.json) to support modern module resolution and JSX runtime. The application code (src/index.tsx) now uses the standard React 18 createRoot API, and the example includes specific ESLint rules for the JSX runtime and React hooks to ensure correct linting in the new environment.

(repo-wide) · high confidence

Migrate Star Wars example to Vite with React 18 and Tailwind CSS

The React Star Wars example has been rebuilt using Vite as the build tool, replacing the previous setup. This update upgrades the application to use React 18's concurrent rendering features (via \ReactDOM.createRoot\) and adopts the modern \react-jsx\ runtime for JSX transformation. The UI styling has been migrated to Tailwind CSS v4, utilizing its new import syntax and theme configuration. Additionally, the example now includes a dedicated ESLint configuration extending \plugin:react/jsx-runtime\ to align with the new React version requirements.

examples/react/star-wars · high confidence

Migrate basic GraphQL example to Vite and modern tooling

The basic GraphQL request example has been modernized to use Vite as the build tool, replacing the previous setup. This includes a new Vite-compatible project structure with an \index.html\ entry point, a \tsconfig.json\ configured for ES2020 and bundler mode, and a flat \eslint.config.js\ using the new TanStack and React ESLint plugins. The application code in \src/index.tsx\ now uses \ReactDOM.createRoot\ for rendering and demonstrates TanStack Query features like background refetching and caching via \graphql-request\.

examples/react/basic-graphql-request · high confidence

Migrate build tooling to Vite 8 and tsdown

The @tanstack/react-query-next-experimental package now builds using Vite 8 and the tsdown bundler, replacing the previous toolchain. This change updates the build configuration (vite.config.ts, tsdown.config.ts) and ensures compatibility with the latest React hooks linting rules via the new eslint.config.js setup. Users benefit from faster builds and alignment with the core react-query v5.104.0 release, which also adopted Vite 8.

packages/react-query-next-experimental · high confidence

Migrate build tooling to tsdown and update test configuration

The query-devtools package has switched its build system from tsup to tsdown, introducing a new tsdown.config.ts that bundles the Solid.js runtime for the compiled output while keeping type declarations external. This change is accompanied by the addition of legacy and production-specific tsconfig files to support different TypeScript versions and build targets, as well as a new ESLint configuration. Additionally, the test setup has been updated to use @solidjs/testing-library with Vitest, ensuring consistent testing behavior for the Solid-based devtools components.

packages/query-devtools · high confidence

Migrate query-codemods to ESLint flat config and Vitest v4

The query-codemods package has been updated to use the new ESLint flat configuration format (eslint.config.js) and upgraded to Vitest v4 for testing. This change introduces a dedicated ESLint configuration that extends the root config while disabling specific rules (such as spell-checking and import ordering) suitable for a codemod package, and configures Vitest with Istanbul coverage, type-checking, and mock restoration. Users running the codemods will benefit from consistent linting and more robust test execution, though the underlying codemod logic remains unchanged.

packages/query-codemods · high confidence

Optimistic updates example updated to use Svelte Runes

The optimistic updates example in the Svelte adapter has been rewritten to use Svelte Runes. This update enables the use of modern Svelte reactivity primitives like $state and $props, and configures the project with the runes compiler option to ensure compatibility with the latest Svelte features.

examples/svelte/load-more-infinite-scroll, examples/svelte/optimistic-updates · high confidence

React Query Devtools package scaffolding and build configuration

The \packages/react-query-devtools\ directory has been initialized with the necessary configuration files to support the package's build and test lifecycle. This includes a \tsdown.config.ts\ for bundling, \vite.config.ts\ for Vitest testing with JSDOM and Istanbul coverage, and ESLint configurations (\eslint.config.js\) enforcing React Hooks rules. Additionally, \tsconfig.json\ variants are provided for modern, legacy, and production builds, alongside a \test-setup.ts\ to handle React Query notification wrapping during tests. A \.attw.json\ file is also added to ignore resolution rules for analysis tools.

packages/react-query-devtools · high confidence

React Query Persist Client package restructured with new build and test configuration

The @tanstack/react-query-persist-client package has been updated to version 5.104.0, which includes a build migration to Vite 8. This release also introduces a new ESLint configuration using the flat config format with specific React Hooks rules, switches the build tooling from tsup to tsdown for generating both modern and legacy builds, and establishes a new Vitest test setup that integrates with React Testing Library and enables type checking and coverage reporting.

packages/react-query-persist-client · high confidence

React Query v5.104.0 adopts Vite 8 and refines query hooks and types

This release upgrades the build toolchain to Vite 8, which may require your project to align with Vite 8 compatibility. It also changes how prefetching hooks work: \usePrefetchQuery\ and \usePrefetchInfiniteQuery\ now use \queryClient.query\ and \queryClient.infiniteQuery\ under the hood, and the experimental render-time prefetching along with the \promise\ property on query results have been removed. Several type and behavior fixes are included: \useQueries\ and \useSuspenseQueries\ now throw falsy errors to the error boundary, \useMutationState\'s \select\ callback correctly propagates generic type parameters, \queryOptions\ and \infiniteQueryOptions\ return types no longer leak internal data tag symbols, \TData\ defaults for infinite query options now match their hook generics, mutation variables are optional when \undefined\ is part of \TVariables\, optimistic fetching is suppressed for unsubscribed \useQueries\, and \placeholderData\ is removed from suspense infinite queries.

packages/react-query · high confidence

React offline example migrated to Vite with modern React configuration

The React offline example has been modernized by migrating from its previous build setup to Vite, introducing a new \vite.config.ts\ and \index.html\ entry point. The project now uses the \react-jsx\ runtime (configured via \.eslintrc\ extending \plugin:react/jsx-runtime\ and \tsconfig.json\), aligning with React 17+ conventions. The example demonstrates offline persistence using \@tanstack/react-query-persist-client\ with \createAsyncStoragePersister\ and includes MSW for mocking API responses, providing a complete, runnable demonstration of handling offline mutations and cache restoration.

examples/react/offline · high confidence

Repository restructured to TanStack Query v5 with modern tooling and AI policies

The repository has been completely restructured to align with TanStack Query v5. The project now uses pnpm v11 with a strict workspace configuration (including \blockExoticSubdeps\ and \trustPolicy\), replaces the legacy Travis CI with Nx Cloud, and migrates from Rollup/Babel to tsdown for building. ESLint has been upgraded to flat config, and the package has been renamed from \react-query\ to \@tanstack/react-query\. New contributor guidelines include a dedicated AI Policy and instructions for AI agents, while the README has been updated to reflect the new ecosystem and branding.

(repo-wide) · high confidence

Rewrote Svelte playground example to use Svelte runes and TanStack Query adapter

The Svelte playground example in \examples/svelte/playground/src/routes\ has been completely rewritten to leverage Svelte's new runes API (such as \$state\, \$derived\, and \$props\) and the updated TanStack Query Svelte adapter. This change updates the demo application's components (\+layout.svelte\, \+page.svelte\, \App.svelte\, \AddTodo.svelte\, \EditTodo.svelte\, and \TodosList.svelte\) to use modern Svelte syntax for reactivity and state management, replacing the previous component-based approach. Users viewing this example will now see code that aligns with Svelte's latest runtime features, providing an up-to-date reference for implementing data fetching and mutations with TanStack Query in a SvelteKit environment.

examples/svelte/playground/src/routes · high confidence

Rick and Morty example migrated to Vite and Tailwind CSS

The React Rick and Morty example has been rebuilt using Vite as the build tool and Tailwind CSS for styling, replacing the previous setup. The application now uses \react-router-dom\ for navigation between Home, Episodes, and Characters pages, leveraging TanStack Query for data fetching and caching. Configuration files such as \vite.config.ts\, \tsconfig.json\, and \.eslintrc\ are included to support this modern stack, and the entry point has been updated to use \ReactDOM.createRoot\ for rendering.

examples/react/rick-morty · high confidence

SSR example updated to use Svelte runes and new query API

The SvelteKit SSR example in examples/svelte/ssr/src/routes has been rewritten to align with modern Svelte practices. The layout component now uses Svelte runes ($props) to access props, and the page load functions utilize the new queryClient.query() method instead of the deprecated prefetchQuery/fetchQuery calls. This ensures the example correctly demonstrates current best practices for server-side rendering with TanStack Query in a SvelteKit application.

examples/svelte/ssr/src/routes · high confidence

Star Wars example characters pages rewritten with TanStack Query

The Star Wars example application's character listing and detail views have been updated to use the TanStack Svelte Query adapter. The character list page now fetches and displays character data using \createQuery\, while the individual character detail page utilizes the same pattern to load character specifics, homeworld information, and associated films, replacing the previous implementation with a standardized data-fetching approach.

examples/svelte/star-wars/src/routes/characters · high confidence

Star Wars example now uses Svelte runes and TanStack Query

The Star Wars example in the Svelte kit has been updated to use Svelte runes (specifically $props) and TanStack Query. The layout component now wraps the application in a QueryClientProvider, enabling data fetching capabilities via TanStack Query instead of previous state management approaches.

examples/svelte/star-wars/src/routes · high confidence

Star Wars example updated to use SvelteKit with Tailwind CSS

The Star Wars example has been migrated to a SvelteKit structure, introducing standard application entry points (app.html, app.d.ts) and styling via Tailwind CSS. This change provides a modern, standardized foundation for the example, replacing previous setup with SvelteKit's default configuration and Tailwind's utility-first approach for consistent theming.

examples/svelte/star-wars/src · high confidence

Svelte Query Devtools rewritten with Svelte Runes and new configuration options

The Svelte Query Devtools component has been rewritten to use Svelte Runes (via $props and $state) and now supports additional configuration options including theme, shadowDOMTarget, and hideDisabledQueries. The devtools instance is now properly updated when options change after mount, and the component includes comprehensive tests for all prop forwarding and lifecycle behaviors.

packages/svelte-query-devtools · high confidence

Svelte Query adapter rewritten for Svelte runes and modern tooling

The Svelte Query adapter has been rewritten to use Svelte runes, requiring Svelte 5+ and changing how reactive state is handled internally. The package now ships with a Vite 8 build, includes a dedicated ESLint configuration for Svelte files, and provides a \svelte.config.js\ that enables runes by default. Additionally, the adapter has been decoupled from SvelteKit, making it usable in any Svelte application.

packages/svelte-query · high confidence

Svelte examples updated to use Svelte runes

The Svelte example projects (basic, auto-refetching, and ssr) have been updated to enable the new Svelte runes mode. This is configured in \svelte.config.js\ by setting \compilerOptions.runes\ to \true\, which changes how reactivity is handled in Svelte components, requiring developers to use the new runes API instead of the legacy reactive declarations.

examples/svelte/basic · high confidence

TanStack Query Svelte adapter rewritten to use Svelte Runes

The Svelte adapter has been completely rewritten to leverage Svelte's new runes-based reactivity system ($state, $derived, $props, etc.), replacing the previous implementation. This change introduces new Svelte components for dependency injection and hydration, specifically QueryClientProvider and HydrationBoundary, and adds new utility functions for sharing options across calls: queryOptions, infiniteQueryOptions, and mutationOptions. The core hooks (createQuery, createMutation, createQueries, etc.) now use Svelte's native reactivity primitives internally, and the adapter no longer depends on SvelteKit, making it compatible with NodeNext and other non-SvelteKit environments.

packages/svelte-query/src · high confidence

Updated React Router example to use React Query v5 and TypeScript 5.7

The React Router example in the \examples/react/react-router/src/routes\ directory has been rewritten to align with modern best practices. The routes now utilize \@tanstack/react-query\ v5, specifically adopting the \queryOptions\ and \useSuspenseQuery\ APIs for data fetching and rendering. The implementation also reflects the TypeScript 5.7 update, evidenced by the use of advanced type inference patterns such as \Awaited\<ReturnType\<...\>\>\ for loader data. Additionally, the example now includes dedicated route files for contact details, editing, creation, and deletion, providing a more complete demonstration of React Router's routing capabilities integrated with React Query.

examples/react/react-router/src/routes · high confidence

Updated React integration examples to use react-scripts with Webpack

The React integration examples in the \react-webpack-4\ and \react-webpack-5\ directories have been updated to use \react-scripts\ as the build tool, replacing the previous custom Webpack configurations. These examples now include standard React application structures with \index.html\, \App.js\, and \index.js\ files, leveraging \@tanstack/react-query\ for data fetching and \@tanstack/react-query-devtools\ for development. The \webpack.config.js\ files have been removed as \react-scripts\ handles the build process internally, simplifying the setup for users testing React integrations.

integrations/react-webpack-4, integrations/react-webpack-5 · high confidence

Updated Svelte SSR example to use Svelte runes and createQuery

The SvelteKit SSR example in \examples/svelte/ssr/src/lib\ has been rewritten to leverage Svelte's new runes syntax (specifically \$props\) and the \createQuery\ API from \@tanstack/svelte-query\. This change updates the \Post.svelte\ and \Posts.svelte\ components to use modern reactivity patterns, replacing previous implementation details with a cleaner, rune-based approach for fetching and displaying post data.

examples/svelte/ssr/src/lib · high confidence

Updated SvelteKit SSR example with modern default templates

The SvelteKit SSR example in the examples directory has been updated to use the latest default project templates. This includes a new app.html shell with SvelteKit preload attributes, a global app.d.ts for type definitions, and a comprehensive app.css stylesheet featuring modern CSS variables, dark/light mode support via prefers-color-scheme, and updated styling for buttons and layout elements.

examples/svelte/ssr/src · high confidence

Updated SvelteKit project scaffolding for the load-more infinite scroll example

The example project has been updated to use the standard SvelteKit template structure. This includes adding the default app.css styles (with light/dark mode support), the app.html entry point, and the app.d.ts type definitions, ensuring the example aligns with current SvelteKit conventions.

examples/svelte/load-more-infinite-scroll/src · high confidence

Updated prepack script to align with new package structure

The prepack script has been updated to prepare the package for publishing by stripping 'dist/' prefixes from file paths in package.json fields (types, module, exports) and removing build-related fields (devDependencies, files, publishConfig, scripts). This ensures that type declarations and other assets are correctly referenced at the package root or sub-paths, supporting applications using moduleResolution: node.

packages/angular-query-experimental/scripts · high confidence

Test coverage

Add Vue Query declaration emit integration tests; Added ErrorBoundary component for Preact; Added Svelte-specific test suite for query options and internal utilities; Added comprehensive test coverage for Angular Query experimental hooks; Added comprehensive test coverage for Query Devtools components and utilities; Added comprehensive test coverage for Solid Query; Added comprehensive test suite for Preact Query adapter; Added comprehensive test suite for createQuery; Added comprehensive test suite for lit-query controllers and context; Added comprehensive tests for Svelte createMutation; Added test coverage for ReactQueryDevtools and ReactQueryDevtoolsPanel components; Added test coverage for Solid Query Devtools components; Added test coverage for eslint-plugin-query rules; Added test coverage for query-devtools context providers; Added test coverage for query-persist-client-core; Added tests for HydrationBoundary context hydration; Added tests for PersistQueryClientProvider; Added tests for PersistQueryClientProvider and useQueries with persistence; Added tests for PreactQueryDevtools prop wiring and behavior; Added tests for Svelte Query context utilities; Added tests for asyncThrottle behavior; Added tests for createQueries behavior and type inference; Added tests for cross-tab query synchronization and error handling; Added tests for mutationOptions; Added tests for storage quota handling in sync storage persister; Added tests for useIsFetching and useIsMutating hooks; Added tests for useMutationState filtering and selection; Added tests for withPersistQueryClient persistence behavior; Added type and runtime tests for query-core internals; Expanded test coverage for React Query components and options helpers; New @tanstack/query-test-utils package and expanded Vue Query test coverage.

Dependencies

Updated example dependencies to Angular 20, React 19, Next.js 16, and Vite 8

The example applications have been updated to use the latest major versions of their underlying frameworks and build tools. Angular examples now target Angular 20, React examples target React 19 and Next.js 16, and Vite-based examples use Vite 8. Additionally, TypeScript has been updated to version 5.8.3 across the examples, and TanStack Query packages have been bumped to version 5.104.0.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 37 → 59 (+21.9)
  • Rubric changed (rubric-2026.08.15 → rubric-2026.09.16) — scores are not directly comparable.

Lenses

  • Code Health 84 → 82 (-2.3)
  • Architecture 96 (new)
  • Maturity 57 → 66 (+9.9)
  • Readiness 23 → 49 (+26.2)
  • Security 37 → 76 (+38.4)
  • Accessibility 79 (new)
  • Performance 60 (new)

Resolved (76)

  • Boundary-crossing change coupling: vite.config.ts ↔ vite.config.ts (packages/query-persist-client-core/vite.config.ts)
  • Boundary-crossing change coupling: vite.config.ts ↔ vite.config.ts (packages/query-persist-client-core/vite.config.ts)
  • Boundary-crossing change coupling: vite.config.ts ↔ vite.config.ts (packages/query-persist-client-core/vite.config.ts)
  • Boundary-crossing change coupling: vite.config.ts ↔ vite.config.ts (packages/query-persist-client-core/vite.config.ts)
  • Boundary-crossing change coupling: vite.config.ts ↔ vite.config.ts (packages/query-sync-storage-persister/vite.config.ts)
  • Boundary-crossing change coupling: vite.config.ts ↔ vite.config.ts (packages/query-sync-storage-persister/vite.config.ts)
  • Boundary-crossing change coupling: vite.config.ts ↔ vite.config.ts (packages/query-sync-storage-persister/vite.config.ts)
  • Boundary-crossing change coupling: vite.config.ts ↔ vite.config.ts (packages/query-sync-storage-persister/vite.config.ts)
  • Boundary-crossing change coupling: vite.config.ts ↔ vite.config.ts (packages/query-sync-storage-persister/vite.config.ts)
  • Boundary-crossing change coupling: vite.config.ts ↔ vite.config.ts (packages/react-query-devtools/vite.config.ts)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Critical CVE: [GHSA redacted] (pnpm-lock.yaml)
  • Dimension evaluation failed
  • High CVE: [GHSA redacted] (pnpm-lock.yaml)
  • High CVE: [GHSA redacted] (pnpm-lock.yaml)
  • High CVE: [GHSA redacted] (pnpm-lock.yaml)
  • High CVE: [GHSA redacted] (pnpm-lock.yaml)
  • High CVE: [GHSA redacted] (pnpm-lock.yaml)
  • High CVE: [GHSA redacted] (pnpm-lock.yaml)
  • …and 56 more

New (1891)

  • Boundary-crossing change coupling: useQueries.ts ↔ useQueries.ts (packages/solid-query/src/useQueries.ts)
  • Change coupling: create-base-query.ts ↔ inject-mutation.ts (packages/angular-query-experimental/src/create-base-query.ts)
  • ClassTooLong: QueryClient (packages/query-core/src/queryClient.ts)
  • ClassTooLong: QueryClient (packages/vue-query/src/queryClient.ts)
  • ClassTooLong: QueryObserver (packages/query-core/src/queryObserver.ts)
  • Devtools.ContentView (cognitive 43) (packages/query-devtools/src/Devtools.tsx)
  • Devtools.ContentView (cyclomatic 46) (packages/query-devtools/src/Devtools.tsx)
  • Devtools.Devtools (cognitive 22) (packages/query-devtools/src/Devtools.tsx)
  • Devtools.Devtools (cyclomatic 21) (packages/query-devtools/src/Devtools.tsx)
  • Devtools.DraggablePanel (cognitive 73) (packages/query-devtools/src/Devtools.tsx)
  • Devtools.DraggablePanel (cyclomatic 51) (packages/query-devtools/src/Devtools.tsx)
  • Devtools.QueryDetails (cognitive 26) (packages/query-devtools/src/Devtools.tsx)
  • Devtools.QueryDetails (cyclomatic 24) (packages/query-devtools/src/Devtools.tsx)
  • Documentation: no usage examples (examples/angular/auto-refetching/README.md)
  • Explorer.Explorer (cognitive 30) (packages/query-devtools/src/Explorer.tsx)
  • Explorer.Explorer (cyclomatic 39) (packages/query-devtools/src/Explorer.tsx)
  • FileTooLong: icons/index.tsx (packages/query-devtools/src/icons/index.tsx)
  • FileTooLong: src/Devtools.tsx (packages/query-devtools/src/Devtools.tsx)
  • FileTooLong: src/Explorer.tsx (packages/query-devtools/src/Explorer.tsx)
  • FileTooLong: src/query.ts (packages/query-core/src/query.ts)
  • …and 1871 more

Changes since last survey

  • 300 commits — 275 feature/other, 25 fixes

By area

  • docs/framework — 89 commits
  • packages/query-core — 40 commits
  • packages/vue-query — 30 commits
  • packages/lit-query — 29 commits
  • packages/angular-query-experimental — 19 commits
  • packages/svelte-query — 17 commits
  • packages/preact-query — 16 commits
  • (root) — 14 commits
  • examples/react — 11 commits
  • packages/solid-query — 7 commits
  • examples/svelte — 4 commits
  • packages/react-query — 3 commits
  • scripts/generate-docs.ts — 3 commits
  • docs/config.json — 2 commits
  • packages/query-devtools — 2 commits
  • packages/vue-query-devtools — 2 commits
  • .changeset/heavy-donuts-do.md — 1 commit
  • .changeset/perky-jars-flow.md — 1 commit
  • .changeset/svelte-devtools-theme-option.md — 1 commit
  • .changeset/thin-bugs-change.md — 1 commit

Notable commits

  • fix: ci: apply automated fixes
  • fix: ci: apply automated fixes
  • fix: ci: apply automated fixes
  • fix: ci: apply automated fixes
  • fix: ci: apply automated fixes
  • fix: fix(broadcast-client): don't overwrite an existing query's data on an incoming 'added' message (#11392)
  • fix: fix(codemods): update codemods build script (#11647)
  • fix: fix(preact-query): propagate falsy errors to the error boundary (#11309)
  • fix: fix(preact-query/useQueries): keep unsubscribed idle (#11315)
  • fix: fix(query-core): Avoid scheduling stale timeouts for disabled query observers (#11293)
  • fix: fix(query-core): handle plain objects with constructor fields (#11512)
  • fix: fix(query-core): ignore stale query removals (#11524)
  • fix: fix(query-core): preserve null streamed query results (#11510)
  • fix: fix(query-core): reject longer partial array keys (#11502)
  • fix: fix(query-devtools): remove solid-js import from declarations (#11300)
  • fix: fix(query-persist-client-core): restore falsy storage values (#11509)
  • fix: fix(react-query): propagate falsy errors to the error boundary (#11305)
  • fix: fix(solid-query): useBaseQuery SSR cleanup (#11628)
  • fix: fix(svelte-query-devtools): update the devtools instance when options change after mount (#11009)
  • fix: fix(svelte-query/{createQuery,queryOptions}): correct the overload selected for 'initialData' (#11592)
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

TanStack/query was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 2e1ad64b525f6ff2034f169ab9c2f48f82f17296 — the exact code this score is about.
  • Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-eb9197011364.