Skip to main content
TanStack Router treats search parameters (query strings) as first-class citizens, providing type-safe parsing, validation, and updates.

Defining Search Params

Use validateSearch to define and validate search parameters:

Using Search Params

Access search params in components with useSearch:

Strict Mode

Enable strict mode for route-specific types:

Validation with Validators

Use validation libraries like Zod for schema validation:
Supported validators:
  • Zod: @tanstack/zod-adapter
  • Valibot: @tanstack/valibot-adapter
  • ArkType: @tanstack/arktype-adapter

Updating Search Params

Update search params using Link or navigate:

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 uses qss for encoding/decoding search strings:

Search Middleware

Transform search params before they’re used:

Parent Search Params

Child routes inherit search params from parents:
Access in component:

Search Schema Types

Define TypeScript types for search params:

Strict Search Mode

Enforce strict search parameter validation:
With strict mode:
  • Unknown search params are removed
  • Only params defined in validateSearch are 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:
The 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