react-router-v7 — правило для Cursor: что делает и как установить
Задаёт стандарты React Router v7 для маршрутов, загрузчиков, мутаций и типизации в файлах TypeScript и конфигах проекта.
.cursor/rules/react-router-v7.mdcЧто делает react-router-v7
Правило инструктирует Cursor следовать архитектуре React Router v7 в framework mode. Модули маршрутов служат границей для разметки, функций loader, action, метаданных и ErrorBoundary. Логика получения данных выносится в загрузчики без побочных эффектов, а сетевые вызовы не дублируются внутри useEffect.
Мутации выполняются через action с использованием Form, useFetcher и useSubmit для progressive enhancement. Ошибки валидации возвращаются как типизированные данные действия, а не сырые исключения. Проверки авторизации должны находиться в загрузчиках: проверка прав только в UI-компонентах оставляет закрытые данные в ответе сервера.
Правило отслеживает файлы в папках routes/**/*, app/routes/**/*, src/routes/**/*, конфигурации react-router.config.*, vite.config.* и TypeScript-исходники. При тестировании оно требует изолировать сетевой слой на границе сервисов.
Какие задачи решает
- избавиться от повторных вызовов fetch внутри
useEffect - организовать мутации данных через
action,FormиuseFetcher - проверять параметры маршрута и строки поиска на входе в
loader - изолировать серверные секреты от клиентских обработчиков
Примеры запросов агенту
- Сделай маршрут
app/routes/profile.tsxс загрузчиком данных и обработкой формы черезaction - Добавь валидацию query-параметров в loader и типизируй возвращаемый результат
- Напиши интеграционный тест для отправки формы с проверкой ошибок валидации
Как установить react-router-v7
Вручную: положить файлы
.cursor/rules/react-router-v7.mdcВо frontmatter: description, globs, alwaysApply
Вручную: положить файлы
.claude/rules/react-router-v7.mdПоле paths во frontmatter ограничивает файлы: globs из источника → paths
AGENTS.md
Codex читает AGENTS.md: вставьте текст правила туда
Вручную: положить файлы
.github/instructions/react-router-v7.instructions.mdПоле applyTo задаёт, к каким файлам применять: globs из источника → applyTo
Вручную: положить файлы
.devin/rules/react-router-v7.mdВручную: положить файлы
.clinerules/react-router-v7.mdПо шагам, с командами для каждой платформы: Cursor rules: файлы .mdc, четыре режима и замена .cursorrules
Вопросы о react-router-v7
Как установить react-router-v7 в Cursor?
Создайте файл .cursor/rules/react-router-v7.mdc в корне проекта и добавьте в него текст правила.
Что делает react-router-v7?
Инструктирует модель генерировать код по соглашениям React Router v7, разделяя загрузку данных, мутации форм, обработку ошибок и типизацию.
Почему правило запрещает проверять права доступа только в компонентах?
Если проверять авторизацию только на этапе отрисовки компонентов, функция loader всё равно выполнится и отдаст закрытые данные клиенту.
Исходный текст
react-router-v7.mdc · CC0-1.0
--- 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.
© PatrickJS · CC0-1.0 · PatrickJS/awesome-cursorrules