Skip to main content

Overview

The @react-router/express package provides an Express.js request handler for React Router, allowing you to integrate React Router into existing Express applications.

Installation

Basic Setup

Integrate React Router into your Express application:

Development Mode

Use Vite’s middleware mode for development with hot module replacement:

Custom Load Context

Pass Express request and response objects to your routes:
Access the context in your routes:

Express Middleware

Use Express middleware before the React Router handler:

API Routes

Combine Express API routes with React Router:

Error Handling

The request handler automatically passes errors to Express error handlers:

Request/Response Utilities

The package exports utilities for converting between Express and Web APIs:

createRemixHeaders

Convert Express headers to Web API Headers:

createRemixRequest

Convert Express request to Web API Request:

sendRemixResponse

Send a Web API Response via Express:

Trust Proxy

When deploying behind a proxy (nginx, load balancer, etc.), enable trust proxy:
This ensures req.hostname, req.protocol, and client IP are correctly detected.

Production Deployment

  1. Build your application:
  2. Set environment variable:
  3. Use a process manager like PM2:

TypeScript Support

Add Express types:
Type your load context:
Express middleware runs before React Router, allowing you to augment requests with authentication, sessions, and other context.