mcpField
R
react-router-framework-mode

react-router-framework-mode

github.com/remix-runDevelopment1343.6k installsUpdated 19w ago
Repository

About react-router-framework-mode

A guidance skill for React Router Framework mode, aimed at developers building full-stack applications. It covers routing, data operations, rendering choices, and type-safe route modules through focused references and implementation patterns.

Key features

  1. 01File-based routing guidance
  2. 02Loaders and mutation actions
  3. 03SSR, SPA, and pre-rendering
  4. 04Type-safe route modules
  5. 05Reference-based API guidance

Use cases

  1. 01Setting up application routes
  2. 02Loading data and handling forms
  3. 03Choosing a rendering strategy
  4. 04Implementing sessions and protected routes

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/remix-run/agent-skills --skill react-router-framework-mode

After installing, type/react-router-framework-modein Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
actions.md
data-loading.md
error-handling.md
middleware.md
navigation.md
pending-ui.md
rendering-strategies.md
route-modules.md
routing.md
sessions.md
special-files.md
type-safety.md

Details

From the project README

React Router Framework Mode

Framework mode is React Router's full-stack development experience with file-based routing, server-side, client-side, and static rendering strategies, data loading and mutations, and type-safe route module API.

When to Apply

  • Configuring new routes (app/routes.ts)
  • Loading data with loader or clientLoader
  • Handling mutations with action or clientAction
  • Navigating with <Link>, <NavLink>, <Form>, redirect, and useNavigate
  • Implementing pending/loading UI states
  • Configuring SSR, SPA mode, or pre-rendering (react-router.config.ts)
  • Implementing authentication

References

Load the relevant reference for detailed guidance on the specific API/concept:

ReferenceUse When
references/routing.mdConfiguring routes, nested routes, dynamic segments
references/route-modules.mdUnderstanding all route module exports
references/special-files.mdCustomizing root.tsx, adding global nav/footer, fonts
references/data-loading.mdLoading data with loaders, streaming, caching
references/actions.mdHandling forms, mutations, validation
references/navigation.mdLinks, programmatic navigation, redirects
references/pending-ui.mdLoading states, optimistic UI
references/error-handling.mdError boundaries, error reporting
references/rendering-strategies.mdSSR vs SPA vs pre-rendering configuration
references/middleware.mdAdding middleware (requires v7.9.0+)
references/sessions.mdCookie sessions, authentication, protected routes
references/type-safety.mdAuto-generated route types, type imports, type safety

Version Compatibility

Some features require specific React Router versions. Always verify before implementing:

npm list react-router
FeatureMinimum VersionNotes
Middleware7.9.0+Requires v8_middleware flag
Core framework features7.0.0+loaders, actions, Form, etc.

Critical Patterns

These are the most important patterns to follow. Load the relevant reference for full details.

Forms & Mutations

Search forms - use <Form method="get">, NOT onSubmit with setSearchParams:

// ✅ Correct
<Form method="get">
  <input name="q" />
</Form>

// ❌ Wrong - don't manually handle search params
<form onSubmit={(e) => { e.preventDefault(); setSearchParams(...) }}>

Inline mutations - use useFetcher, NOT <Form> (which causes page navigation):

const fetcher = useFetcher();
const optimistic = fetcher.formData?.get("favorite") === "true" ?? isFavorite;

<fetcher.Form method="post" action={`/favorites/${id}`}>
  <button>{optimistic ? "★" : "☆"}</button>
</fetcher.Form>;

See references/actions.md for complete patterns.

Layouts

Global UI belongs in root.tsx - don't create separate layout files for nav/footer:

// app/root.tsx - add navigation, footer, providers here
export default function App() {
  return (
    <div>
      <nav>...</nav>
      <Outlet />
      <footer>...</footer>
    </div>
  );
}

Use nested routes for section-specific layouts. See references/routing.md.

Route Module Exports

meta uses loaderData, not deprecated data:

// ✅ Correct
export function meta({ loaderData }: Route.MetaArgs) { ... }

// ❌ Wrong - `data` is deprecated
export function meta({ data }: Route.MetaArgs) { ... }

See references/route-modules.md for all exports.

Further Documentation

If anything related to React Router is not covered in these references, you can search the official documentation:

https://reactrouter.com/docs

Comments

Markdown supported