A library that's hard to miss for any UI developer
March 03, 2018

A library that's hard to miss for any UI developer

Anudeep Palanki | TrustRadius Reviewer
Score 10 out of 10
Vetted Review
Verified User

Overall Satisfaction with React

React is one of the more popular frameworks being used across our organization for developing web interfaces. React is a library that allows for efficient compartmentalization of the code that allows managing code bases on large user interfaces a breeze. It also does several optimizations on the expensive re-rendering process to make the the user interfaces with large data responsive.
  • Solid backing by large organization (Facebook) thats committed to keeping the development on the project. In my mind, this is the number one priority for any library because without this: time is wasted on getting up-to speed on a library that you will never use, have a codebase with a library thats hard to maintain because few years down the lane, hiring devs to maintain an unsupported library is very difficult.
  • As with any libraries, open source community's support is critical for success of any framework because this allows for more pre-built components that could be used right out-of-box => makes Development using React a breeze.
  • React's Stateful and Stateless components make organizing your code a breeze. These components would also allow for writing clean Unit Tests on the logic.
  • React's component lifecycle. It offers a variety of lifecycle methods, that allows for handling different scenarios of loading and manipulating data in the UI.
  • I found React's documentation very well maintained with plenty of examples explaining each feature.
  • Responsiveness is a very important criteria in selecting a UI and React is very responsive. It does some neat optimizations on re-rendering using virtual DOM and would only re-render parts of the DOM that changed. These optimizations makes React Applications feel really fast.
  • React Native would allow for building applications that span across web and mobile interfaces (iOS and Android). This makes learning React even more enticing, because using a single library, you could build applications that span across Web, iOS and Android.
  • create-react-app is an effort by Facebook (creators of React) that makes getting started with React really easy. It does all the heavy lifting of configurations for you and allow you to focus on just development.
  • Small footprint, minified React + React DOM is under 150Kb, that makes loading UI's with react really fast.
  • React + Enzyme (backed by Airbnb) + Sinon + Mocha + Chai makes unit testing the UI components fun and improves the overall maintainability of the project.
  • React could get very frustrating unless you start thinking in React. React enforces a top down hierarchy of data flow and offers no way for the data to communicate backwards. This is a big shift in mindset coming from Angular 1.x. This constraint is really a big factor that determines how to organize your code and how you might want to write your own Components.
  • Because of the self imposed top down hierarchy, you end up having a heavy parents with dumb children. Because parents would need to the bulk of the work, they usually manage the state, while passing callbacks to the child components. If not properly designed, this could lead to the callback hell, where you could have callbacks passing through like multiple children.
  • As with any library, you will have to iterate through multiple designs to come up with a ways to avoid "heavy parent components" in React. One obvious solution is using some open source tools like Redux, but we opted for a variation of it to suit our needs.
  • Well tested smaller components means faster iterations with improved code quality
  • Because of open source support, React often has components pre-built in open source projects. This allows for faster development process because you don't have to start from scratch to build a Select Component on your UI, you could simply use one of the pre-existing libraries.
  • Wide popularity => cheap maintaince => longer life span for the project.
  • Angular and Vue
While this is a widely contested debate with various blog posts and benchmarks all over the place, its really a personal choice to determine what works for the team. Coming from a Angular 1.x background, I decided to try a new framework when Angular 2.x was announced and at that time React is gaining popularity and Vue hasn't taken off yet. Compared to Angular 1.x and Vue (hybrid of React and Angular) that split the logic from the html templates, I loved the way React breaks code into components using the jsx syntax. In my mind, this allows for cleaner components and easier maintenance.
Well suited for:
- Building performance intensive web interfaces.
- Making responsive user interfaces that deal with large data.
- Asynchronously retrieving data and partial DOM updates.
- Clean organized code.
- Building interfaces in multiple platforms (thanks to React Native)

Its less suited if:
- You are unwilling to think in React.