react-router-v7
Provides a quick reference for React Router v7 best practices, including router setup.
npx skills add existential-birds/beagle --skill react-router-v7Before / After Comparison
1 组React Router v7 configuration is complex and error-prone, impacting front-end application development efficiency. Inconsistent routing management results in a suboptimal user experience.
Provides React Router v7 best practices, simplifying router setup. Optimizes front-end routing management, boosting development efficiency, and improving user experience.
description SKILL.md
react-router-v7
React Router v7 Best Practices
Quick Reference
Router Setup (Data Mode):
import { createBrowserRouter, RouterProvider } from "react-router";
const router = createBrowserRouter([
{
path: "/",
Component: Root,
ErrorBoundary: RootErrorBoundary,
loader: rootLoader,
children: [
{ index: true, Component: Home },
{ path: "products/:productId", Component: Product, loader: productLoader },
],
},
]);
ReactDOM.createRoot(root).render(<RouterProvider router={router} />);
Framework Mode (Vite plugin):
// routes.ts
import { index, route } from "@react-router/dev/routes";
export default [
index("./home.tsx"),
route("products/:pid", "./product.tsx"),
];
Route Configuration
Nested Routes with Outlets
createBrowserRouter([
{
path: "/dashboard",
Component: Dashboard,
children: [
{ index: true, Component: DashboardHome },
{ path: "settings", Component: Settings },
],
},
]);
function Dashboard() {
return (
<div>
<h1>Dashboard</h1>
<Outlet /> {/* Renders child routes */}
</div>
);
}
Dynamic Segments and Splats
{ path: "teams/:teamId" } // params.teamId
{ path: ":lang?/categories" } // Optional segment
{ path: "files/*" } // Splat: params["*"]
Key Decision Points
Form vs Fetcher
Use <Form>: Creating/deleting with URL change, adding to history
Use useFetcher: Inline updates, list operations, popovers - no URL change
Loader vs useEffect
Use loader: Data before render, server-side fetch, automatic revalidation Use useEffect: Client-only data, user-interaction dependent, subscriptions
Additional Documentation
-
Data Loading: See references/loaders.md for loader patterns, parallel loading, search params
-
Mutations: See references/actions.md for actions, Form, fetchers, validation
-
Navigation: See references/navigation.md for Link, NavLink, programmatic nav
-
Advanced: See references/advanced.md for error boundaries, protected routes, lazy loading
Mode Comparison
Feature Framework Mode Data Mode Declarative Mode
Setup
Vite plugin
createBrowserRouter
<BrowserRouter>
Type Safety Auto-generated types Manual Manual
SSR Support Built-in Manual Limited
Use Case Full-stack apps SPAs with control Simple/legacy
Weekly Installs222Repositoryexistential-birds/beagleGitHub Stars40First SeenJan 20, 2026Security AuditsGen Agent Trust HubPassSocketPassSnykPassInstalled onopencode161gemini-cli157github-copilot156codex152cursor124claude-code120
forumUser Reviews (0)
Write a Review
No reviews yet
Statistics
User Rating
Rate this Skill