---
name: create-route
description: Create React Router 7 routes with proper type imports, loaders, and actions. Use when adding new pages, API endpoints, layouts, or route files.
---
# Create Route
## When to Use
- Creating new pages or views
- Adding API endpoints
- Creating layout routes with ``
## Critical Rules
### 1. Route Type Imports
```tsx
// ALWAYS use this pattern:
import type { Route } from './+types/my-route';
// NEVER use relative paths:
// import type { Route } from '../+types/my-route'; // WRONG!
```
**If types are missing:** Run `npm run typecheck` - NEVER change the import path.
### 2. Destructure Directly
```tsx
// CORRECT
export async function action({ request, params }: Route.ActionArgs) {}
// WRONG
export async function action(args: Route.ActionArgs) {
const { request } = args; // Don't do this!
}
```
### 3. Access Data via Props
```tsx
// CORRECT
export default function MyPage({ loaderData }: Route.ComponentProps) {}
// WRONG
const data = useLoaderData(); // Don't use hooks!
```
## Quick Start
```tsx
import type { Route } from './+types/my-page';
import { data, redirect } from 'react-router';
export async function loader({ request }: Route.LoaderArgs) {
const user = await requireUser(request);
return { user };
}
export async function action({ request }: Route.ActionArgs) {
const formData = await request.formData();
// Handle POST/PUT/DELETE
return redirect('/success');
}
export default function MyPage({ loaderData }: Route.ComponentProps) {
return (
<>
Page Title | Iridium
{/* Content */}
>
);
}
```
## Checklist
1. [ ] Create route file in `app/routes/`
2. [ ] Register in `app/routes.ts`
3. [ ] Run `npm run typecheck` to generate types
4. [ ] Add path to `Paths` constant if reusable
## Templates
- [Page Route](./templates/page-route.tsx)
- [API Route](./templates/api-route.ts)
- [Layout Route](./templates/layout-route.tsx)
## Full Reference
See `.github/instructions/react-router.instructions.md` for:
- Nested routes & layouts
- Dynamic segments & optional segments
- Streaming with Suspense
- Error boundaries
- Navigation patterns