What problem does it solve? Managing URL search params as typed application state is error-prone: manual parsing loses type safety, validation libraries behave inconsistently across adapters, and navigation often silently drops existing params. This Skill provides correct patterns for treating search params as JSON-first, fully typed state in TanStack Router. ## Core Features & Use Cases - Typed Validation: Define search schemas with Zod, Valibot, or ArkType via validateSearch, including the critical fallback() vs .catch() distinction between Zod v3 and v4. - Reading & Writing Params: Use Route.useSearch(), getRouteApi(), useSearch({ strict: false }), and function-form search updates in Link and useNavigate() to preserve existing params. - Middlewares & Serialization: Apply retainSearchParams and stripSearchParams middlewares, custom parseSearch/stringifySearch serialization, and loaderDeps for precise loader cache keys. - Use Case: Build a product listing page where page, filter, and sort live in the URL as validated typed state, defaults are stripped from the URL, and the data loader only re-runs when the page param changes. ## Quick Start Add validated, type-safe search params to my TanStack Router products route using Zod with defaults and a pagination link that preserves existing params.