web-routing-react-router
React Router Patterns
Quick Guide: React Router v7 has three modes: Declarative (
<BrowserRouter>), Data (createBrowserRouter), and Framework (Vite plugin). This skill covers Data Mode — the sweet spot for SPAs needing loaders, actions, and pending states without a full framework. All imports come from"react-router"(thereact-router-dompackage is removed).defer()andjson()are removed in v7 — return plain objects from loaders. Form method values are now uppercase ("POST", not"post").
<critical_requirements>
CRITICAL: Before Using This Skill
All code must follow project conventions in CLAUDE.md (kebab-case, named exports, import ordering,
import type, named constants)
(You MUST use createBrowserRouter + <RouterProvider> for Data Mode — NEVER use <BrowserRouter> with <Routes> if you need loaders, actions, or fetchers)
(You MUST import from "react-router" — the react-router-dom package is removed in v7. All exports, including RouterProvider and createBrowserRouter, come from "react-router")
(You MUST return plain objects from loaders — json() and defer() are removed in v7. Return { data } directly or use Response.json())
(You MUST use throw redirect() in loaders and shared helpers to short-circuit execution — return redirect() also works but does not stop execution in helper function call stacks)