Why I like React
One simple reason — no drama upgrades.
At HPE, our team deals with very large UI codebases. About five years ago, we moved from Ember to React when new projects started rolling in. Ember is an opinionated framework that didn’t quite align with our needs. They introduced breaking features in new releases, making upgrades a huge hassle.
React, on the other hand, hasn’t changed much since it started, except for adding features like hooks. It’s kept backward compatibility, which is a huge plus. When we upgraded to React 18 last year, it only took us about 10% of the effort compared to upgrading Ember, even though our codebase had grown at least tenfold.
Many developers get caught up in the latest shiny things and miss out on the importance of longevity in a project. Open source can be a double-edged sword — packages often break backward compatibility when the base framework gets an update. Upgrading Storybook, for example, was a pain, and I really wish we hadn’t chosen it initially. It’s just not feasible to retroactively update usage patterns across hundreds of .stories files. Create React App (CRA) dropped support two years ago. Sure, there are alternatives, but in a large, fast-moving team, changing foundational structures is tough and often postponed. We’re still trying to replace Moment.js with Day.js because the regression risk is high when a package is deeply integrated into your app.
In our team, we keep our package dependencies to a bare minimum. When we need a left-pad function in our production apps, we code it internally instead of just googling and importing it without a second thought. We also use a simplified version of JavaScript, avoiding classes altogether. This way, developers don’t have to master half of TypeScript and React’s features. We also believe in avoiding unnecessary shared state and React’s Context API fits the bill perfectly. From our simplified codebase’s point of view, React got it right from the start, so it hasn’t had to change its APIs and usage patterns drastically. I’m really grateful for this.
Creating a new web application is easy. The real challenge is maintaining it for a decade or more, keeping it current and keeping developers engaged. Libraries that keep things simple and don’t break APIs or usage patterns during upgrade get my vote.