PluginBench
Skill
Review
Audit score 70

tanstack-router-best-practices

deckardger/tanstack-agent-skills

Type-safe routing patterns and best practices for TanStack Router in React applications.

What is tanstack-router-best-practices?

Comprehensive guidelines for implementing TanStack Router in React apps, covering type safety, data loading, search parameters, navigation, and code organization. Use when building applications with complex routing needs or setting up new routes and layouts.

  • Provides 38 categorized rules for type-safe routing and route organization
  • Guides data loading patterns with TanStack Query integration
  • Enables type-safe search parameter handling and validation
  • Covers error handling, code splitting, and preloading strategies
  • Includes navigation patterns and active link state management
  • Supports route context and dependency injection patterns

How to install tanstack-router-best-practices

npx skills add https://github.com/deckardger/tanstack-agent-skills --skill tanstack-router-best-practices
Claude Code
Cursor
Windsurf
Cline

How to use tanstack-router-best-practices

  1. 1.Review the rule categories by priority (Critical, High, Medium, Low) to understand focus areas
  2. 2.Consult individual rule files in the rules/ directory for detailed explanations and code examples
  3. 3.Apply type safety rules (ts-*) first to enable refactoring and prevent runtime errors
  4. 4.Configure router defaults and route organization (router-*, org-*) for your project structure
  5. 5.Implement data loading patterns (load-*) with TanStack Query integration
  6. 6.Add search parameter validation (search-*) and error handling (err-*) as needed
  7. 7.Optimize with code splitting (split-*) and preloading (preload-*) strategies

Use cases

Good for
  • Setting up application routing architecture in a new React project
  • Implementing complex multi-level route hierarchies with shared layouts
  • Configuring data loaders and integrating with TanStack Query for optimized fetching
  • Handling search parameters with type safety and validation
  • Refactoring existing navigation patterns to follow best practices
Who it's for
  • React developers building applications with complex routing
  • Teams standardizing TanStack Router patterns across projects
  • Developers integrating TanStack Router with TanStack Query
  • Frontend architects designing scalable routing systems

tanstack-router-best-practices FAQ

What are the critical priority rules I should implement first?

Type Safety (4 rules) and Route Organization (5 rules) are marked critical. These prevent runtime errors, enable safe refactoring, and ensure maintainable route structure.

How does this integrate with TanStack Query?

The skill includes patterns for using queryOptions in loaders, ensureQueryData for data fetching, and loaderDeps for cache control to optimize data loading with TanStack Query.

Can I use this with file-based routing?

Yes, the skill includes org-file-based-routing rule that prefers file-based routing conventions and explains virtual file routes.

How do I handle search parameters safely?

The search-* rules cover validation, type inheritance from parent routes, middleware, defaults, and custom serializers for type-safe URL state management.

What's the difference between index routes and layout routes?

The org-index-routes rule explains that index routes render at their path while layout routes provide shared structure; the skill clarifies when to use each pattern.

Full instructions (SKILL.md)

Source of truth, from deckardger/tanstack-agent-skills.


name: tanstack-router-best-practices description: TanStack Router best practices for type-safe routing, data loading, search params, and navigation. Activate when building React applications with complex routing needs.

TanStack Router Best Practices

Comprehensive guidelines for implementing TanStack Router patterns in React applications. These rules optimize type safety, data loading, navigation, and code organization.

When to Apply

  • Setting up application routing
  • Creating new routes and layouts
  • Implementing search parameter handling
  • Configuring data loaders
  • Setting up code splitting
  • Integrating with TanStack Query
  • Refactoring navigation patterns

Rule Categories by Priority

PriorityCategoryRulesImpact
CRITICALType Safety4 rulesPrevents runtime errors and enables refactoring
CRITICALRoute Organization5 rulesEnsures maintainable route structure
HIGHRouter Config1 ruleGlobal router defaults
HIGHData Loading6 rulesOptimizes data fetching and caching
HIGHSearch Params5 rulesEnables type-safe URL state
HIGHError Handling1 ruleHandles 404 and errors gracefully
MEDIUMNavigation5 rulesImproves UX and accessibility
MEDIUMCode Splitting3 rulesReduces bundle size
MEDIUMPreloading3 rulesImproves perceived performance
LOWRoute Context3 rulesEnables dependency injection

Quick Reference

Type Safety (Prefix: ts-)

  • ts-register-router — Register router type for global inference
  • ts-use-from-param — Use from parameter for type narrowing
  • ts-route-context-typing — Type route context with createRootRouteWithContext
  • ts-query-options-loader — Use queryOptions in loaders for type inference

Router Config (Prefix: router-)

  • router-default-options — Configure router defaults (scrollRestoration, defaultErrorComponent, etc.)

Route Organization (Prefix: org-)

  • org-file-based-routing — Prefer file-based routing for conventions
  • org-route-tree-structure — Follow hierarchical route tree patterns
  • org-pathless-layouts — Use pathless routes for shared layouts
  • org-index-routes — Understand index vs layout routes
  • org-virtual-routes — Understand virtual file routes

Data Loading (Prefix: load-)

  • load-use-loaders — Use route loaders for data fetching
  • load-loader-deps — Define loaderDeps for cache control
  • load-ensure-query-data — Use ensureQueryData with TanStack Query
  • load-deferred-data — Split critical and non-critical data
  • load-error-handling — Handle loader errors appropriately
  • load-parallel — Leverage parallel route loading

Search Params (Prefix: search-)

  • search-validation — Always validate search params
  • search-type-inheritance — Leverage parent search param types
  • search-middleware — Use search param middleware
  • search-defaults — Provide sensible defaults
  • search-custom-serializer — Configure custom search param serializers

Error Handling (Prefix: err-)

  • err-not-found — Handle not-found routes properly

Navigation (Prefix: nav-)

  • nav-link-component — Prefer Link component for navigation
  • nav-active-states — Configure active link states
  • nav-use-navigate — Use useNavigate for programmatic navigation
  • nav-relative-paths — Understand relative path navigation
  • nav-route-masks — Use route masks for modal URLs

Code Splitting (Prefix: split-)

  • split-lazy-routes — Use .lazy.tsx for code splitting
  • split-critical-path — Keep critical config in main route file
  • split-auto-splitting — Enable autoCodeSplitting when possible

Preloading (Prefix: preload-)

  • preload-intent — Enable intent-based preloading
  • preload-stale-time — Configure preload stale time
  • preload-manual — Use manual preloading strategically

Route Context (Prefix: ctx-)

  • ctx-root-context — Define context at root route
  • ctx-before-load — Extend context in beforeLoad
  • ctx-dependency-injection — Use context for dependency injection

How to Use

Each rule file in the rules/ directory contains:

  1. Explanation — Why this pattern matters
  2. Bad Example — Anti-pattern to avoid
  3. Good Example — Recommended implementation
  4. Context — When to apply or skip this rule

Full Reference

See individual rule files in rules/ directory for detailed guidance and code examples.