React Router

A multi-strategy router for React, from a lightweight library to a full SSR framework.

Framework
npm
v8.5.0
56,623 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
95 /100 Excellent
Development Activity 100
Maintenance 96
Community 84
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
89 /100 Excellent
Architecture 93
Code Quality 92
Innovation 90
Learning Curve 82

React Router is the routing layer originally built for single-page React apps, now maintained by Remix Software as a multi-strategy router: use it as a minimal library to add client-side navigation to any React app, or opt into full framework mode with @react-router/dev for file-based routes, server-side rendering, nested data loading, and code-splitting bundled into one Vite-powered toolchain.

With 56K+ GitHub stars, 46M+ weekly npm downloads, and an active release cadence spanning v6, v7, and v8, React Router underpins a large share of production React routing — from small SPAs pulling in just the react-router hooks and components to full-stack apps built entirely on its framework mode.

What You Get

  • The react-router package: hooks (useNavigate, useParams, useLoaderData) and components (<Routes>, <Link>, <Outlet>) for client-side routing in any React app.
  • @react-router/dev: a Vite plugin that turns React Router into a full framework — file-based routing, SSR, code splitting, and type-safe route modules.
  • @react-router/fs-routes, @react-router/node, @react-router/serve: framework-mode building blocks for filesystem route conventions, Node runtime adapters, and a production server.
  • create-react-router: a CLI scaffolder for bootstrapping new framework-mode projects from official templates.
  • Nested data loading and mutations via route loader/action functions, with automatic revalidation and pending-UI hooks (useNavigation, useFetcher).

Common Use Cases

  • Adding client-side navigation and nested layouts to an existing React SPA without adopting SSR.
  • Building a full-stack React app with server rendering, data loading, and mutations via framework mode.
  • Migrating a Remix application, since React Router v7 absorbed Remix’s framework runtime and APIs.
  • Implementing type-safe, file-based route trees with automatically generated route types.

Under The Hood

Architecture: The core router (packages/react-router/lib/router/router.ts, ~7,700 lines) implements a framework-agnostic state machine — createRouter and createStaticHandler — handling route matching, navigation, data loading, submissions, and error boundaries independent of React. A React bindings layer (components.tsx, hooks.tsx, context.ts) subscribes to this router’s state via context (DataRouterContext, DataRouterStateContext) and exposes the public hooks/components. DOM-specific bindings (lib/dom) layer on browser history integration, link prefetching, and target=_blank handling. Framework mode (@react-router/dev) sits atop the same core: it compiles file-based route conventions (@react-router/fs-routes) into the same RouteObject shape the router already understands, then wires a runtime adapter (@react-router/node, @react-router/serve, @react-router/express, @react-router/cloudflare) for SSR — meaning library and framework modes share one execution engine, differing only in entrypoints and build tooling.

Tech Stack: TypeScript throughout (98.9% of the codebase), organized as a pnpm workspace monorepo with 10 publishable packages under packages/. Builds run through tsdown (a Rolldown-based bundler) orchestrated by wireit for incremental caching, producing dual development/production builds with React Server Components-aware entrypoints. Framework mode is built on Vite 7 as its dev server and bundler. Peer dependencies require React >=19.2.7 and Node >=22.22.0, tracking the newest React release trains closely.

Code Quality: Extensive automated coverage — 143 test files under packages/react-router/tests alone, run with Jest (unit, via jest-environment-jsdom and @testing-library/react) plus a separate Playwright-driven integration suite (integration/) that exercises the framework build end-to-end. A repo-wide ESLint config enforces react-hooks, jsx-a11y, and TypeScript rules, paired with Prettier formatting. Module boundaries are consistent — router state (router/), React bindings (hooks.tsx, components.tsx, context.ts), and DOM-specific code (dom/) are cleanly separated, so the router core has no DOM or React dependency.

API Design: The public API is layered for progressive adoption: <BrowserRouter>/<Routes>/<Route> for the simplest declarative case, createBrowserRouter(routes) for data-router features, and file-based routes.ts conventions for framework mode — all compiling down to the same RouteObject shape, so moving between modes doesn’t require relearning concepts. Hook naming mirrors React idioms (useNavigate, useParams, useLoaderData, useFetcher), and TypeScript route-module types are generated from the route config so loader/action signatures are checked at compile time. Getting started in library mode is a single install plus a router provider; framework mode adds a Vite plugin and a routes.ts file, with create-react-router templates removing most of that boilerplate.

Used by 227 apps in this directory

TypeScript
96%
Other

Amplication

AI Code Assistants · Automation · Developer Tools

16,009

Create production-ready backend services with your organization's standards baked in — generating NestJS, Prisma, and GraphQL code that you own and control.

View details
57
Repo Health
84
Technical
60
Dependency
Built with
TypeScript 96%
Updated 4 months ago
JavaScript
99%
MIT

AnythingLLM

AI Assistants · Automation · Developer Tools

67,496

The all-in-one AI platform for private document chat, no-code agents, and local LLMs with zero setup friction.

View details
91
Repo Health
78
Technical
65
Dependency
Built with
JavaScript 99%
Updated 5 days ago
TypeScript
90%
Other

anytype-ts

Collaboration · Knowledge Management · Note Taking

8,981

A local-first, end-to-end encrypted knowledge OS that lets you build notes, tasks, wikis, and entire apps — with your data stored offline and synced peer-to-peer.

View details
89
Repo Health
78
Technical
67
Dependency
Built with
TypeScript 90%
Updated 6 days ago
Go
61%
Apache 2.0

Apache Answer

Community

15,700

Open-source Q&A platform for communities, help centers, and knowledge bases with AI assistant and plugin extensibility

View details
89
Repo Health
78
Technical
68
Dependency
Built with
Go 61%
TypeScript 36%
Updated 1 weeks ago
TypeScript
68%
Apache 2.0

Appsmith

Automation · Developer Tools · No Code Platforms

41,113

Open-source low-code platform to build admin panels, dashboards, and internal tools connected to any database or API.

View details
94
Repo Health
79
Technical
63
Dependency
Built with
TypeScript 68%
Java 22%
Updated 6 days ago
TypeScript
68%
Apache 2.0

Appsmith

Automation · Developer Tools · No Code Platforms

41,113

Open-source low-code platform to build admin panels, dashboards, and internal tools connected to any database or API.

View details
94
Repo Health
79
Technical
63
Dependency
Built with
TypeScript 68%
Java 22%
Updated 6 days ago
Go
86%
Apache 2.0

Argo Workflows

Data Engineering · Devops

17,050

The most popular Kubernetes-native workflow engine for orchestrating containerized DAGs, ML pipelines, CI/CD, and parallel batch jobs at scale.

View details
96
Repo Health
90
Technical
68
Dependency
Built with
Go 86%
TypeScript 10%
Updated 6 days ago
Go
86%
Apache 2.0

Argo Workflows

Data Engineering · Devops

17,050

The most popular Kubernetes-native workflow engine for orchestrating containerized DAGs, ML pipelines, CI/CD, and parallel batch jobs at scale.

View details
96
Repo Health
90
Technical
68
Dependency
Built with
Go 86%
TypeScript 10%
Updated 6 days ago
Rust
86%
Other

Arroyo

Analytics · Data Engineering

5,060

A distributed stream processing engine written in Rust that lets you write SQL to run stateful, real-time computations over data streams with subsecond results.

View details
87
Repo Health
74
Technical
62
Dependency
Built with
Rust 86%
Updated 6 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers