React: My first reflex when HTML isn't enough
December 22, 2018

React: My first reflex when HTML isn't enough

Erik Ralston | TrustRadius Reviewer
Score 10 out of 10
Vetted Review
Verified User

Overall Satisfaction with React

React, and its ecosystem of thirty-party modules, is the primary front-end library for our products at LiveTiles. It provides a dynamic HTML templating system, plus event and state-handling for our applications. This provides better reusability of code by making interfaces as modular components, plus provides an easy onboarding path for new front-end developers.
  • Intuitive templating language (JSX) that provides a dynamic rendering of HTML elements, along with an easy model to tie back to JavaScript implemented in your components.
  • Component-based views that guide the developer to modular and reusable pieces to your interface.
  • Streamlined state management with immutable properties and mutable state within each component with one-day data-binding to tie them to the view
  • When you hear someone say "React is a LIBRARY, not a FRAMEWORK", they're right. It's only the View layer of the application and nothing else. Some developers get this wrong, put too much application logic into their React components, then end up with no separation of concerns.
  • It's so easy to get started that it's hard to realize when you're doing it wrong. Developers who are early into React can come up with issues like nesting the Props and State of their components wrong, leading to issues like re-rendering all of a list of items rather than just one item.
  • It's so ubiquitous that there are certain developers I've met who have never done direct DOM manipulation. While it's easy to make something in React in most cases, developers need to make sure they know how to use the Js API as well as the convenient library.
  • React sped up the time to implement new features, providing much better code-reuse across the team
  • React's excellent performance made it so new components ran faster in the browser
  • Since React is so popular, it's been easy to recruit new developers to the team who already have a familiarity with the library
Like most people, I started in serious client-side web development with the introduction of jQuery, the first robust library for cross-browser DOM manipulation. React provides a much closer WYSIWYG translation from the declarative JSX template to HTML elements compared to using procedural programming to do the same task. While it lacks the built-in capabilities like animation, it does have excellent third-party plugins for it - and most things can be accomplished via CSS nowadays.

React is one of many advanced client-side frameworks that are currently dominating front-end development. Angular and Vue would be the other noteworthy competitors.

Angular is comparatively heavy, but provides more of a "full toolbox" than React; however, its version changes and opinionated approach means it's a challenge to just bolt on to the project even if it likely would deliver some line-of-business (LOB) type solutions more rapidly.

Vue is React's real competition. It provides a loosely coupled set of libraries, a somewhat cleared format of separate component code, and support onboarding into a code base. Its community and developer familiarity are not as mature as React, so you'll have a harder time finding a Vue dev. Finally, Vue is independent (whereas React is supported by Facebook) -- that may influence some people.
In a so-called "Single Page Application (SPA)" or "Progressive Web Application (PWA)," or any app where there's user interaction without leaving the current page, React is excellent for providing a flexible presentation layer or view layer. While it doesn't provide a full data model, it does provide basic state management around components that integrates with virtually any other client-side framework. Also, with "React Native", the mobile implementation of the same library, one can write JSX and have it render components in a mobile app.

React is likely not a good fit for websites with a big emphasis on Search Engine Optimization (SEO). The requirement to render the UI with JavaScript means it's unlikely to be easily crawled by a search engine. This means it's unsuitable for applications like Marketing websites or blogs. Similarly, React doesn't work for situations where you can only use static HTML (EG, HTML e-mail).