· 5 min read

Remix 3 Ditched React and I'm Weirdly Excited About It

Remix 3 Ditched React and I'm Weirdly Excited About It

Ryan Florence and Michael Jackson just did the thing every framework maintainer fantasizes about but never actually does: they threw out everything and started over.

Remix 3 is not Remix 2 with improvements. It's a ground-up rewrite that swaps React for a fork of Preact, kills the React runtime entirely, and replaces component state updates with a this.update() function. You still write JSX. But React is gone.

That's either brave or reckless, depending on your framework trauma level.

What's Actually Different

Let me be specific about what changed, because "ditched React" is doing a lot of heavy lifting as a headline.

No React runtime. Remix 3 uses a Preact fork under the hood. You still write JSX — the syntax is the same — but there's no React reconciler, no React scheduler, no virtual DOM diffing. The framework gives you a this.update() function you call when something changes. That's it. It's a much thinner layer between your code and the browser.

Model-first development. Every route explicitly declares what data it loads, what actions it performs, and how it fits into the app. This isn't new conceptually — Remix has always been route-centric — but the v3 implementation makes each route's contract much clearer. You look at a route file and immediately understand what it does.

Raw web APIs everywhere. Fetch, Request, Response, FormData — Remix 3 leans directly into browser and server platform APIs instead of wrapping them in framework abstractions. The promise: write a Remix 3 app for Node, and it runs on Deno or any other JavaScript runtime without code changes. No adapter layers, no platform-specific builds.

Composable modules. Instead of a monolithic framework, Remix 3 ships as small, composable packages. You pull in what you need. This is smart for tree-shaking and for letting people adopt pieces incrementally.

AI-assisted design. Florence and Jackson have been vocal about using AI in both the design and implementation of the framework itself. This is genuinely novel — not "we used Copilot for autocomplete" but actually having AI agents participate in architecture decisions.

Should You Care?

Here's my honest assessment.

The web standards bet is smart. Every framework I've seen that leans into platform APIs instead of abstracting them ages better. jQuery abstracted browser inconsistencies and became unnecessary once browsers got consistent. Frameworks that build on web standards rather than replacing them tend to stay useful longer.

Dropping React is bold and creates a real migration cliff. If you have a Remix 2 app, you can't incrementally migrate to Remix 3. It's a rewrite. Your React components, your hooks, your context providers — none of that carries over directly. That's a big ask for existing users, and history suggests most won't make the jump.

It's still experimental. This is important. Remix 3 is under heavy active development. Many core packages are marked experimental and explicitly not production-ready. The goal is to ship the first stable version of the full-stack framework sometime in 2026, but that's a goal, not a guarantee. Don't rewrite anything for this today.

Compare the approaches. Astro says "bring any framework, we'll render it as islands." Remix 3 says "we are the framework, and we're not React anymore." Both are valid philosophies, but Astro's is more pragmatic for teams with existing React code. Remix 3 is a bet on a cleaner future at the cost of backward compatibility.

The Solo Operator Take

Here's what this means for the solo builder making framework choices right now.

Don't switch to Remix 3. Not yet. It's experimental. Experimental means APIs will change, things will break, and you'll spend time debugging the framework instead of building your product. That's the opposite of what a solo operator needs.

Do pay attention to the web standards pattern. The less your code depends on framework-specific magic, the more portable it is. Whether or not Remix 3 succeeds, the principle is sound: use fetch() instead of a framework wrapper. Use FormData instead of a state management library for forms. Use the platform.

For content sites, Astro is still the better bet. And I'm biased — it's what this blog runs on. But the bias is earned. Zero JavaScript by default, framework-agnostic islands, and a content-first architecture that makes static sites fast without effort. If you're building something content-heavy, Astro 5 is production-proven and excellent.

For full-stack apps, SvelteKit and Next.js are the safe choices. They're mature, well-documented, and have large ecosystems. Remix 3 might be the better framework in 18 months, but right now it's a bet, and solo operators can't afford to bet wrong on infrastructure.

The real lesson here isn't about Remix. It's that frameworks which respect web standards give you an escape hatch. Frameworks that don't, own you. When you pick your tools, ask: "If this framework dies tomorrow, how much of my code survives?" The answer should be "most of it."

Rooting for the Underdog

I'm genuinely excited about Remix 3 in a way I haven't been about a framework in a while. Not because I'll use it tomorrow, but because the web needs more projects that bet on the platform instead of abstracting it away.

The AI-assisted framework design angle is fascinating too. If they pull it off — using AI not just to write code but to inform architectural decisions — that's a template other projects will copy.

But I'm not rewriting anything until it ships stable. Watch this space.

Stay in the Loop

Get new posts delivered to your inbox. No spam, unsubscribe anytime.

Related Posts