react-router v7 Data Mode as Canonical Routing¶
Context¶
A prescriptive guide for production React frontends MUST take a position on routing. Routing is the spine of a single-page application: it owns URL state, data loading, error boundaries, navigation transitions, and the typing model that flows through every page. The ecosystem has two mature options at the time of writing — react-router v7 (Data Mode) and TanStack Router v1 — plus an emerging next-major (react-router v8, expected ~June 2026, per ecosystem research). Picking one as canonical and naming the other as an explicit alternative MUST be unambiguous so that an engineer scaffolding a new project knows which to pick by default, and so that an LLM agent grounded in the guide returns a single canonical answer.
react-router v7 Data Mode (the successor to Remix's data APIs, now
folded back into react-router) is the de-facto default in the React
community: it has the largest install base, the most tutorial coverage,
the broadest ecosystem of integrations, and the smoothest migration path
both from legacy react-router v6 codebases and toward the upcoming v8.
Its createBrowserRouter + loader + action API is the shape that
most React engineers know, and the loader/action model fits the
data-loading idiom that the Surface chapter recommends across the
stack.
TanStack Router v1 is genuinely strong on type-safety: it generates a typed route tree from a file-system or in-code registration and gives end-to-end inference for params, search params, and loader return values. For a team that explicitly prioritises type-safety over ecosystem ubiquity, it is a defensible alternative. The guide therefore names it in a clearly-labelled alternative subsection with the type-safety trade-off articulated.
The imminent react-router v8 release (~June 2026, per ecosystem research) is flagged in the Surface chapter so that engineers scaffolding a project today know to watch for the upgrade. The canonical position does not change with the v8 release: it remains "react-router (latest stable v7 today, v8 once released and validated)".
Decision Drivers¶
- The guide MUST give engineers a single canonical routing answer for new React projects.
- The guide MUST name a credible alternative so that teams with different priorities (type-safety over ubiquity) MAY make an informed divergence.
- The canonical recommendation MUST have the largest ecosystem, the most tutorial coverage, and the smoothest upgrade path for the next several years.
- The recommendation MUST flag the imminent react-router v8 release so that engineers do not lock themselves into a soon-to-be-stale pattern.
- The recommendation SHOULD compose cleanly with the data-loading idiom recommended elsewhere in the guide (Connect-RPC + TanStack Query).
Considered Options¶
- react-router v7 Data Mode as canonical; TanStack Router v1 as alternative
- TanStack Router v1 as canonical; react-router v7 as alternative
- No canonical recommendation — present both with neutral framing
- Wait for react-router v8 and skip naming a current canonical
Decision Outcome¶
Chosen option: "react-router v7 Data Mode as canonical; TanStack Router
v1 as alternative", because react-router v7 has the largest ecosystem,
the smoothest migration from v6 codebases, the clearest path to v8, and
the broadest LLM training-data coverage (which matters for the LLM-agent
audience). The Surface chapter MUST include at least one
createBrowserRouter example excerpt and MUST present TanStack Router
v1 in a clearly-labelled alternative subsection that articulates the
type-safety trade-off. The chapter MUST also include a forward-looking
note that react-router v8 is imminent (~June 2026) and that engineers
SHOULD monitor for the upgrade.
Positive Consequences¶
- Engineers scaffolding new projects MAY pick the canonical option without analysis paralysis.
- LLM agents trained on the guide MAY return a single grounded answer to "what router should I use".
- The guide composes cleanly with the rest of the Surface chapter's data-loading idiom.
Negative Consequences¶
- Teams that prioritise end-to-end type-safety MUST consciously diverge to TanStack Router v1, and that divergence WILL incur ecosystem trade-offs (fewer tutorials, smaller plugin ecosystem).
- The canonical recommendation WILL need a v7 → v8 review pass once v8
ships and stabilises; the
last-revieweddate is the trigger.
Consequences¶
After this decision, the Surface chapter routing section MUST
canonicalise react-router v7 Data Mode with at least one
createBrowserRouter example excerpt and MUST present TanStack Router
v1 in a clearly-labelled alternative subsection. The chapter MUST flag
the imminent react-router v8 release (~June 2026) and SHOULD recommend
that new projects monitor for the upgrade. The TypeScript chapter
SHOULD echo the canonical/alternative split when listing the frontend
stack. The recommendation MUST be revisited at the first quarterly
review after react-router v8 reaches stable; the revisit MAY update the
canonical line in place because the canonical option name ("react-router
Data Mode") does not change between v7 and v8.
Pros and Cons of the Options¶
react-router v7 Data Mode as canonical; TanStack Router v1 as alternative¶
The current de-facto default plus a credible type-safety-first alternative.
- Good, because it gives engineers a single canonical answer.
- Good, because the canonical option has the largest ecosystem and smoothest upgrade path.
- Good, because it acknowledges TanStack Router's type-safety strength for teams that prioritise it.
- Bad, because teams that pick the alternative pay an ecosystem trade-off cost.
TanStack Router v1 as canonical; react-router v7 as alternative¶
Inverts the positions.
- Good, because the canonical option has stronger end-to-end type inference.
- Bad, because the canonical option has a smaller ecosystem and less LLM training-data coverage.
- Bad, because most engineers and most existing codebases will migrate TO the canonical option from react-router, which is the larger community direction.
No canonical recommendation¶
Present both with neutral framing.
- Good, because no team is steered away from their preferred option.
- Bad, because the guide loses its prescriptive value at the spine of the frontend; engineers MUST re-litigate the choice per project.
Wait for react-router v8¶
Skip naming a current canonical until v8 stabilises.
- Good, because the canonical recommendation is then aligned with the newest stable.
- Bad, because engineers scaffolding projects today have no canonical to follow.
- Bad, because v8's release date is forecast, not guaranteed; the guide would carry an open hole indefinitely.
Links¶
- react-router: https://reactrouter.com/
- TanStack Router: https://tanstack.com/router
- See also ADR 0003 (RFC 2119 tone), ADR 0004 (version snapshot).