This is why react js is the recommended framework for developing client side web parts: Spfx SharePoint
The world is moving more and more towards client side development. No matter how good the back end architecture is, what the user gets to see is user interface. If the user doesn't feels a smooth and lag free experience, user would certainly complain.
With these advancements in technologies, SharePoint has decided to focus more towards improving the user experience with the product. So this opens a world of endless possibilities for developers working with SharePoint. This means Microsoft SharePoint now has full support for open source tool chain.
This implies the single page application concept for designing responsive user interfaces. We don't have to create applications which are loaded in iframes, raising concerns about browser no-scripts. Thus forcing the users to allow loading of unsafe scripts. Also these applications take too long to authenticate users, as they get hosted outside SharePoint.
That means the way to future are client side web parts. Why?
1. They get loaded directly into the SharePoint DOM.
2. They have real web part properties ( imagine your user resizing, toggling, updating content present on webpart)
3. A developer is free to use any JavaScript framework for development. (Imagine using your front-end developers and SharePoint developers in a combination).
If you are curious to get started with spfx web parts, start here: Getting started with SharePoint framework
However for this blog the scope of discussion is, if we have so many powerful JavaScript frameworks available why to go with react js for developing these client side web parts?
Let's have a look at how these JavaScript frameworks stack up against each other around the world :
Ever used Facebook? Of course yes!
Now let's see how modern SharePoint smartly mimics Facebook's user experience :
Replying to your friend's comments? Ever wondered how fast it is. Does it performs any page reload to do this?
Now lets feel a similar user experience with modern SharePoint's list:
Noticed how we are able to create columns/ add list items in a SharePoint list without experiencing page reloads?
This is all because in react js we break our application into components. And for each component the application maintains internal state. This is similar to a chess game. Where we resume back to previous moves on the chessboard. As web parts are components, react would be the recommended approach for the designing decoupled components. Although it depends on your knowledge of the JavaScript framework, because learning a new language requires investment of time. That said learning react has served the purpose for us until now.
Don't you wonder why Angular decided to follow the component approach. This made future versions of angular around 5 times faster. Also react js builds its own virtual DOM. So that directly DOM manipulations are avoided.
To make easier getting started, SharePoint framework provides us with a rich library of reusable react components. Known as : Office UI fabric components
All said, after considering various JavaScript frameworks, we decided to go with React js, as it was best suited for us. Although we leave on you, to decide about the JavaScript framework of your choice.