There is something about [INSERT MOST POPULAR THING] that inspires people to philosophize. Sometimes it’s a bummer. It’s tough to avoid the never-ending stream of “news” about Elon Musk, which strongarms your brain into having an opinion about him. WordPress, by the numbers, is pretty popular, so I’ll bet you have some kind of opinion worked out about it, whether you even really want to or not. Sometimes it’s interesting. Popular things tend to have high levels of use so people’s opinions can be rather well informed.
React has occupied this spot for a while now. It’s ultra-popular. There are developers who went to a coding school to learn only React, got a job doing React, and that’s that. And nobody in that chain is really at fault because they are getting what they want. The pseudonymous EmNudge wrote React is Holding Me Hostage:
I mean I’m practically a “React Developer” for Pete’s sake. My last company, this company, probably my next company. I can’t seem to avoid it. You’d think I’d stop caring so much after a while, but it just takes one look at the alternative to wonder why you ever stayed.
They go on to explain loads of things that are confusing or bad about React and better alternatives but then ends with five (rather massive) reasons we still use it, and:
And so my current job is React. My next job will be React. The one after might as well.
There are also several economic explanations for React’s rise to power and continued dominance. For example, in 2019, Charlie O’Hara described React as the Fordism moment that commodified the web further. With React, Facebook introduced an assembly line that standardized the work for developers, turning them from artisans into factory workers.
That feels about right to me. There are a lot of open questions in web design and development. Front-end work is especially squishy, with sometimes what seems like dozens of ways to accomplish essentially the same thing. Any tool that says “do it like this” has a handful of people that dislike it because they don’t want their hands tied and many more people saying “oh god thank you for making this clear.” React, especially when you layer on a styling system, pattern library, state management approach, etc., starts feeling rather prescriptive in a way some developers love (and companies definitely do).
Josh Collinsworth also got spicy with the ultra-spicy quote:
React isn’t great at anything except being popular.
Josh kept those spicy meatballs rolling this week with Things you forgot (or never knew) because of React.
React benefitted mightily from being early to the framework game; it set the standard. But that’s come with severe drawbacks in agility and adaptability. Every decision React’s made since its inception circa 2013 is another layer of tech debt—one that its newer contemporaries aren’t constrained by.
This goes so far as to say that there is literally nothing that React offers technologically that it’s modern contemporaries (like Svelte) don’t do better.
Me, I dunno. I don’t doubt it, but at the same time, you know what they say: better the devil you know than the devil you don’t. I’ve done little things in all the various frameworks and usually left with an “eh, that was fine.” feeling. Nothing so eye-opening that I’m looking for any opportunity to do it again or, lawd help me, switch. But I’ve also got some serious sunk costs. CodePen itself is largely React, and I’m very convinced that changing frameworks right now is not worth doing. I think we’ve really benefited from things EmNudge pointed out: the big ecosystem and evolved tooling. So my mind might not be as open to seeing greener grass.
Say time wasn’t a factor. Say an entire team could be trained properly. What would the technological green grass be? Snap my fingers and have a completed rewrite in SvelteKit? SolidStart? Nuxt? Would there be no question that we’d be better off? I can’t see it just yet. Maybe we’re one new thing away from making that picture. Josh seems to think that might be the case:
What will that new thing be? I don’t know. Maybe it’ll just be the web platform. Maybe we won’t even need frameworks. Maybe it’ll be a framework above; maybe it’ll be something we haven’t even seen yet. Maybe it won’t even be a thing; maybe there will be more diversity of tooling and less coalescing around one single accepted standard (though of all the above options, I’d say that seems the least likely, because again: humans. We’re busy little monkeys and so we like defaults.)
I think, though, that the delta between React and that thing, whatever it is, will continue to grow larger and larger over time.
The pace at which new things arrive is unprecedently fast as well. Many of us lived through times in web browser evolution where, if you were looking a year out, you could be reasonably confident nothing would be that different. That is not the case anymore. Andrew Walpole makes this point:
… a lot of web developers kept a mostly even pace set from the early 2000’s to around 2015, which was fairly methodical, not necessarily stagnant, but pretty manageable to deal with the odd new feature that trickled down the pipe. And I think until now, the repercussions of keeping that pace haven’t yet critically surfaced.
A year from now, the only thing we can be sure of is that times will have changed. I’m still rooting for React, if nothing else, for selfish reasons. Get smaller! Get faster! Make the weird hooks less weird! Support web components! Ship an opinion about styling! Wait, maybe it’s fast now?