ReactJS: To Use, or Not to Use
When does it not make sense?
If it ain’t broke, don’t fix it.
Sometimes it makes sense to perform a rewrite to switch technologies but it’s very rare that a rewrite will end well. If what you have is working for you, best to make small changes than undertaking a rewrite only to switch technologies.
If you’re building an app that doesn’t allow for a great deal of user activity (ie, if you just have a couple of buttons or forms, and maybe an animation or two), React is going to be overkill. It was built for use in apps that require lots of activity and where data (and application state) is expected to change over time.
In other words, don’t go with React to build your blog. But you may very well choose to use it to build the admin interface for the backend of a custom CMS. Of course, there things like Gatsby which look fun! :)
If you want a full-featured framework with lower decision overhead then great frameworks like Angular or Ember might be a better choice. With React, you will need other libraries to build out a full application.
When does it make sense?
If you have an existing application that you want to update to have richer interactivity, it is fairly easy to migrate a bit of it at time with React which is difficult to do with full-featured frameworks.
Comfortable with Functional Design
You have had enough of jQuery Hell
If you have been burned by difficult UI bugs, or have been hindered in developing complex UI components due to the limitations of imperative programming, then you’ll absolutely love React.
You want more developer productivity
If you value readability, testability, and developer experience (there are some great tools for developing in the React ecosystem like hot reloading, time-travel debugging, and snapshot testing) then React is going to impress.
You care about performance and SEO
React is isomorphic, meaning it can render initial state on the server instead of having the browser load it. This can make a big difference on that initial sense of performance (no waiting for your app to load). This can also help with SEO.