Every few months the JavaScript ecosystem declares a new winner. Next.js App Router. Astro. Solid Start. The pattern is always the same. New abstractions. New rules. New "best practices."
Meanwhile, React Router v7 ships real improvements that map cleanly to how web apps actually run.
After shipping production apps and wasting time migrating between stacks, one thing is clear:
Stability beats novelty.
Framework Fatigue Comes From Abstraction
Most framework hopping is not innovation. It is avoidance.
Teams switch stacks because the current one feels heavy, brittle, or confusing. Then they adopt a new one that hides the same complexity behind different names.
I tried the "modern" Server Components approach. What broke me was not the technology. It was the mental overhead.
"Is this a client component?" "Why did this context break?" "Do I need a directive here?"
At some point, you stop writing software and start managing infrastructure inside your UI tree. That model optimizes for theoretical purity. I build execution-driven systems where clarity of control flow matters more.
If an abstraction does not map to runtime reality, it slows me down.
What React Router v7 Gets Right
Loaders and Actions Match Reality
Data loading and mutations are first-class concepts.
A loader runs when data is needed (GET). An action runs when something changes (POST/PUT). No client-server theater. No magical RPC hooks pretending the network doesn't exist.
export async function loader({ params }: Route.LoaderArgs) {
const user = await db.user.findUnique({
where: { id: params.id }
});
if (!user) throw new Response("Not Found", { status: 404 });
return { user };
}This reads like a request lifecycle because that is exactly what it is.
Type Safety Without Ritual
Generated types from +types files give you full type safety across loaders, actions, and components without ceremony. No manual plumbing. No duplicated schemas.
It just works.
Progressive Enhancement Is Not Optional
Forms work without JavaScript. Navigation works without JavaScript. Then JavaScript enhances the experience.
This is not a "feature." This is the web working as intended.
The Actual Hot Take
React Router v7 in framework mode is effectively Remix 3.0 without the marketing narrative.
It gives you:
- File-based routing
- Server rendering by default
- Streaming and Suspense
- Nested layouts that reflect real hierarchy
What it does not give you is hype.
Why It Is Underrated
It is boring.
No VC-fueled branding trying to sell you a cloud platform.
No conference circuit evangelism.
No claims about reinventing the internet.
Just a team that has been solving routing and data flow problems for over a decade.
If your stack changes every year, the problem is not the framework.
It is your inability to commit.
Pick tools that align with how you think.
Pick tools that respect execution flow.
Then ship.