Recs.
Updated
SpecsUpdate
Pros
Pro Good debugging tools
React has an official Chrome Extension which is used as a developing and debugging tool. It can be used to quickly and painlessly debug your application or view the whole application structure as it's rendered.
Pro Easily scalable
Entire instagram.com is built in reactJS. It is backed by developers at Facebook and has a large community base.
It works with the components and has many already built helper libraries in NPM which you can use by importing them in different parts of your code.
Also,
- new Skype for android is built using React Native.
Pro Out of the box support for Android and iOS with React native
ReactJS follow "learn once write anywhere" concept. IE after learning ReactJS, you will be able to built web app (ReactJS), server side (with nodeJS and ReactJS virtual DOM), android app (React Native), and iOs (React Native) app with ease.
Cons
Con Large file size
React's react.min.js
is 145.5KB in size. It's much larger than some other libraries that offer roughly the same features and it's almost the same size as some MV* frameworks such as Angular or Ember that offer more features out of the box.
Although, it should be mentioned that sometimes having a smaller library may force developers to reinvent the wheel and write inefficient implementations on features that React already has. Ending up with a larger application that's harder to maintain and/or that has bad performance.
Con You have to learn a new syntax
Requires to learn a custom syntax, JSX that has some gotchas and introduce complexity, a steeper learning curve, and incompatibility with other tools.
Though you can opt out from JSX and use vanilla JS instead. But that is not recommended since it adds a lot of unneeded complexity which JSX tries to avoid.
Con Not a complete solution
React does not do everything for the developer, it's merely a tool for building the UI of a web app. It does not have support for routing or models, at least not out of the box. While some missing features can be added through libraries, to start using React and use it in production, you still would need to have experience, or at least a good grasp on what the best libraries to use would be.