React Router

remix-run/react-router/.agents/skills/react-router

by remix-run4fbf6076d44bd832f14bee4b4b1ccfcbc2f5aee6MITListed Oct 9, 2026Updated Oct 9, 2026

Build applications with React Router in Framework, Data, Declarative, and unstable RSC modes. Use when configuring routes, route modules, loaders, actions, forms, fetchers, navigation, pending UI, SSR/SPA/pre-rendering, middleware, URL params/search params, or React Router upgrades.

Instructions onlySoftware Development
AI-generated overview

Guides building React Router apps across Framework, Data, Declarative, and unstable RSC modes.

What it does
This skill helps an agent identify which React Router mode an application uses, then load the matching reference file for that mode. It covers routing configuration, route modules, loaders, actions, forms, fetchers, navigation, pending UI, rendering strategies, middleware, URL params, and upgrades. It directs the agent to the installed package docs as the source of truth and includes a migration doc index for switching modes.
When to use it
Use it when working on a React Router application and you need mode-specific guidance for routes, data loading, actions, rendering, or upgrades. It is also meant for mode migrations, such as moving from Declarative to Data or Framework mode.
Requirements
Requires a React Router project with the package installed so its bundled markdown docs under node_modules/react-router/docs/ can be read. No scripts are shipped; it is instructions and reference files only.

React Router

React Router is mode-specific. Before changing an app, identify the mode, load the matching reference, then read the installed docs for the installed package version.

Identify the Mode

Do not apply Framework/Data patterns to a Declarative app unless you are intentionally migrating modes.

Framework Mode

Use Framework Mode guidance when you see:

  • @react-router/dev in dependencies
  • react-router.config.ts
  • app/routes.ts
  • app/entry.server.tsx and/or app/entry.client.tsx files
  • route modules under app/routes/
  • route exports like loader, action, clientLoader, clientAction, ErrorBoundary, meta, links, or headers
  • imports from ./+types/...
  • the React Router Vite plugin from @react-router/dev/vite

Framework examples usually use the default app/ directory, but check react-router.config.ts for a custom appDirectory before assuming exact paths.

Then read references/framework-mode.md.

Data Mode

Use Data Mode guidance when you see:

  • createBrowserRouter, createHashRouter, createMemoryRouter, or createStaticRouter
  • <RouterProvider router={router}>
  • route objects with properties like path, children, loader, action, Component, ErrorBoundary, or lazy
  • data APIs without the Framework Vite plugin

Then read references/data-mode.md.

Declarative Mode

Use Declarative Mode guidance when you see:

  • <BrowserRouter>, <HashRouter>, or <MemoryRouter>
  • <Routes> and <Route> JSX route configuration
  • route components passed with element={<Component />}
  • no data router, no route module convention, and no loaders/actions

Then read references/declarative-mode.md.

RSC Framework and RSC Data Modes

React Server Components support is unstable and exists in both Framework and Data variants. Use RSC guidance when you see:

  • unstable_reactRouterRSC
  • @vitejs/plugin-rsc
  • unstable_RSCRouteConfig
  • RSC entry files such as entry.rsc
  • ServerComponent, ServerErrorBoundary, ServerLayout, or ServerHydrateFallback
  • React directives or boundary packages such as "use client", "server-only", or "client-only"

For RSC Framework, read both references/framework-mode.md and references/rsc.md. For RSC Data, read both references/data-mode.md and references/rsc.md.

Use Installed Docs as Source of Truth

React Router ships markdown docs in the package so guidance can match the installed version:

txt
node_modules/react-router/docs/

Key docs paths:

txt
node_modules/react-router/docs/index.mdnode_modules/react-router/docs/start/node_modules/react-router/docs/how-to/node_modules/react-router/docs/explanation/node_modules/react-router/docs/upgrading/

When this skill references react-router/docs/..., read the matching file under node_modules/react-router/docs/. If the installed version does not include local docs, use the repo docs/ directory when working inside the React Router repository; in a consuming app, fall back to version-matched website docs.

Most docs include a mode marker near the top:

txt
[MODES: framework, data, declarative]

Only apply a doc when its mode marker matches the app mode. If a task spans modes, prefer the section or file that matches the current app.

RSC is documented primarily in:

txt
node_modules/react-router/docs/how-to/react-server-components.md

Skill References

Load the relevant reference after identifying the mode:

ReferenceUse When
references/framework-mode.mdFramework Mode or RSC Framework base behavior
references/data-mode.mdData Mode or RSC Data base behavior
references/declarative-mode.mdDeclarative Mode
references/rsc.mdAny unstable RSC app

Mode Migration Doc Index

If the user explicitly asks to switch modes, read the target mode reference plus the migration-relevant docs:

MigrationDocs to read
Declarative → Datareact-router/docs/start/modes.md, react-router/docs/start/data/routing.md, react-router/docs/start/data/data-loading.md, react-router/docs/start/data/actions.md
Declarative/Data → Frameworkreact-router/docs/start/modes.md, react-router/docs/start/framework/routing.md, react-router/docs/start/framework/route-module.md, react-router/docs/how-to/route-module-type-safety.md
Framework SPA/SSR/pre-render changesreact-router/docs/start/framework/rendering.md, react-router/docs/how-to/spa.md, react-router/docs/how-to/pre-rendering.md, react-router/docs/start/framework/data-loading.md, react-router/docs/start/framework/actions.md
Future flags/upgradesreact-router/docs/upgrading/future.md and relevant files under react-router/docs/upgrading/

Source and attribution

Source:remix-run/react-routerin.agents/skills/react-routerat commit4fbf607

License: MIT

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal