React Router

React Router is the most widely used routing library for React, first released in 2014 by the developers who would later go on to build Remix. A single-page application loads one HTML document and then changes what the user sees without full page reloads, which means it needs its own mechanism to map URLs to views. React Router provides exactly that: it keeps the browser’s address bar in sync with the React component tree being displayed.

At its core, React Router lets developers declare which components should render for which URLs. Through components such as Routes, Route, Link, and Outlet, and hooks such as useNavigate and useParams, an application can define nested layouts, link between views, read URL parameters, and respond to navigation, all expressed in the same JSX-based component model as the rest of a React app.

Over its history the library has supported several styles of routing. Its documentation describes a declarative mode based on routing components, a data mode based on route objects that can load data and handle form submissions, and a framework mode that turns React Router into a full framework. It also ships different router types for different environments, including a browser router, a memory router for testing, and a static router for server rendering.

React Router’s evolution is closely tied to Remix. The same team’s work on data loading, nested routes, and progressive enhancement in Remix flowed back into React Router, and the two converged so that React Router’s framework mode embodies much of the Remix approach. This shared lineage explains why both projects live under the same organization on GitHub.

The source code is maintained at github.com/remix-run/react-router. As the de facto routing standard for the React ecosystem, React Router shaped how a generation of developers structured navigation in single-page applications, providing the connective tissue between URLs and the component-based architecture of React.

Sources

Last verified June 8, 2026