What problem does it solve? Setting up TanStack Router correctly requires wiring the bundler plugin, the Register type augmentation, validated search params, loaders, and query integration — and small mistakes (missing loaderDeps, guards in components, stale plugin names) silently break type safety or serve stale data. ## Core Features & Use Cases - Type-safe router setup: createRouter, RouterProvider, and the mandatory Register declaration merge that makes every Link, useNavigate, useParams, and useSearch compile-checked against the real route tree. - File-based and code-based routing: file-naming conventions ($param, _pathless, (group), splat, trailing-underscore un-nesting) plus the full code-based createRoute/addChildren approach when the bundler plugin is unavailable. - Search params, loaders, and Query integration: validateSearch with Zod v3/v4, loaderDeps, deferred data via raw promises and Await, and the ensureQueryData-to-useSuspenseQuery handshake with TanStack Query. - Use Case: Add an authenticated /posts/$postId route with validated tab search param, a loader that primes the TanStack Query cache, a beforeLoad redirect guard, and a memory-history test that renders the routed component. ## Quick Start Use the tanstack-router skill to set up TanStack Router in my Vite React TypeScript app with a posts route that has a validated search param and a loader wired to TanStack Query.