I've moved about 4 years ago from Angular to React and never looked back. React is so much more performant with the shadow DOM, and allows building component-based apps that are modular and easy to maintain. When they first introduced Hooks, at first I was reluctant since it seemed like a regression from OOP to functional programming, but I decided to take the leap, and actually found Hook-based apps to be more predictable and easier to maintain. Haven't started speaking about the ecosystem - thousands of libraries allowing you to easily do just about anything in React. React is definitely my weapon of choice when it comes to frontend development.
Your developer will thank you. It takes your UI web development to a whole new level. React helps you build maintainable projects which feel intuitive. Developers can share code more easily, take advantage of the massive catalog of react libraries (from things as complex as tables to as simple as a modal). I've been using it for around 7 years so not far from the beginning. In that time my favour towards it has never wavered. It brought components to the web and gives you the flexibility to pick and choose the parts that matter to you instead of being forced to take what you get with the framework like angular. I hope this review finds you well and you consider at least trying it. There are plenty of up to date resources about learning react. Make sure that it is a recent tutorial since as with a lot of the web, in that many years, a lot of the tutorials might be using old or even worse deprecated apis. React is coming for you, after having developed on the web, I then also went on to build a react-native application which was a great experience in terms of knowing how to build it (for the most part), the hard part was what to do with the built application. Then I've used React to build chrome extensions. It's a great framework to know which really has built my confidence as a developer. VR development, here I come !
React is a solid choice for any size of project or company. It’s very stable, flexible, and most importantly has the best tooling, IDE, and library support out of any modern frontend framework. I’ve personally used it pretty much since it came out, back when one would still have to manually configure babel to transpile the JSX. I still prefer it for any purpose due to its great tooling support and due to JSX being the standard by now that’s supported by everyone. I think the basic architecture of react as well as the flux pattern are well thought-through and offer a solid foundation to build upon. It’s especially great for companies as the job market for react developers is one of the largest and hiring experienced people (given adequate salary) should not be an issue. Most experienced frontend developers have already worked with react and it should be easy to get them familiar with react codebases. Personally, I think this is a great reason to choose a framework, as I’ve worked with companies that unfortunately picked lesser-known (and IMO objectively worse) frameworks like vue. That leads to them either having to hire non-vue developers or not being able to find anyone who fits the position well. In fact, most of the best developers they managed to hire were react users that just used their knowledge to work with vue. However, it’s often worse to find someone who’s good at something just to have to teach them something else, so react has a big advantage here. Tooling like eslint, typescript, sass, etc. is easily integrated and react as well as JSX/TSX templates are natively supported by all major tools. This is a big contrast to other frameworks I used like vue, which are struggling on this aspect due to their non-standard file types (vue single-file-components) and custom template syntax. I’ve personally struggled for days upon days with solving basic issues like building vue libraries with composition API, linting vue files, dead code elimination, compiling JSX-in-vue, integrating typescript, etc. that would’ve been trivial to do in react. React thankfully has none of these issues as the proper tooling already exists and is well documented. The biggest issue with react is also it’s biggest strength. You can use it with pretty much any patterns or library you’d like. This means that it’s incredibly flexible, but also that it can be a bit of a hassle to pick the exactly right choice for your particular project. Personally, this has impacted me by having to pick (and explain to the team) between different store patterns, sub-frameworks, libraries, etc.. It also frequently happens that for some reason I had to end-up switching mid-development to a different pattern or library, because the one that was previously chosen had unfixable issues. This effort goes down dramatically over time though, and most teams will be okay with picking the most common choices (e.g. redux). All the react developer tools I used are great and a lot less buggy than the competition (looking at you, vue dev tools). All in all, it’s a solid choice for any project in need of a frontend framework. There’s even full-stack frameworks like blitz.js available for small to medium-size or MVP-style projects.
One of the most powerful and flexible front-end libraries out there. I tend to compare React to bricks in real life. Just like civil engineers use bricks to construct any range of strong structures ranging from humble walls and pavements to massive buildings for commercial and residential purposes, in the hands of web developers React provides the essential building blocks to build any range of applications from simple personal websites to large scale highly complicated enterprise grade web solutions. Having used React over the years, there's very little that I can complain about React. The only con that I feel about React is the steep initial learning curve involved and the amount of time and effort it takes to build applications from scratch in React. These cons however, barely matter nowadays due to the availability of a plethora of awesome React based frameworks to easily bootstrap new applications from scratch.
Truly an antique in the era of Custom Elements and Shadow DOM both being built into every browser out there except IE11 (which I don't care a bit about). It's emulating things that don't need to be emulated because they can be done faster and better by the browser. The only advantage it has over newer component solutions (for example, LitElement) is that it more easily accommodates SSR. But if you're not going to use that, avoid this. Pick LitElement, Svelte, Vue, etc. instead.