Skip to main content
TanStack Router provides universal bundler plugins for Webpack, ESBuild, and Rspack through a single package. These plugins enable automatic route generation, code splitting, and hot module replacement across different bundlers.

Installation

Install the universal plugin package:
This single package provides plugins for all supported bundlers.

Webpack Plugin

Basic Setup

Add the plugin to your webpack.config.js:
With TypeScript:

Configuration

Pass configuration options to the plugin:

Specialized Webpack Plugins

Use separate plugins for generation and code splitting:

With React

ESBuild Plugin

Basic Setup

Add the plugin to your ESBuild configuration:
With TypeScript:

Configuration

Specialized ESBuild Plugins

With React and JSX

Rspack Plugin

Basic Setup

Add the plugin to your Rspack configuration:
With TypeScript and Rsbuild:

Configuration

Specialized Rspack Plugins

Configuration Options

All bundler plugins support the same configuration options:
'react' | 'solid' | 'vue'
default:"react"
The framework you’re using with TanStack Router
string
default:"./src/routes"
The directory containing your route files
string
default:"./src/routeTree.gen.ts"
Where to output the generated route tree file
string
Optional prefix for route files
string
default:"-"
Files starting with this prefix will be ignored
'single' | 'double'
default:"single"
Quote style for generated code
boolean
default:false
Whether to include semicolons in generated code
boolean
Automatically enable code splitting for routes
boolean
default:false
Disable TypeScript type generation
boolean
default:false
Disable plugin logging output
CodeSplittingOptions
Advanced code splitting configuration:

Code Splitting

All plugins support automatic code splitting:

TypeScript Support

All plugins generate TypeScript types automatically. Ensure your tsconfig.json includes the generated files:

Validation with Zod

The plugins use Zod for configuration validation:

Using Unplugin Directly

The plugins are built with unplugin, which provides a unified plugin interface. You can use the raw unplugin factories:

Comparison with CLI

Bundler plugins vs CLI (tsr watch): Recommendation: Use bundler plugins for better integration and features. Use CLI only if your bundler is not supported.

Comparison with Vite Plugin

The Vite plugin is the recommended choice for Vite projects:
See Vite Plugin for Vite-specific documentation.

Troubleshooting

Plugin not working

  1. Verify the plugin is properly imported for your bundler
  2. Check that configuration options are valid
  3. Ensure route files exist in the configured directory
  4. Check bundler logs for errors

Routes not generating

  1. Verify routesDirectory path is correct
  2. Check file naming conventions match expected patterns
  3. Ensure bundler is running in watch/dev mode
  4. Check for configuration validation errors

Type errors

  1. Include generated route tree in tsconfig.json
  2. Restart your TypeScript server
  3. Verify disableTypes is not set to true
  4. Check that route files have valid TypeScript

Code splitting not working

  1. Set autoCodeSplitting: true
  2. Verify codeSplittingOptions configuration is valid
  3. Check that route components are properly exported
  4. Ensure bundler supports dynamic imports

Webpack-specific issues

  1. Check React Refresh plugin order
  2. Verify babel configuration includes JSX transform
  3. Ensure source maps are enabled for debugging

ESBuild-specific issues

  1. Configure JSX transform: jsx: 'automatic'
  2. Set correct loaders for .tsx and .ts files
  3. ESBuild plugin support is limited - consider Vite

Rspack-specific issues

  1. Use within tools.rspack.plugins array
  2. Ensure Rsbuild React plugin is configured
  3. Check Rspack version compatibility (>= 1.0.2)