https://joshcollinsworth.com/blog/self-fulfilling-prophecy-of-react

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d09d11ad-0758-495a-a0f8-d1f5340c39e2/self-fulfilling-react.png

Scan a variety of front-end job postings on just about any dev job board these days, and you’ll most likely find one qualification mentioned ubiquitously: React. (“Or similar front-end framework,” the more open-minded employers might add. They might even list a few examples. But React will definitely be there.)

However, in the year 2022, I have to wonder why. Because (and if you just came here for the quotable hot take, here it is, right up front):

React isn’t great at anything except being popular.

React isn’t great at anything except being popular.

Don’t get me wrong: React is good. Even I, a noted and unapologetic React non-fan, readily admit that. Give me a choice between React and no frontend framework at all, and given any project of sufficient size or complexity, I will happily take React, thank you very much.

React laid the groundwork for so much of what other frameworks are doing and have done. Vue 3 and its composition API are clearly inspired by React hooks. Many of the conventions of Svelte come from React. Nuxt, a Vue framework I’ve used and love, takes many of its ideas (and 75% of its name) from Next, a React meta-framework. For that matter, the entire component-based model of frontend design and development owes much of its current state (ha) to React—though it should be noted others also helped pave the way.

But that’s all kind of my point: much like a genre-defining movie, album, or video game from a previous era, React’s greatness is more in what it meant at the time—and in what it inspired—than what it currently is today, absent that context (no pun intended).

Ok, I concede that analogy was a bit of an overreach. There’s admittedly much less of a difference between React and its contemporaries than there is between, say, Citizen Kane and a great movie from modern times, or between the original Legend of Zelda on the NES and Breath of the Wild on the Switch. That said:

React has aged. And I don’t think most people—particularly those using it regularly—realize how much or how poorly.

React has aged. And I don’t think most people—particularly those using it regularly—realize how much or how poorly.

When you live only in the world of React, you likely only see the improvements. It seems like React is getting better and better all the time. In many ways, it is. But that perspective shields you from realizing React’s velocity, and its ceiling, have long lagged behind that of its comparable colleagues.

React does what it does well, but it doesn’t do anything better than other frameworks.

Let’s say you’re the CTO of a brand-new tech startup, or a solo entrepreneur starting out building some new web software product of some kind.

You’ve got a greenfield project ahead of you; you can choose whatever technology you like to build your thing. No constraints. How do you make the call on the front-end framework you’ll use for the next several years, if not the entire lifespan of your product?

(Assume here that your project is of sufficient size and complexity that going without a front-end framework is simply not a good choice.)

There are lots of things to consider, including: