Паттерны Clerk React Router
React Router v7/v8 patterns with Clerk â rootAuthLoader, getAuth in loaders, clerkMiddleware, protected routes, SSR user data, org switching. Triggers on: react-router auth, rootAuthLoader, getAuth loader, react-router protected route, loader authentication, SSR auth react-router, useNavigate may be used only in the context of a Router.
Что делает навык
Набор паттернов для интеграции Clerk с React Router v7.9+ и v8, обеспечивающий серверную аутентификацию, защиту маршрутов и передачу данных пользователя через SSR. Решает задачи безопасного доступа к данным, управления сессиями и переключения организаций в рамках конвейера middleware и loader.
Когда применять
- Реализация защищённых маршрутов с перенаправлением на страницу входа при отсутствии пользователя.
- Получение данных текущего пользователя и сессии на сервере (SSR) для рендеринга компонентов.
- Защита серверных действий (actions) от несанкционированного доступа с проверкой userId.
- Организация переключения между организациями (B2B) с сохранением контекста в роутинге.
Как работает
- Настроить vite.config.ts: для React Router v8 добавить ssr.noExternal: ['@clerk/react-router'], для v7.9+ установить future.v8_middleware: true.
- В root.tsx экспортировать middleware с clerkMiddleware() и создать loader, вызывающий rootAuthLoader(args).
- Обернуть приложение в ClerkProvider в корневом компоненте, передав ему loaderData из root.tsx.
- В loader или action использовать getAuth(args) для получения userId и orgId, выполняя проверки доступа.
- В клиентских компонентах использовать useAuth или useUser для отображения состояния аутентификации.
Примеры запросов агенту
Что понадобится
- React Router v7.9+ или v8
- SDK @clerk/react-router v3.5+
- Vite (для настройки SSR)
Описание составлено по SKILL.md навыка, сверено 05.10.2026.
Как подключить
SKILL.md к навыкам ассистентаНавык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.