{"schemaVersion":2,"locale":"en","nodes":[{"id":"concept:tool-boundaries","type":"concept","product":"ecosystem","title":"Tool responsibility boundaries","summary":"Classify the problem as full-stack runtime, routing and URL state, or asynchronous server state.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-tool-boundaries"},{"id":"concept:start-runtime","type":"concept","product":"start","title":"Start server boundary","summary":"Place SSR, Server Functions, and external Server Routes at the correct execution boundary.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-start-runtime"},{"id":"concept:file-routing","type":"concept","product":"router","title":"File routes and params","summary":"Connect file structure, path parameters, and Link through one type system.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-file-routing"},{"id":"concept:url-state","type":"concept","product":"router","title":"Validated URL state","summary":"Put shareable, refresh-safe, navigable filter state into validated search params.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-url-state"},{"id":"concept:async-cache","type":"concept","product":"query","title":"Navigation and async cache","summary":"Router coordinates navigation while Query owns caching and refetch lifecycles.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-async-cache"},{"id":"concept:data-writes","type":"concept","product":"query","title":"Writes and cache consistency","summary":"Validate the write boundary, then update or invalidate cache from the server response.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-data-writes"},{"id":"concept:failure-recovery","type":"concept","product":"router","title":"Failure containment and recovery","summary":"Stop failures at the nearest route boundary and provide a stable recovery path.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-failure-recovery"},{"id":"concept:external-http-boundary","type":"concept","product":"start","title":"External HTTP boundary","summary":"Use a Server Route to expose explicit status, caching, security, and input contracts to external callers.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-external-http-boundary"},{"id":"concept:route-dependencies","type":"concept","product":"router","title":"Typed route dependencies","summary":"Inject stable dependencies at the root and add inferred context to subtrees with beforeLoad.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-route-dependencies"},{"id":"concept:cache-freshness","type":"concept","product":"query","title":"Cache freshness policy","summary":"Define independently when data becomes stale and how long inactive queries remain cached.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-cache-freshness"},{"id":"concept:request-pipeline","type":"concept","product":"start","title":"Server request pipeline","summary":"Choose the correct middleware scope for requests and Server Functions, then advance the chain explicitly.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-request-pipeline"},{"id":"concept:navigation-safety","type":"concept","product":"router","title":"Unsaved navigation safety","summary":"Protect router navigation and browser unloads from explicit dirty state while preserving user choice.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-navigation-safety"},{"id":"concept:request-cancellation","type":"concept","product":"query","title":"Async request cancellation","summary":"Propagate Query AbortSignal to the network layer to stop obsolete I/O and preserve cache semantics.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-request-cancellation"},{"id":"concept:auth-gates","type":"concept","product":"router","title":"Auth gates and server authorization","summary":"Stop private child loading in a parent beforeLoad while preserving resource authorization at server data boundaries.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-auth-gates"},{"id":"concept:infinite-pagination","type":"concept","product":"query","title":"Bounded infinite pagination","summary":"Let server cursors drive page params while preserving pages, pageParams, and memory bounds.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-infinite-pagination"},{"id":"concept:ssr-query-hydration","type":"concept","product":"query","title":"Query SSR and streaming hydration","summary":"Isolate QueryClient per server request and choose blocking, hydration, or streaming for critical data.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-ssr-query-hydration"},{"id":"concept:optimistic-consistency","type":"concept","product":"query","title":"Optimistic consistency and rollback","summary":"Use cancellation, snapshots, immutable writes, and revalidation so immediate feedback converges on server truth.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-optimistic-consistency"},{"id":"concept:headless-table-model","type":"concept","product":"table","title":"Headless tables and server state","summary":"Describe the view with typed columns and row models while keeping sorting, pagination, and remote data boundaries explicit.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-headless-table-model"},{"id":"concept:form-validation-boundary","type":"concept","product":"form","title":"Form validation and submission boundaries","summary":"Coordinate field types, synchronous and asynchronous validation, and submission state while preserving final server validation.","htmlUrl":"https://tanstack-atlas.vercel.app/en/map#concept-form-validation-boundary"},{"id":"learn:ecosystem-map","type":"learn","product":"ecosystem","title":"TanStack is not one framework","summary":"Before installing packages, build a mental map of how Start, Router, and Query divide responsibility.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"Start ^1 / Router ^1 / Query ^5","verifiedAgainst":"@tanstack/react-start@1.168.34 + @tanstack/react-router@1.170.18 + @tanstack/react-query@5.101.4","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/ecosystem-map","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/ecosystem-map.md"},{"id":"learn:first-start-app","type":"learn","product":"start","title":"Create your first Start app","summary":"Use the official CLI to create a minimal app and locate the route tree, root document, and development server.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"Start ^1","verifiedAgainst":"TanStack CLI quick-start + @tanstack/react-start@1.168.34","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/first-start-app","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/first-start-app.md"},{"id":"learn:file-routes","type":"learn","product":"router","title":"Build a route tree from files","summary":"Create issue list and detail pages, then connect file names, path params, and inferred types.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"Router ^1","verifiedAgainst":"@tanstack/react-router@1.170.18 + @tanstack/router-cli@1.167.21","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/file-routes","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/file-routes.md"},{"id":"learn:url-state","type":"learn","product":"router","title":"Put filters in the URL","summary":"Build shareable, refresh-safe, typed issue filters with validated search params.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"Router ^1","verifiedAgainst":"@tanstack/react-router@1.170.18","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/url-state","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/url-state.md"},{"id":"learn:loader-query-cache","type":"learn","product":"query","title":"Let the loader warm the Query cache","summary":"Router decides when navigation happens while Query owns the cache. Connect them with one shared queryOptions object.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"Query ^5 / Router ^1","verifiedAgainst":"@tanstack/react-query@5.101.4 + @tanstack/react-router@1.170.18 + @tanstack/react-router-ssr-query@1.167.1","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/loader-query-cache","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/loader-query-cache.md"},{"id":"learn:mutations","type":"learn","product":"query","title":"Write back from a Server Function","summary":"Validate input at the network boundary, model write state with a mutation, then immutably update Query cache from the server response.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"Start ^1 / Query ^5","verifiedAgainst":"@tanstack/react-start@1.168.34 + @tanstack/react-query@5.101.4","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/mutations","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/mutations.md"},{"id":"learn:error-boundaries","type":"learn","product":"router","title":"Contain errors in the right route","summary":"Use a global default as the safety net and route errorComponent to isolate local data or render failures.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"Start ^1 / Router ^1","verifiedAgainst":"@tanstack/react-start@1.168.34 + @tanstack/react-router@1.170.18","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/error-boundaries","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/error-boundaries.md"},{"id":"learn:server-routes","type":"learn","product":"start","title":"Put external endpoints in a Server Route","summary":"Separate application RPC from public HTTP endpoints and use a native Response to express status, body, and cache policy.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"Start ^1 / Router ^1","verifiedAgainst":"@tanstack/react-start@1.168.34 + @tanstack/react-router@1.170.18","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/server-routes","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/server-routes.md"},{"id":"learn:route-context","type":"learn","product":"router","title":"Pass dependencies through Router Context","summary":"Declare typed dependencies at the root, then use beforeLoad to add inferred context for a route subtree.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"Router ^1","verifiedAgainst":"@tanstack/react-router@1.170.18","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/route-context","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/route-context.md"},{"id":"learn:query-freshness","type":"learn","product":"query","title":"Define when data is fresh","summary":"Separate staleTime from gcTime and co-locate keys, fetchers, and time policy in shared queryOptions.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"Query ^5","verifiedAgainst":"@tanstack/react-query@5.101.4","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/query-freshness","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/query-freshness.md"},{"id":"learn:start-middleware","type":"learn","product":"start","title":"Compose request boundaries with Middleware","summary":"Separate request middleware from Server Function middleware and compose logging, context, and security checks with next().","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"Start ^1","verifiedAgainst":"@tanstack/react-start@1.168.34","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/start-middleware","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/start-middleware.md"},{"id":"learn:navigation-blocking","type":"learn","product":"router","title":"Block navigation away from a dirty form","summary":"Use useBlocker for router navigation and browser unloads, with explicit state for a custom confirmation UI.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"Router ^1","verifiedAgainst":"@tanstack/react-router@1.170.18","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/navigation-blocking","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/navigation-blocking.md"},{"id":"learn:query-cancellation","type":"learn","product":"query","title":"Propagate Query cancellation to the network","summary":"Consume the AbortSignal supplied to queryFn so obsolete fetches stop and cancellation state remains predictable.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"Query ^5","verifiedAgainst":"@tanstack/react-query@5.101.4","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/query-cancellation","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/query-cancellation.md"},{"id":"learn:authenticated-routes","type":"learn","product":"router","title":"Confirm identity before child routes load","summary":"Protect a route group with typed Router Context and a pathless layout beforeLoad while preserving the correct post-login destination.","revision":1,"sourceCheckedOn":"2026-08-03","versionRange":"Router ^1","verifiedAgainst":"@tanstack/react-router@1.170.18","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/authenticated-routes","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/authenticated-routes.md"},{"id":"learn:infinite-queries","type":"learn","product":"query","title":"Keep infinite lists bounded and recoverable","summary":"Define pagination with initialPageParam, cursors, and maxPages while preserving the pages and pageParams structure.","revision":1,"sourceCheckedOn":"2026-08-03","versionRange":"Query ^5","verifiedAgainst":"@tanstack/react-query@5.101.4","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/infinite-queries","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/infinite-queries.md"},{"id":"learn:ssr-query-streaming","type":"learn","product":"query","title":"Isolate and stream Query state across SSR","summary":"Use the Router SSR Query integration for dehydration, hydration, and streaming while creating an isolated cache per server request.","revision":1,"sourceCheckedOn":"2026-08-03","versionRange":"Router ^1 / Query ^5","verifiedAgainst":"@tanstack/react-router@1.170.18 + @tanstack/react-router-ssr-query@1.167.1 + @tanstack/react-query@5.101.4","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/ssr-query-streaming","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/ssr-query-streaming.md"},{"id":"learn:optimistic-updates","type":"learn","product":"query","title":"Make optimistic updates safe to roll back","summary":"Choose UI-only pending output or a cache-level update, then handle failure and concurrency with cancellation, snapshots, rollback, and revalidation.","revision":1,"sourceCheckedOn":"2026-08-03","versionRange":"Query ^5","verifiedAgainst":"@tanstack/react-query@5.101.4","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/optimistic-updates","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/optimistic-updates.md"},{"id":"learn:headless-issue-table","type":"learn","product":"table","title":"Model issue data as a headless table","summary":"Connect data to semantic table markup with typed column definitions, a core row model, and flexRender while retaining full styling control.","revision":1,"sourceCheckedOn":"2026-08-03","versionRange":"Table ^8","verifiedAgainst":"@tanstack/react-table@8.21.3","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/headless-issue-table","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/headless-issue-table.md"},{"id":"learn:typed-issue-form","type":"learn","product":"form","title":"Keep fields, validation, and submission on one type","summary":"Build a controlled form with useForm, Field, and Subscribe, making validation timing, error display, and async submission explicit.","revision":1,"sourceCheckedOn":"2026-08-03","versionRange":"Form ^1","verifiedAgainst":"@tanstack/react-form@1.33.3","htmlUrl":"https://tanstack-atlas.vercel.app/en/learn/typed-issue-form","markdownUrl":"https://tanstack-atlas.vercel.app/en/learn/typed-issue-form.md"},{"id":"agent:router.file-route","type":"agent","product":"router","title":"Create a file route with a path parameter","summary":"Create /posts/$postId in a React app and read the typed postId from the route instance.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"^1","verifiedAgainst":"@tanstack/react-router@1.170.18","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/router/file-route","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/router/file-route.md"},{"id":"agent:router.validated-search","type":"agent","product":"router","title":"Validate pagination and filter search params","summary":"Turn untrusted URL search params into stable, typed route input.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"^1","verifiedAgainst":"@tanstack/react-router@1.170.18","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/router/validated-search","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/router/validated-search.md"},{"id":"agent:start.server-function","type":"agent","product":"start","title":"Create a server-only function","summary":"Use createServerFn to define a same-origin, type-safe server RPC.","revision":3,"sourceCheckedOn":"2026-08-03","versionRange":"^1","verifiedAgainst":"@tanstack/react-start@1.168.34","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/start/server-function","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/start/server-function.md"},{"id":"agent:query.router-or-query","type":"agent","product":"query","title":"Router loader or Query?","summary":"Choose Loader, Query, or both from navigation criticality and data lifecycle needs.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"Query ^5 / Router ^1","verifiedAgainst":"@tanstack/react-query@5.101.4 + @tanstack/react-router@1.170.18","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/query/router-loader-or-query","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/query/router-loader-or-query.md"},{"id":"agent:query.loader-prefetch","type":"agent","product":"query","title":"Prefetch Query from a route loader","summary":"Create a request-scoped QueryClient for SSR and reuse one queryOptions contract in the loader and useSuspenseQuery.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"Query ^5 / Router ^1","verifiedAgainst":"@tanstack/react-query@5.101.4 + @tanstack/react-router@1.170.18 + @tanstack/react-router-ssr-query@1.167.1","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/query/loader-prefetch","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/query/loader-prefetch.md"},{"id":"agent:query.mutation-cache-update","type":"agent","product":"query","title":"Update cache from a mutation response","summary":"Use setQueryData when the write response contains the complete entity; invalidate when the correct cache cannot be derived.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"^5","verifiedAgainst":"@tanstack/react-query@5.101.4","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/query/mutation-cache-update","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/query/mutation-cache-update.md"},{"id":"agent:router.route-error-boundary","type":"agent","product":"router","title":"Contain route loader and render errors","summary":"Set a Router-wide default and override errorComponent on routes that need independent recovery.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"^1","verifiedAgainst":"@tanstack/react-router@1.170.18","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/router/route-error-boundary","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/router/route-error-boundary.md"},{"id":"agent:start.server-route","type":"agent","product":"start","title":"Create an externally callable Server Route","summary":"Build a native HTTP endpoint for third-party callers with explicit status, caching, and safe responses.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"Start ^1 / Router ^1","verifiedAgainst":"@tanstack/react-start@1.168.34 + @tanstack/react-router@1.170.18","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/start/server-route","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/start/server-route.md"},{"id":"agent:router.typed-context","type":"agent","product":"router","title":"Establish typed Router Context","summary":"Declare dependencies at the root and use beforeLoad to add inferred derived context to a subtree.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"^1","verifiedAgainst":"@tanstack/react-router@1.170.18","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/router/typed-router-context","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/router/typed-router-context.md"},{"id":"agent:query.freshness-policy","type":"agent","product":"query","title":"Define a Query freshness contract","summary":"Set staleTime from data volatility and decide inactive-cache gcTime independently.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"^5","verifiedAgainst":"@tanstack/react-query@5.101.4","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/query/freshness-policy","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/query/freshness-policy.md"},{"id":"agent:start.middleware-chain","type":"agent","product":"start","title":"Establish a Start Middleware chain","summary":"Define request and function scopes, compose context through next(), and preserve authentication and CSRF boundaries.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"^1","verifiedAgainst":"@tanstack/react-start@1.168.34","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/start/middleware-chain","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/start/middleware-chain.md"},{"id":"agent:router.navigation-blocker","type":"agent","product":"router","title":"Protect navigation away from a dirty form","summary":"Use useBlocker resolver state for accessible leave confirmation and register beforeunload only while dirty.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"^1","verifiedAgainst":"@tanstack/react-router@1.170.18","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/router/navigation-blocker","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/router/navigation-blocker.md"},{"id":"agent:query.abort-signal","type":"agent","product":"query","title":"Consume Query AbortSignal","summary":"Pass the queryFn signal into the request layer so cancellation stops I/O with explicit cache-revert semantics.","revision":2,"sourceCheckedOn":"2026-08-03","versionRange":"^5","verifiedAgainst":"@tanstack/react-query@5.101.4","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/query/abort-signal","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/query/abort-signal.md"},{"id":"agent:router.auth-before-load","type":"agent","product":"router","title":"Protect a route subtree with beforeLoad","summary":"Read typed auth context in a pathless layout, stop signed-out users before child loading, and preserve a constrained return URL.","revision":1,"sourceCheckedOn":"2026-08-03","versionRange":"^1","verifiedAgainst":"@tanstack/react-router@1.170.18","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/router/auth-before-load","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/router/auth-before-load.md"},{"id":"agent:query.infinite-cursor","type":"agent","product":"query","title":"Build a bounded cursor Infinite Query","summary":"Use one queryKey for the full list, let server cursors drive pageParam, and bound cache and refetch cost with maxPages.","revision":1,"sourceCheckedOn":"2026-08-03","versionRange":"^5","verifiedAgainst":"@tanstack/react-query@5.101.4","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/query/infinite-cursor","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/query/infinite-cursor.md"},{"id":"agent:query.ssr-streaming","type":"agent","product":"query","title":"Configure Query SSR and streaming hydration","summary":"Create a QueryClient per SSR request, use the Router integration for dehydration and hydration, and classify blocking versus streaming queries.","revision":1,"sourceCheckedOn":"2026-08-03","versionRange":"Query ^5 / Router ^1","verifiedAgainst":"@tanstack/react-query@5.101.4 + @tanstack/react-router@1.170.18 + @tanstack/react-router-ssr-query@1.167.1","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/query/ssr-streaming","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/query/ssr-streaming.md"},{"id":"agent:query.optimistic-rollback","type":"agent","product":"query","title":"Implement a rollback-safe optimistic update","summary":"Cancel conflicting refetches, snapshot cache, write an immutable draft, roll back on failure, and revalidate on settlement.","revision":1,"sourceCheckedOn":"2026-08-03","versionRange":"^5","verifiedAgainst":"@tanstack/react-query@5.101.4","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/query/optimistic-rollback","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/query/optimistic-rollback.md"},{"id":"agent:table.server-grid-state","type":"agent","product":"table","title":"Coordinate sorting and pagination for a server-backed table","summary":"Let Table own view state and Query own remote data, using manualSorting, manualPagination, and rowCount to avoid processing only the current page.","revision":1,"sourceCheckedOn":"2026-08-03","versionRange":"Table ^8 / Query ^5","verifiedAgainst":"@tanstack/react-table@8.21.3 + @tanstack/react-query@5.101.4","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/table/server-grid-state","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/table/server-grid-state.md"},{"id":"agent:form.async-validation","type":"agent","product":"form","title":"Build a safe boundary for async field validation","summary":"Reject invalid input synchronously, run async validation through built-in debouncing, and separate early feedback from final server validation.","revision":1,"sourceCheckedOn":"2026-08-03","versionRange":"^1","verifiedAgainst":"@tanstack/react-form@1.33.3","htmlUrl":"https://tanstack-atlas.vercel.app/en/agents/form/async-validation","markdownUrl":"https://tanstack-atlas.vercel.app/en/agents/form/async-validation.md"}],"edges":[{"id":"concept:tool-boundaries->learn:ecosystem-map","source":"concept:tool-boundaries","target":"learn:ecosystem-map","relation":"teaches"},{"id":"concept:tool-boundaries->agent:query.router-or-query","source":"concept:tool-boundaries","target":"agent:query.router-or-query","relation":"specifies"},{"id":"concept:start-runtime->learn:first-start-app","source":"concept:start-runtime","target":"learn:first-start-app","relation":"teaches"},{"id":"concept:start-runtime->agent:start.server-function","source":"concept:start-runtime","target":"agent:start.server-function","relation":"specifies"},{"id":"concept:file-routing->learn:file-routes","source":"concept:file-routing","target":"learn:file-routes","relation":"teaches"},{"id":"concept:file-routing->agent:router.file-route","source":"concept:file-routing","target":"agent:router.file-route","relation":"specifies"},{"id":"concept:url-state->learn:url-state","source":"concept:url-state","target":"learn:url-state","relation":"teaches"},{"id":"concept:url-state->agent:router.validated-search","source":"concept:url-state","target":"agent:router.validated-search","relation":"specifies"},{"id":"concept:async-cache->learn:loader-query-cache","source":"concept:async-cache","target":"learn:loader-query-cache","relation":"teaches"},{"id":"concept:async-cache->agent:query.router-or-query","source":"concept:async-cache","target":"agent:query.router-or-query","relation":"specifies"},{"id":"concept:async-cache->agent:query.loader-prefetch","source":"concept:async-cache","target":"agent:query.loader-prefetch","relation":"specifies"},{"id":"concept:data-writes->learn:mutations","source":"concept:data-writes","target":"learn:mutations","relation":"teaches"},{"id":"concept:data-writes->agent:query.mutation-cache-update","source":"concept:data-writes","target":"agent:query.mutation-cache-update","relation":"specifies"},{"id":"concept:failure-recovery->learn:error-boundaries","source":"concept:failure-recovery","target":"learn:error-boundaries","relation":"teaches"},{"id":"concept:failure-recovery->agent:router.route-error-boundary","source":"concept:failure-recovery","target":"agent:router.route-error-boundary","relation":"specifies"},{"id":"concept:external-http-boundary->learn:server-routes","source":"concept:external-http-boundary","target":"learn:server-routes","relation":"teaches"},{"id":"concept:external-http-boundary->agent:start.server-route","source":"concept:external-http-boundary","target":"agent:start.server-route","relation":"specifies"},{"id":"concept:route-dependencies->learn:route-context","source":"concept:route-dependencies","target":"learn:route-context","relation":"teaches"},{"id":"concept:route-dependencies->agent:router.typed-context","source":"concept:route-dependencies","target":"agent:router.typed-context","relation":"specifies"},{"id":"concept:cache-freshness->learn:query-freshness","source":"concept:cache-freshness","target":"learn:query-freshness","relation":"teaches"},{"id":"concept:cache-freshness->agent:query.freshness-policy","source":"concept:cache-freshness","target":"agent:query.freshness-policy","relation":"specifies"},{"id":"concept:request-pipeline->learn:start-middleware","source":"concept:request-pipeline","target":"learn:start-middleware","relation":"teaches"},{"id":"concept:request-pipeline->agent:start.middleware-chain","source":"concept:request-pipeline","target":"agent:start.middleware-chain","relation":"specifies"},{"id":"concept:navigation-safety->learn:navigation-blocking","source":"concept:navigation-safety","target":"learn:navigation-blocking","relation":"teaches"},{"id":"concept:navigation-safety->agent:router.navigation-blocker","source":"concept:navigation-safety","target":"agent:router.navigation-blocker","relation":"specifies"},{"id":"concept:request-cancellation->learn:query-cancellation","source":"concept:request-cancellation","target":"learn:query-cancellation","relation":"teaches"},{"id":"concept:request-cancellation->agent:query.abort-signal","source":"concept:request-cancellation","target":"agent:query.abort-signal","relation":"specifies"},{"id":"concept:auth-gates->learn:authenticated-routes","source":"concept:auth-gates","target":"learn:authenticated-routes","relation":"teaches"},{"id":"concept:auth-gates->agent:router.auth-before-load","source":"concept:auth-gates","target":"agent:router.auth-before-load","relation":"specifies"},{"id":"concept:infinite-pagination->learn:infinite-queries","source":"concept:infinite-pagination","target":"learn:infinite-queries","relation":"teaches"},{"id":"concept:infinite-pagination->agent:query.infinite-cursor","source":"concept:infinite-pagination","target":"agent:query.infinite-cursor","relation":"specifies"},{"id":"concept:ssr-query-hydration->learn:ssr-query-streaming","source":"concept:ssr-query-hydration","target":"learn:ssr-query-streaming","relation":"teaches"},{"id":"concept:ssr-query-hydration->agent:query.ssr-streaming","source":"concept:ssr-query-hydration","target":"agent:query.ssr-streaming","relation":"specifies"},{"id":"concept:optimistic-consistency->learn:optimistic-updates","source":"concept:optimistic-consistency","target":"learn:optimistic-updates","relation":"teaches"},{"id":"concept:optimistic-consistency->agent:query.optimistic-rollback","source":"concept:optimistic-consistency","target":"agent:query.optimistic-rollback","relation":"specifies"},{"id":"concept:headless-table-model->learn:headless-issue-table","source":"concept:headless-table-model","target":"learn:headless-issue-table","relation":"teaches"},{"id":"concept:headless-table-model->agent:table.server-grid-state","source":"concept:headless-table-model","target":"agent:table.server-grid-state","relation":"specifies"},{"id":"concept:form-validation-boundary->learn:typed-issue-form","source":"concept:form-validation-boundary","target":"learn:typed-issue-form","relation":"teaches"},{"id":"concept:form-validation-boundary->agent:form.async-validation","source":"concept:form-validation-boundary","target":"agent:form.async-validation","relation":"specifies"}]}