release-2026-10-19-1659
TanStack/queryrelease-2026-10-19-1659Oct 19, 2026by github-actions[bot]
Upgrading?
AI Summary
This release includes a new feature for React Query Devtools rendering on the web, fixes for optimistic fetches and mutation states, and extensive improvements to type safety and error handling across examples for React, Svelte, Solid, and Preact.
Key Highlights
- ReactQueryDevtools now renders on web through a platform-specific 'Devtools' component
- Optimistic fetches now use supplied options correctly
- Mutation state snapshots are recomputed when filters, selector, or query client change
- Enhanced type safety and error handling in Svelte, Solid, and React examples
- React Native examples updated with NetInfo integration and Text variant replacements
New Features
- Render 'ReactQueryDevtools' on web through a platform-specific 'Devtools' component
Full Release Notes
Release 2026-10-19 16:59
## Changes
### Features
- examples/react/react-native: render 'ReactQueryDevtools' on web through a platform-specific 'Devtools' component (#12093) (3c648e4dd) by @sukvvon
### Fix
- query-core: use supplied options for optimistic fetches (#12131) (f608f933a) by @TkDodo
- react, preact: recompute mutation state snapshots (#12117) (1f8d134ea) by @TkDodo
- examples/svelte/load-more-infinite-scroll: show 'Loading more...' only while fetching the next page instead of on any background refetch (#12121) (ff47e1873) by @sukvvon
- examples/svelte/{basic,ssr}: remove the '!postId' check that kept 'Loading...' next to the error for non-numeric post ids (#12119) (942314910) by @sukvvon
- examples/svelte/playground: show 'Saved!' only after a successful mutation instead of while idle (#12114) (ae6266d57) by @sukvvon
- examples/svelte/star-wars: throw on non-ok 'fetch' responses in the API functions (#12113) (a8fe350b8) by @sukvvon
- examples/svelte/optimistic-updates: render 'Background Updating...' instead of a leftover JSX ternary (#12107) (69457a9e5) by @sukvvon
- examples/svelte/optimistic-updates: throw on non-ok responses so a failed create rolls back the optimistic update (#12106) (306fcda84) by @sukvvon
- examples/svelte: throw on non-ok 'fetch' responses in the query and mutation functions (#12109) (d0a1dff1b) by @sukvvon
- examples/solid/offline: throw the response text on non-ok 'fetch' responses and show query errors in 'List' and 'Detail' (#12099) (7592b2f18) by @sukvvon
- examples/solid/astro: throw on non-ok 'fetch' responses and show a pokemon load error through an 'ErrorBoundary' (#12103) (aa77cd7f6) by @sukvvon
- examples/solid/basic-graphql-request: type post ids as strings and pass the id as a GraphQL variable (#12100) (4ae64479f) by @sukvvon
- examples/solid: throw on non-ok 'fetch' responses in the query functions (#12098) (c10c1f770) by @sukvvon
- examples/preact/simple: throw on non-ok 'fetch' responses in the query function (#12097) (c1296c174) by @sukvvon
- examples/react/react-native: register 'NetInfo' through 'onlineManager.setEventListener' so connected devices are not treated as offline while reachability is unknown (#12091) (ddff3a70b) by @sukvvon
- examples/react/basic-graphql-request: type post ids as strings and pass the id as a GraphQL variable (#12087) (e39f330fa) by @sukvvon
- examples/react/algolia: show the search error and use a 'button' that is disabled while fetching for loading more (#12086) (988e69ebf) by @sukvvon
- examples/react/load-more-infinite-scroll: move the projects query into 'infiniteQueryOptions' in 'src/lib' and type 'nextId' and 'previousId' as nullable (#12085) (0fba30fbe) by @sukvvon
- examples/react/pagination: share the projects query with 'queryOptions' in 'src/lib' so the next page prefetch respects 'staleTime' (#12084) (7328d02a3) by @sukvvon
- examples/react/playground: show 'Saved!' only after a successful mutation instead of while idle (#12083) (d338489e0) by @sukvvon
- examples/react/offline: show query errors in 'List' and 'Detail' and remove the 'MovieError' element that 'react-location' never renders (#12082) (f0dcdca51) by @sukvvon
- examples/react/nextjs-app-optimistic-updates: stream the prefetched todos with 'useSuspenseQuery' and a 'React.Suspense' boundary (#12081) (3ff2ec167) by @sukvvon
- examples/react/nextjs: set a default 'staleTime' so the statically generated posts are not refetched right after hydration (#12077) (cd9e573ea) by @sukvvon
- examples/react/prefetching: show the error instead of an empty list or blank details when fetching characters fails (#12075) (daf7444f9) by @sukvvon
- examples/react/nextjs: show the error in 'PostList' instead of an empty list when fetching posts fails (#12074) (19ad6d7fd) by @sukvvon
### Refactor
- examples/svelte/optimistic-updates: move the fetchers into 'src/lib/api.ts' and share the todos query with 'queryOptions' (#12124) (959f65e2d) by @sukvvon
- examples/svelte/load-more-infinite-scroll: type the planets response and move the query into 'src/lib/api.ts' with 'infiniteQueryOptions' (#12123) (2653d67fd) by @sukvvon
- examples/svelte/optimistic-updates: infer the 'onError' parameter types instead of 'any' and rename 'context' to 'onMutateResult' (#12120) (9e6e51c73) by @sukvvon
- examples/svelte/star-wars: type the API responses and share the queries with 'queryOptions' (#12116) (adb932ea1) by @sukvvon
- examples/svelte/ssr: read the cached post with 'postQueryOptions(id).queryKey' instead of a hard-coded key (#12112) (3119e0c6a) by @sukvvon
- examples/svelte/auto-refetching: move the fetchers into 'src/lib/api.ts' and share the todos query with 'queryOptions' (#12111) (86c01185a) by @sukvvon
- examples/svelte/basic: share the post queries with 'queryOptions' in 'src/lib/queries.ts' (#12110) (d8ab86342) by @sukvvon
- examples/solid/default-query-function: type the posts with a 'Post' type instead of 'any' (#12105) (2e86afff5) by @sukvvon
- examples/solid/basic: remove the always-true 'enabled' and the always-false '!props.postId' check in 'Post' (#12101) (f9d7ec099) by @sukvvon
- examples/solid/astro: type the pokemon responses and move the queries into 'src/lib/api.ts' with 'queryOptions' (#12102) (0e7d125f0) by @sukvvon
- examples/react/react-native: refetch only active stale queries in 'useRefreshOnFocus' as in the React Native guide (#12092) (85feb0941) by @sukvvon
- examples/react/react-native: replace the deprecated 'Paragraph' and 'Title' with 'Text' variants from 'react-native-paper' (#12094) (a8eeff39f) by @sukvvon
- examples/react/eslint-plugin-demo: rename the 'useApiClient' stub to 'getApiClient' since it is called outside of hooks (#12089) (af1e58044) by @sukvvon
- examples/react/basic: remove the always-true 'enabled' and the always-false '!postId' check in 'Post' (#12088) (c57cf557c) by @sukvvon
- examples/react/nextjs-app-prefetching: add 'shouldRedactErrors' to the query client as in the advanced SSR guide (#12076) (9d93dc57d) by @sukvvon
- examples/react/shadow-dom: type the dogs response and move the query into 'api.ts' with 'queryOptions' (#12072) (2e7c288ed) by @sukvvon
- examples/react/nextjs-app-optimistic-updates: share the todos query and fetchers with 'queryOptions' (#12071) (0a37fa6f2) by @sukvvon
- examples/react/prefetching: type the character query and share it with 'queryOptions' (#12070) (5b7f49013) by @sukvvon
- examples/react/star-wars: type the API responses and share the queries with 'queryOptions' (#12069) (090fb4a41) by @sukvvon
- examples/react/rick-morty: type the API responses and share the queries with 'queryOptions' (#12068) (256abf45f) by @sukvvon
### Chore
- examples/react/react-native: replace the removed 'expo eject' script with 'expo prebuild' and drop the deprecated global 'expo-cli' install step (#12096) (de10bb0f9) by @sukvvon
- examples/react: update '@types/react' and '@types/react-dom' to '^19' in the examples still on '^18' (#12067) (ffb1fbb62) by @sukvvon
## Packages
- @tanstack/angular-query-experimental@5.104.5
- @tanstack/eslint-plugin-query@5.104.5
- @tanstack/lit-query@0.2.30
- @tanstack/preact-query@5.104.5
- @tanstack/preact-query-devtools@5.104.5
- @tanstack/preact-query-persist-client@5.104.5
- @tanstack/query-async-storage-persister@5.104.5
- @tanstack/query-broadcast-client-experimental@5.104.5
- @tanstack/query-core@5.104.5
- @tanstack/query-devtools@5.104.5
- @tanstack/query-persist-client-core@5.104.5
- @tanstack/query-sync-storage-persister@5.104.5
- @tanstack/react-query@5.104.5
- @tanstack/react-query-devtools@5.104.5
- @tanstack/react-query-next-experimental@5.104.5
- @tanstack/react-query-persist-client@5.104.5
- @tanstack/solid-query@5.104.5
- @tanstack/solid-query-devtools@5.104.5
- @tanstack/solid-query-persist-client@5.104.5
- @tanstack/svelte-query@6.3.5
- @tanstack/svelte-query-devtools@6.3.5
- @tanstack/svelte-query-persist-client@6.3.5
- @tanstack/vue-query@5.104.5
- @tanstack/vue-query-devtools@6.3.5
Related Repositories
openclaw/openclaw★ 392,718
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
nilbuild/developer-roadmap★ 370,094
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
morluto/rea★ 360,388
Reverse engineer anything with agents, from app behavior down to native binaries.
anomalyco/opencode★ 219,868
The open source coding agent.
n8n-io/n8n★ 208,278
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.