I love React. I enjoy building components and views and all sorts of stuff with it, but as much as I do, and after a couple of years using it for almost all of the professional projects I've worked on, I would not recommend it to someone who's just starting to explore the massive world of web development.
Here are a few reasons why I wouldn't...
The broken learning curve:
I had a pretty unconventional way of getting into web development as a career; I studied Electrical Engineering in college, in which I learned C and C++ and a bunch of other Electronics related things (including Assembly, which I remember nothing about because of how short and random the course was), but right after college, I naturally had to look for a job, and I wasn't exactly in a situation where I can't pick and choose, so as soon as I got the first opportunity to work as a developer, I decided to just "go with the flow" and I took it.
React was a ton of fun to learn and work with, especially since all I had to do was "Build these cards" or "Make the navigation bar look like this", and for the most part, I liked what I was doing, mainly because a lot of it was available online.
I didn't have to think, I could just google things, copy a component, and tweak the styling. And the most logic I had to write most of the time was a
It was a little too convenient for someone in my position, who didn't have to do anything outside of that.
After a few months of doing just that (as well as switching between different packages the app uses like 300 times), it started to become boring and very repetitive. I also didn't have that much guidance to begin with, so my "learning" skills weren't that great either, and looking back at it, it felt like I was just flopping around trying to miraculously become great at something I still had very little knowledge about.
The more I built another component, the more I felt like I was stagnating in a place I didn't want to be in. And before I knew it, I started disliking what I was doing, and I had no clue how to get out of the rut I was in.
To add insult to the injury, due to covid affecting everything on the planet, the startup tanked and died within 10 months of me being there (We hadn't worked at all for the last 2 months, but I won't go in detail about that).
The takeaway from this part is that I felt like, as a beginner, I was given too much convenience and very little room to think for myself and try to break things and learn. And I'm not trying to bash React or anything, but it's clearly not made for someone who's trying to learn (which is the case for every junior developer, ever), it's made for convenience, and to "build pretty things quickly", regardless of how underperformant or bloated your app is, or at least it was, because it has changed a lot over the years...
The (a little too often) ever changing ecosystem:
I'll just say this plain and simple, I'm surprised React made it this far as a "framework", considering how resource heavy it's been and how slow the tooling was before (like an app I had worked on a couple of years ago, made with
create-react-app, taking 5 minutes to start a development server in my old PC. Fun times!)
Someone might say "oh but it's much better now, so that's good", but, uh... well, that's not the point! If you put a bunch of skilled developers and maintainers in charge of the trashiest framework of all time, I'm sure they'll improve it a lot in a few years time.
That's beside the point though.
The reason I personally think React is (still) not a good option for a beginner, is the fact that it (still) hasn't made up it's mind on what's good and what's "not actually as good as we said it was". What's considered a best practice changes all the time, and what tools are recommended for the fastest or most performant app are an endless topic of discussion, so for someone in a beginner position (or still just learning) it would be very confusing to go through all that and get practically nowhere; pair that with the fact that tons of code from older versions of React is all over the internet (and fed to tools like ChatGPT), if someone's learning how to build some logic in React, they could very much be using something that's now considered a bad practice.
The right tool for the job:
I wanna conclude this article by saying that, although I wouldn't recommend React for a beginner, it would still be something to take a look at at some point, and test it for what it actually is, not for what they've heard about it. Don't learn it as THE tool to build anything with. A lot of other tools may be way better suited for whatever you're trying to build, as much as React has it's benefits in a bunch of use cases.