# TanStack Atlas > An original dual-track TanStack knowledge index for beginners and AI agents. Choose Learn for a complete explanation and Agent for an execution-ready engineering contract. Fetch only the smallest relevant Markdown document. ## Learn: complete explanations - [TanStack is not one framework](/en/learn/ecosystem-map.md): Before installing packages, build a mental map of how Start, Router, and Query divide responsibility. - [Create your first Start app](/en/learn/first-start-app.md): Use the official CLI to create a minimal app and locate the route tree, root document, and development server. - [Build a route tree from files](/en/learn/file-routes.md): Create issue list and detail pages, then connect file names, path params, and inferred types. - [Put filters in the URL](/en/learn/url-state.md): Build shareable, refresh-safe, typed issue filters with validated search params. - [Let the loader warm the Query cache](/en/learn/loader-query-cache.md): Router decides when navigation happens while Query owns the cache. Connect them with one shared queryOptions object. - [Write back from a Server Function](/en/learn/mutations.md): Validate input at the network boundary, model write state with a mutation, then immutably update Query cache from the server response. - [Contain errors in the right route](/en/learn/error-boundaries.md): Use a global default as the safety net and route errorComponent to isolate local data or render failures. - [Put external endpoints in a Server Route](/en/learn/server-routes.md): Separate application RPC from public HTTP endpoints and use a native Response to express status, body, and cache policy. - [Pass dependencies through Router Context](/en/learn/route-context.md): Declare typed dependencies at the root, then use beforeLoad to add inferred context for a route subtree. - [Define when data is fresh](/en/learn/query-freshness.md): Separate staleTime from gcTime and co-locate keys, fetchers, and time policy in shared queryOptions. - [Compose request boundaries with Middleware](/en/learn/start-middleware.md): Separate request middleware from Server Function middleware and compose logging, context, and security checks with next(). - [Block navigation away from a dirty form](/en/learn/navigation-blocking.md): Use useBlocker for router navigation and browser unloads, with explicit state for a custom confirmation UI. - [Propagate Query cancellation to the network](/en/learn/query-cancellation.md): Consume the AbortSignal supplied to queryFn so obsolete fetches stop and cancellation state remains predictable. - [Confirm identity before child routes load](/en/learn/authenticated-routes.md): Protect a route group with typed Router Context and a pathless layout beforeLoad while preserving the correct post-login destination. - [Keep infinite lists bounded and recoverable](/en/learn/infinite-queries.md): Define pagination with initialPageParam, cursors, and maxPages while preserving the pages and pageParams structure. - [Isolate and stream Query state across SSR](/en/learn/ssr-query-streaming.md): Use the Router SSR Query integration for dehydration, hydration, and streaming while creating an isolated cache per server request. - [Make optimistic updates safe to roll back](/en/learn/optimistic-updates.md): Choose UI-only pending output or a cache-level update, then handle failure and concurrency with cancellation, snapshots, rollback, and revalidation. - [Model issue data as a headless table](/en/learn/headless-issue-table.md): Connect data to semantic table markup with typed column definitions, a core row model, and flexRender while retaining full styling control. - [Keep fields, validation, and submission on one type](/en/learn/typed-issue-form.md): Build a controlled form with useForm, Field, and Subscribe, making validation timing, error display, and async submission explicit. ## Agent: execution contracts ### TanStack Start - [Create a server-only function](/en/agents/start/server-function.md): Use createServerFn to define a same-origin, type-safe server RPC. - [Create an externally callable Server Route](/en/agents/start/server-route.md): Build a native HTTP endpoint for third-party callers with explicit status, caching, and safe responses. - [Establish a Start Middleware chain](/en/agents/start/middleware-chain.md): Define request and function scopes, compose context through next(), and preserve authentication and CSRF boundaries. ### TanStack Router - [Create a file route with a path parameter](/en/agents/router/file-route.md): Create /posts/$postId in a React app and read the typed postId from the route instance. - [Validate pagination and filter search params](/en/agents/router/validated-search.md): Turn untrusted URL search params into stable, typed route input. - [Contain route loader and render errors](/en/agents/router/route-error-boundary.md): Set a Router-wide default and override errorComponent on routes that need independent recovery. - [Establish typed Router Context](/en/agents/router/typed-router-context.md): Declare dependencies at the root and use beforeLoad to add inferred derived context to a subtree. - [Protect navigation away from a dirty form](/en/agents/router/navigation-blocker.md): Use useBlocker resolver state for accessible leave confirmation and register beforeunload only while dirty. - [Protect a route subtree with beforeLoad](/en/agents/router/auth-before-load.md): Read typed auth context in a pathless layout, stop signed-out users before child loading, and preserve a constrained return URL. ### TanStack Query - [Router loader or Query?](/en/agents/query/router-loader-or-query.md): Choose Loader, Query, or both from navigation criticality and data lifecycle needs. - [Prefetch Query from a route loader](/en/agents/query/loader-prefetch.md): Create a request-scoped QueryClient for SSR and reuse one queryOptions contract in the loader and useSuspenseQuery. - [Update cache from a mutation response](/en/agents/query/mutation-cache-update.md): Use setQueryData when the write response contains the complete entity; invalidate when the correct cache cannot be derived. - [Define a Query freshness contract](/en/agents/query/freshness-policy.md): Set staleTime from data volatility and decide inactive-cache gcTime independently. - [Consume Query AbortSignal](/en/agents/query/abort-signal.md): Pass the queryFn signal into the request layer so cancellation stops I/O with explicit cache-revert semantics. - [Build a bounded cursor Infinite Query](/en/agents/query/infinite-cursor.md): Use one queryKey for the full list, let server cursors drive pageParam, and bound cache and refetch cost with maxPages. - [Configure Query SSR and streaming hydration](/en/agents/query/ssr-streaming.md): Create a QueryClient per SSR request, use the Router integration for dehydration and hydration, and classify blocking versus streaming queries. - [Implement a rollback-safe optimistic update](/en/agents/query/optimistic-rollback.md): Cancel conflicting refetches, snapshot cache, write an immutable draft, roll back on failure, and revalidate on settlement. ### TanStack Table - [Coordinate sorting and pagination for a server-backed table](/en/agents/table/server-grid-state.md): Let Table own view state and Query own remote data, using manualSorting, manualPagination, and rowCount to avoid processing only the current page. ### TanStack Form - [Build a safe boundary for async field validation](/en/agents/form/async-validation.md): Reject invalid input synchronously, run async validation through built-in debouncing, and separate early feedback from final server validation. ## Machine-readable catalog - [Agent catalog JSON](/agents/catalog.json) - [Ecosystem catalog JSON](/ecosystem/catalog.json) - [Content manifest JSON](/content/manifest.json) - [Agent search JSON](/agents/search.json?locale=en&q=search-params) - [Knowledge graph JSON](/agents/graph.json?locale=en)