Defining Search Params
UsevalidateSearch to define and validate search parameters:
Using Search Params
Access search params in components withuseSearch:
Strict Mode
Enable strict mode for route-specific types:Validation with Validators
Use validation libraries like Zod for schema validation:- Zod:
@tanstack/zod-adapter - Valibot:
@tanstack/valibot-adapter - ArkType:
@tanstack/arktype-adapter
Updating Search Params
Update search params usingLink or navigate:
Using Links
Using Navigate
Search Param Serialization
By default, TanStack Router uses JSON for complex values:Custom Serialization
Provide custom serializers for search parameters:QSS Format
The router usesqss for encoding/decoding search strings:
Search Middleware
Transform search params before they’re used:Parent Search Params
Child routes inherit search params from parents:Search Schema Types
Define TypeScript types for search params:Strict Search Mode
Enforce strict search parameter validation:- Unknown search params are removed
- Only params defined in
validateSearchare allowed - Helps catch typos and invalid params
Preserving Search Params
Maintain search params across navigations:Search Params in Loaders
Access search params in loader functions:loaderDeps function makes search params part of the cache key, so data refetches when params change.
URL Building
Build URLs with search params:Common Patterns
Pagination
Filtering
Sorting
Next Steps
Path Params
Learn about path parameter handling
Loaders
Use search params in data loading
Type Safety
Configure end-to-end type safety
Navigation
Navigate with search parameters