Is react supposed to stop being a UI library?
I’ve been working with React since 2015. It was a rollercoaster—fun at first, but lately, it’s just accelerating and not that fun anymore.
Recently, I’ve seen a lot of people complaining about React Server Components (RSC). It’s not just random bashing—some are big names: framework authors, tooling devs, voices that matter. It got me thinking: does RSC belong in the React library?
Back in the day, React was a pure client-side UI library. It did its job well. Backend frameworks like Rails and Laravel integrated it smoothly, and JS frameworks like Remix and early Next.js played nice. Now, we even have better integrations with inertia.js.
Here's a little recap of the changes:
- Class Components and Lifecycles: Simple and effective.
componentDidMount
,componentWillMount
—that was the backbone. - Unsafe Lifecycles: Fiber came along, and those lifecycles got tagged "unsafe." Use
UNSAFE_componentWillMount
or refactor everything—awesome. - Functional Components: “Forget classes; let’s switch to functional components and rewrite it all!”
- HOC Hype Train: Not a React thing, but “functional is king” made everyone jump on Higher-Order Components. It was a total mess and hard to debug. Six months later, we all bailed.
- Hooks: “Here’s the fix—refactor everything again. Hooks rule!”
- React Server Components (RSC): “Client-side’s too heavy; let’s render on the server and flip everything upside down.”
Through those first five phases, I didn’t see huge wins—just shifting developer preferences, like OOP vs. Functional debates. Boring stuff. React still worked fine as a UI library.
Then, RSC dropped, led by Next.js, and things got messy.
Disclaimer: I like Next.js. I started using it in 2018—routing and SSR by default fit my needs. At Globo, we used Next.js SSR to build a white-label streaming platform, dynamically rendering products by tenant. It worked great—team productivity went through the roof.
But here’s the thing: maybe RSC should’ve stayed at the framework level. One of the best parts of React was that it was a simple UI library. You could slap on whatever libraries you wanted and build your own “framework.” That’s different from heavyweights like Rails, Laravel, or Django.
RSC broke that. It’s not just me—frameworks are debating how to use RSC now. It’s not the simple client-side UI library anymore.
If RSC had stayed in Next.js, I’d be cool with it. Next.js is a full framework built for that kind of thing. My issue is when it became a React feature.
“Next.js isn’t a full framework, no auth or whatever.”
Sure, it’s not Rails, but that looks like its goal. Fewer features don’t change that.
“You don’t need to use it.”
That’s the dumbest take ever. When a library picks a direction, everything new builds around it. Imagine skipping functional components. Either you keep refactoring forever, or you walk away.
It’s sad but true.