The Vercel Takeover of React That Never Happened #
React told everyone to use frameworks. The internet decided Vercel staged a hostile takeover. #
Here’s the narrative that everyone believes: Vercel saw React as a cash cow. They hired away the core team members from React. They got Next.js plastered all over the docs. Now they’re puppeting the entire ecosystem to pump their hosting platform.
Only one problem with that theory - It’s backwards! The React team invented React Server Components inside Meta. They couldn’t ship it internally (lmao Meta infrastructure), so they needed an external guinea pig. They walked up to Vercel and basically said, “Hey, wanna rewrite your entire router for our experimental architecture?” And Vercel… said yes? Gigabrain or insane, hard to tell. So React devs joined Vercel to build the thing they already wanted to build. Vercel didn’t capture React. React captured Vercel.
That being said, this relationship absolutely gave Vercel unfair advantages. They got first-mover status on RSCs. They got homepage placement in React docs. The optics are terrible. But it was never a conspiracy.
“Is React Just Next.js Now?” #
No. Stop it. Next.js is a framework that uses React. React is a library. You can still use Vite, Remix or Gatsby. You can totally choose to use nothing and suffer in raw React!
The docs even say “yes you can use React without a framework” (in the most passive-aggressive way possible, but I’ll get to that). The confusion exists because the community doesn’t have clean vocabulary anymore. Everyone’s fighting over “framework vs SPA” when the real question is “full-stack vs client-only.”
Client-Side React Isn’t Going Anywhere #
Deep breath. Your SPA isn’t deprecated. Meta runs millions of lines of client-rendered React in production. They’re not nuking that. React has a god-tier track record of backward compatibility. New features in React 19? Many are explicitly client-only.
RSCs are additive. Optional. You don’t have to use them. Your useState hooks aren’t getting nerfed. The sky is not falling. This is fine. 🔥🐶
So Why The Framework Push? #
If it’s not a Vercel conspiracy and client React is safe, why is the React team simping so hard for frameworks? - Performance. That’s it.
Andrew Clark (React core team) straight up said: “Use a framework. Full stop.” His reasoning was that frameworks ship with data fetching, routing, and SSR out of the box while DIY stacks are usually jank. In the meanwhile, frameworks matured and got better than your custom setups.
Dan Abramov explained why Create React App got the axe: it was too simple. CRA couldn’t guide you toward SSR, SSG, or optimized data fetching. These problems are deeply interconnected. You can’t bolt them on later. You need framework-level integration.
Translation: React looked at the ecosystem and said “y’all keep building the same slow SPAs. We’re gonna force-feed you performance.”
Based? Maybe. Patronizing? Absolutely.
Where React Absolutely Bricked It #
The technical direction? Defensible. The communication? Catastrophic.
The initial docs read like a hit piece on non-framework React:
- SPAs described as having “unusual constraints”
- Non-framework React buried under 17 layers of navigation
- Literally said “we can’t stop you” about using React without a framework
That’s not documentation. That’s a passive-aggressive intervention.
It took years and massive community backlash to get balanced docs. The RSC docs? Still scattered across blog posts and framework-specific guides. No central source of truth.
The React team didn’t just slowburn the the community trust destruction - they speedran it like the AngularJS team at Google (from 2014).
Recap of what happened with Angular - AngularJS (Angular 1.x) was huge. Everyone used it. Google announced Angular 2 - which was a complete rewrite. Not an upgrade! A different framework all together. Migration path? Lmao what migration path Your Angular 1 app? Basically legacy code overnight. The community: “So… we just rewrite everything?”. Google: “Yeah pretty much”
The Actual Situation #
React wants better performance. Frameworks enable that. RSCs are optional. Client React isn’t dying. But the team communicated like they’re personally offended by your Vite setup. They acted like your SPA was cringe just for existing.
Here’s the thing: they’re managing a massive ecosystem. Impossible to please everyone. But you know what helps? Not talking down to your users. Not burying documentation. Not making people feel abandoned.
In the end, you can keep building SPAs. You can adopt frameworks. You can use RSCs or ignore them forever.
React gave you new tools. They’re powerful. They’re optional. But if you’re mad, you’re not wrong. The rollout was fumbled. The messaging was condescending. The docs prioritized one approach (coincidentally the one that makes Vercel money) and treated everything else like a begrudged edge case.
Modern problems require modern solutions. And apparently modern solutions require frameworks. Whether you choose to cope, seethe, or adapt is up to you.
Just don’t let the hype cycle make your technical decisions. Pick what works for your project. Touch grass occasionally. Ship code.
We’ve all got PRs to merge.
This article was originally published on Substack and Medium as part of the BoFOSS publication.