
React Router
Routing library for React with data loading, mutations, and an optional full-stack "framework mode".
React Router is the routing library for React, and since version 7 it is also a full-stack framework: Remix was merged into it, so the Remix framework continues under the React Router name. You can use as little or as much of it as you want.
It has three modes, each adding to the previous one. Declarative mode maps URLs to components with links and navigation hooks. Data mode moves route definitions outside of rendering and adds loaders, actions and pending states. Framework mode wraps that in a Vite plugin with a routes file, type-safe route modules, code splitting and a choice of rendering strategy. Loaders and actions work on standard Request, Response and FormData objects.
In framework mode you can server-render, pre-render chosen paths at build time, or ship a single-page app with server rendering turned off, and change your mind later without rewriting routes. Official templates cover Node with Docker (including a Postgres variant), and Vercel, Cloudflare and Netlify maintain their own. Middleware is part of the current major version.
The limits: React Server Components support is still experimental and can break in minor releases. Major upgrades depend on adopting future flags in advance, and v8 requires recent Node, React 19.2 and Vite 7, which may force other upgrades in an older codebase.
Where it fits
How React Router itself is built
4 tools, from its own code, website and Product Hunt page.
Who uses it
No maker's live product on record yet, and 377 open-source projects that declare it in their code.
We haven't found a maker's live product that uses React Router yet — only the open-source projects below, which declare it in their code.
Open source: a project that declares React Router as a dependency in its public code — verifiable, but not necessarily a live product.
Loved and watch-outs
Themes that recur in makers' words and Hacker News comments, each linked to what it summarises.
- Repeated breaking changes across major versions leave teams with large upgrade work, and some have left for alternatives. HNHN 2HN 3HN 4
- The Remix and React Router renaming history confuses people about which project is which. HNHN 2HN 3HN 4
- Mixing server and client code in framework mode adds mental overhead, and registering API routes takes ceremony. HNHN 2
Reliability and open issues
- [Bug]: Make setSearchParams stable?👍 82 · opened Jan 2023 · active Aug 2026
- Consolidate Router State Access👍 25 · opened Feb 2025 · active May 2026
- 'No result found for routeId' and hydration errors when navigating during page loading👍 25 · opened Jun 2025 · active May 2026
- [Bug]: `useLocation` out of sync with `history.location`, leads to potential renders of unmatched `Route`s👍 25 · opened Apr 2024 · active Jun 2026
- HMR Update is not applying when network is taking time👍 16 · opened Mar 2026 · active Apr 2026
Who switches
Public pull requests on GitHub since Oct 2024 whose title says "X to Y" — real code changes moving a project from one tool to another, by developers in general. Open a row to see the pull requests.
Next.js → React Router25 PRs
- refactor: :recycle: Migrate from Next.js to Vite with React Routeralessioforte/beehive · 2026-09-17
- Migrate from Next.js to React Router with Cloudflare Workerszackdotcomputer/my-homepage · 2026-09-12
- Migrate the marketplace from Next.js to React Router 7.matthewhill8286/NextBazar-Marketplace · 2026-08-20
- 🏗️(front) migrate the frontend from Next.js to Vite and React Routersuitenumerique/conversations · 2026-08-11
- Migrate documentation site from Next.js to React Router and Vitetaskmigo/docs · 2026-08-06
- Migrate from Next.js to Vite with React Routerpeempumrapee/peempumrapee.github.io · 2026-04-22
- Migrate stats-web from Next.js to Vite with React Routerakash-network/console · 2026-02-20
- Migrate `@workflow/web` from Next.js to React Router v7vercel/workflow · 2026-02-11
- refactor: Migrate frontend from Next.js App Router to Vite and React Router.shivajee98/open-score-frontend · 2026-02-07
- Migrate app from Next.js App Router to React Router SSRpingdotgg/lawn · 2026-02-03
React → React Router11+ PRs
- Migrate client from Create React App to Vite and React Router 7DC-Cunningham/TheBeautRev · 2026-10-02
- chore: Updated react router dom to react routerlinagora/twake-contacts-frontend · 2026-09-29
- Upgrade dependencies and bring the React and Angular skills up to React Router 8, Vite 8, and Angular 21formio/ai · 2026-09-28
- migration: react router dom to react router with modern syntaxsubrataroy912/Campus-Mind · 2026-09-02
- Upgrade to React 18, migrate to React Router 6, and enhance Auth0 integrationEcommerce-Chilly/PF-Chilly · 2026-08-30
- chore(web): fix react-hooks warnings + opt in to React Router v7 future flagslumoryxr/lumo-task-web · 2026-08-27
- Upgrade apps/web from React Router 7 to React Router 8 (Decision Log #28)Tracymao/soccernity-mvp · 2026-08-22
- Fix Heroku build: upgrade React 18 to 19 for React Router 8andrewmoody96/ciyp · 2026-08-12
- test(react-router): migrate the integration test to React Router 8thelooter/apollo-client-integrations · 2026-08-12
- feat(react-router): widen peer range to include React Router 8apollographql/apollo-client-integrations · 2026-08-03
React Router → Next.js49 PRs
- feat: migrate portfolio from Vite + React Router to Next.js 16CodesofAkash/Personal-Portfolio · 2026-09-27
- Migrate from Vite + React Router to Next.js App Routerchathurrsan-aram/aramrecruitment · 2026-09-06
- refactor!: migrate React Router SPA to Next.js App Router (public site + admin CMS unified, src/pages -> src/features, localStorage repo unchanged)tenSunFree/travel-audio-guide-nextjs · 2026-08-03
- Migrate from React Router to Next.js App Routerkebo3868-dev/Winnersbookmark-Incorporated- · 2026-07-11
- feat: Migrate frontend from Vite/React Router to Next.js App Routeriamdevlucas123/Quantum_Ed · 2026-07-06
- chore: migrate from Vite/React Router SPA to Next.js 16 App Routernicolasnunescampos-code/native-english-dashboard · 2026-07-02
- Migrate from Vite/React Router SPA to Next.js 15 App Routerdczii/Tyme · 2026-06-25
- Migrate from React Router + Vite to Next.js App RouterAkshatg102002/Optimantix-Global-Next · 2026-06-24
- feat: Migrate frontend from Vite/React Router to Next.js 16 + TypeScr…rashaduldev/Tourist-Guide-Client · 2026-06-13
- Migrate from Vite/React Router to Next.js with Supabase backendjasperkoningnl/vakantie · 2026-06-04
React Router → TanStack Start7 PRs
- refactor(web): Migrate from React Router to TanStack Start with file-based routinguos-judo-jiho/jiho-frontend · 2026-08-26
- refactor: migrate from react router v7 to tanstack startpagezero-dev/pagezero · 2026-06-11
- feat: migrate from React Router 7 to TanStack Startitzcull/starter · 2026-03-21
- Migrate from React Router v6 to TanStack Startstassinari/memento · 2026-01-31
- docs: Update framework references from React Router to TanStack Startsoundbluemusic/public-monorepo · 2026-01-25
- Migrate from react router to tanstack startvikiru/vikiru.github.io · 2026-01-21
- Migrate from React Router to TanStack Startentropretty/entropretty · 2025-10-29
React Router → Astro5 PRs
- Migrate from Vite + React Router SPA to Astro 7cheeeunahn/wildferret-blog · 2026-08-17
- feat(bot-dashboard): migrate from React Router 7 to Astro V6vspo-lab/vspo-portal · 2026-03-14
- Migrate from Vite + React Router to Astro with multi-station supportoszuidwest/teksttv-frontend · 2026-02-10
- Migrate from Vite + React Router to Astro frameworkLectere-Co/web · 2026-02-02
- Migrate from React Router v7 to Astroty91/taeyoung.dev · 2025-11-03
Alternatives to React Router
All alternatives by situation →Questions makers ask about React Router
Which mode should I use?
The modes are additive. Framework mode suits most new apps and anyone comparing it with Next.js; data mode suits teams that want loaders and actions but their own bundling and server setup; declarative mode is plain client-side routing. source ↗
I have a Remix v2 app. Is this the same thing?
Yes. React Router v7 is the next major version of Remix v2, and if you have adopted the Remix future flags, upgrading is mostly a dependency change, with a codemod for packages and imports. source ↗
Can I build a single-page app with no server?
Yes. Setting ssr to false builds an index.html you can serve statically. The root route is still rendered once at build time, so your routes must not touch browser-only APIs during the first render. source ↗
Can I pre-render some pages as static HTML?
Yes. The prerender option renders listed paths at build time using the same loaders as server rendering, either alongside a runtime server or for a fully static deploy. source ↗
Where can I deploy it?
Anywhere that runs Node or Docker, such as Fly.io, Railway or Google Cloud Run, using the official templates, or to static hosting as a single-page app. Vercel, Cloudflare and Netlify maintain their own templates. source ↗
Does it support React Server Components?
Yes, in both framework and data modes, but the support is experimental and may change in minor or patch releases. source ↗
What does upgrading from v7 to v8 involve?
If you adopted the v7 future flags, the upgrade is mostly non-breaking. v8 requires Node 22.22 or later, React 19.2.7 or later and, in framework mode, Vite 7. source ↗
Is React Router free?
Yes — it is free, open-source software.
Is React Router open source or self-hostable?
Open source, and you can self-host it. source ↗
Can AI coding agents work with React Router?
No llms.txt, official MCP server or CLI found yet.
Who uses React Router?
No maker's live product we track yet; 377 open-source projects declare it in their code. source ↗