handle
An arbitrary object associated with a route that can be accessed by parent routes and components. Useful for breadcrumbs, navigation, permissions, and other route-level metadata.Signature
Basic Example
Accessing Handle in Components
Dynamic Breadcrumbs with Data
Navigation Metadata
Permissions and Access Control
Layout Variants
I18n and Localization
Analytics and Tracking
Scroll Behavior
TypeScript Types
Best Practices
Use handle for route-level metadata only
Use handle for route-level metadata only
Don’t use handle for component state or data:
Keep handle serializable
Keep handle serializable
Avoid functions and complex objects when possible:
Use TypeScript for type safety
Use TypeScript for type safety
Define a shared type for your handle objects:
Access via useMatches
Access via useMatches
Use
useMatches() to access handle data:Common Use Cases
- Breadcrumbs: Show page hierarchy
- Navigation: Build dynamic nav from route metadata
- Permissions: Check access control requirements
- Analytics: Track page categories and labels
- Layout: Choose layout variant per route
- I18n: Determine which translations to load
- Scroll: Control scroll restoration behavior
- SEO: Add route-specific meta information
See Also
- useMatches - Access route matches and handles
- meta - Define meta tags