For the past 4 years I've been heavily involved with using ReactJS on a daily basis. As a coding instructor for a very popular coding bootcamp, I spent hours reviewing the most basic elements of the popular framework with all of my students. And for the past few months I've been busy building a new up and coming startup using React as the framework of choice. And that means having to write business logic heavy code and implementing complex designs from the ground up.
So I have personally gotten to see both the simpler fundamental elements of React, where I go over basic state management and hooks, and the more realistic real-world application of it where I'm interacting with multiple databases and multiple API's over a client/server architecture. And after 4 long years, I have mixed feelings about the whole thing.
Let's get into why. Because I'm not going to stop using React anytime soon. But I might have to think twice about starting a new project with it in the future. Let's start with the biggest issue.
And that's the fact that from version to version, there are big changes to the framework. Just a few years ago I spent a fair amount of time teaching my students why class components were the way to go, even though the class-based syntax I felt was a bit hard for beginner's to nail down, particularly if they've never had any experience with any kind of OOP language in the past.
But not long after that fact, I had to switch things over and start to teach my students that functional components were the way to go. That class components were becoming outdated and that functional components would make development in React much simpler. Which it technically does.
I'm not against either train of thought. If you like the benefits that come with class-based programming, at the cost of a more complicated syntax, then so be it. And if you're big on functional programming where pretty much everything and anything is a function then that's great too.
But my biggest issue is with the fact that one of these 2 paradigms was being marketed as "better" than the other, and that whoever is still using the old style should upgrade their skills and come into the modern age.
I'll say this now, every programming language does this to some extent. If you're still programming in Classic ASP instead of using the latest .NET Framework, then odds are you are writing some outdated and relatively unsecured code. But that particular transition took years to complete. With React, I feel like these large updates are far too frequent.
And often times I do encounter article after article claiming that certain React hooks are on their way out the door and to prepare for a new wave of hooks. And that's a problem. Because if that were to happen, that essentially means that the previous code that you wrote will no longer be supported and will require some form of a rewrite, which can be expensive and time consuming.
Aside from that though, React has maintained its consistency for a few years now and I have not had to make any large pivots in the way that I write code. And I hope it stays that way for some time.
React in general is also relatively easy to pick up, and that's mainly because it is based around JavaScript. And JavaScript has been a popular programming language for younger developers for some time now, as it the syntax is C-based and it avoids strong-typing and can essentially run on any machine with a web browser.
And that means that hiring a React developer is much easier than, say, hiring a Perl developer. I've personally hired several junior React developers for my company and they've been able to learn, adapt and execute efficiently in a short amount of time. In the past, I've also had to hire developers in languages such as C# and frameworks such as ASP.NET and finding a candidate in that realm tended to be a more time consuming activity.
React for the most part is also a relatively fast framework as well. I say relatively because there are other JavaScript frameworks that make performance their priority (in lieu of features) and it can be argued as to just how much of a performance gain you are actually getting using any of them.
But when compared to a larger and more complex framework, such as the .NET Framework, you will see some gains in performance in terms of rendering speeds and build times.
Aside from that, React has been able to keep up with other frameworks that I've used in the past. At the end of the day, a framework is just what its name implies. It's the underlying foundation of a project, but you will have rely on your own code for the actual business logic.
Or you can leverage already built modules that have been tested by a strong community of developers. Which brings me to my next point.
The biggest benefit that I've seen so far in my React development is definitely being able to leverage NPM. Other frameworks have package managers as well, such as .NET and Nuget. But I've yet to find one that is as robust and comprehensive as NPM.
Though NPM has faced its share of issues and controversy over the past few years, it is still one of the best tools that a developer can have in their toolbox.
So after 4 years of use, how do I feel about the React framework overall?
I think it's great. It is not the most amazing framework that I have ever used ever in my life. That award (for me) still goes to the .NET Framework. But it has been able to keep up with my demands.
I'm still nervous about its volatility though and worry that in a future version (soon) things that I rely on heavily will be deprecated. As a CTO of a company, who is in charge of development time and task management, having to lose code at some point in the future due to framework updates and deprecation, is a cost that I have to account for.
But I am enjoying the overall speed in performance and in development, as build times are kept relatively short and seeing my changes almost in real-time is a much needed change from the traditional "update" -> "compile" -> "wait" methodology.
It has also been a big plus to see my development team take to the framework in less than a year's time and be able to build out complex features onto a production website with little to no trouble.
So for now, as mentioned, we will continue to use it and to learn it better and better by the day. At least until a fancy new framework makes its appearance and becomes the new talk of the town.