Home / Cursor rules / React Router V7
React Router V7
React Router v7 rules for framework mode, data routers, loaders, actions, route modules, and progressive enhancement
Cursor rules (.mdc)Public domain (CC0)
–unranked
Install
mkdir -p .cursor/rules && curl -sL https://raw.githubusercontent.com/PatrickJS/awesome-cursorrules/b044f956f021b6e8877f16781bcfc466a6a120e9/rules/react-router-v7.mdc -o .cursor/rules/react-router-v7.mdcDownloads the file at commit b044f956f021 into .cursor/rules/.
To remove it later:
rm .cursor/rules/react-router-v7.mdcContext cost: ≈571 tokens when used.
Rules file
--- description: React Router v7 rules for framework mode, data routers, loaders, actions, route modules, and progressive enhancement globs: ["app/routes/**/*", "src/routes/**/*", "routes/**/*", "react-router.config.*", "vite.config.*", "**/*.tsx", "**/*.ts"] alwaysApply: false --- # React Router v7 Rules ## Route Modules - Use route modules as the boundary for route UI, loader data, actions, metadata, and error boundaries. - Keep route modules small; move shared UI to components and reusable data access to services. - Prefer file-based routing in framework mode when the project is configured for it. - Use nested routes for shared layouts and progressive disclosure. - Export route-specific `ErrorBoundary` components for recoverable route failures. ## Data Loading - Use loaders for route data that should be available before render. - Keep loaders deterministic and side-effect free. - Validate params and search params at the loader boundary. - Return typed data and consume it through route hooks rather than duplicating fetch logic in components. - Use deferred or streaming patterns only when they improve perceived performance. ## Mutations - Use actions for route mutations and form submissions. - Prefer `Form`, `useFetcher`, and `useSubmit` for progressive enhancement. - Revalidate affected loader data after mutations. - Handle validation errors as typed action data instead of generic exceptions. - Keep server-only secrets and privileged operations out of client actions. ## Navigation and State - Store shareable state in URL params or search params. - Keep ephemeral UI state local to components. - Use pending navigation state to show optimistic or loading UI. - Avoid global state for data that belongs to route loaders. ## TypeScript and Testing - Type loader and action return values. - Add tests for route loaders, actions, validation failures, and error boundaries. - Use integration tests for critical form and navigation flows. - Mock network and persistence at the route-service boundary. ## Common Mistakes - Do not duplicate loader fetches in `useEffect`. - Do not mutate data in loaders. - Do not hide route errors behind a single generic app-level catch-all. - Do not put auth checks only in components when loader data is protected.
Security
Scanned Nov 4, 2026 at commit b044f956f021, with Cisco's open-source skill-scanner.
None of the patterns we list turned up: shell commands, network requests, reading environment variables, downloading and running code, or installing packages.
A scan lists patterns in the code. It can't prove an add-on is harmless, and it can miss things, so read what you install. How we scan