react-router-data-mode▌
remix-run/agent-skills · updated Apr 8, 2026
Data mode uses createBrowserRouter and RouterProvider to enable data loading, actions, and pending UI without the framework's Vite plugin. This is ideal for existing React applications that want to add data loading and mutation capabilities.
React Router Data Mode
Data mode uses createBrowserRouter and RouterProvider to enable data loading, actions, and pending UI without the framework's Vite plugin. This is ideal for existing React applications that want to add data loading and mutation capabilities.
When to Apply
- Using
createBrowserRouterwith route objects - Loading data with
loaderproperty on routes - Handling mutations with
actionproperty - Navigating with
<Link>,<NavLink>,<Form>,redirect, anduseNavigate - Implementing pending/loading UI states with
useNavigation - Using
useFetcherfor mutations without navigation
References
Load the relevant reference for detailed guidance on the specific API/concept:
| Reference | Use When |
|---|---|
references/routing.md |
Configuring routes, nested routes, layout |
references/route-object.md |
Understanding route object properties |
references/data-loading.md |
Loading data with loaders |
references/actions.md |
Handling forms, mutations, validation |
references/navigation.md |
Links, programmatic navigation, redirects |
references/pending-ui.md |
Loading states, optimistic UI |
references/ssr.md |
Server-side rendering with data mode |
Critical Patterns
These are the most important patterns to follow. Load the relevant reference for full details.
Basic Router Setup
import { createBrowserRouter, RouterProvider } from "react-router";
const router = createBrowserRouter([
{
path: "/",
Component: Root,
children: [
{ index: true, Component: Home },
{ path: "about", Component: About },
],
},
]);
ReactDOM.createRoot(root).render(<RouterProvider router={router} />);
Forms & Mutations
Search forms - use <Form method="get">, NOT onSubmit with setSearchParams:
// ✅ Correct
<Form method="get">
<input name="q" />
</Form>
// ❌ Wrong - don't manually handle search params
<form onSubmit={(e) => { e.preventDefault(); setSearchParams(...) }}>
Inline mutations - use useFetcher, NOT <Form> (which causes page navigation):
const fetcher = useFetcher();
const optimistic = fetcher.formData
? fetcher.formData.get("favorite") === "true"
: isFavorite;
<fetcher.Form method="post" action={`/favorites/${id}`}>
<button>{optimistic ? "★" : "☆"}</button>
</fetcher.Form>;
See references/actions.md for complete patterns.
Optimistic UI Pattern
Use fetcher.formData to show expected results immediately:
function FavoriteButton({ itemId, isFavorite }) {
const fetcher = useFetcher();
// Optimistic: use pending form data, fallback to server state
const optimistic = fetcher.formData
? fetcher.formData.get("favorite") === "true"
: isFavorite;
return (
<fetcher.Form method="post" action={`/items/${itemId}/favorite`}>
<input type="hidden" name="favorite" value={String(!optimistic)} />
<button>{optimistic ? "★" : "☆"}</button>
</fetcher.Form>
);
}
See references/pending-ui.md for complete patterns.
Further Documentation
If anything related to React Router is not covered in these references, you can search the official documentation:
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.5★★★★★35 reviews- ★★★★★Pratham Ware· Dec 16, 2024
Keeps context tight: react-router-data-mode is the kind of skill you can hand to a new teammate without a long onboarding doc.
- ★★★★★Aisha Flores· Dec 4, 2024
I recommend react-router-data-mode for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
- ★★★★★Nia Mehta· Dec 4, 2024
Keeps context tight: react-router-data-mode is the kind of skill you can hand to a new teammate without a long onboarding doc.
- ★★★★★Camila Wang· Nov 27, 2024
react-router-data-mode fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Zara Rahman· Nov 23, 2024
react-router-data-mode has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Yash Thakker· Nov 7, 2024
react-router-data-mode has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Dhruvi Jain· Oct 26, 2024
Solid pick for teams standardizing on skills: react-router-data-mode is focused, and the summary matches what you get after install.
- ★★★★★Li Sethi· Oct 14, 2024
Solid pick for teams standardizing on skills: react-router-data-mode is focused, and the summary matches what you get after install.
- ★★★★★Oshnikdeep· Sep 17, 2024
We added react-router-data-mode from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Emma Sethi· Sep 9, 2024
Solid pick for teams standardizing on skills: react-router-data-mode is focused, and the summary matches what you get after install.
showing 1-10 of 35