React and Angular are arguably the two most popular tools available for front-end development today, and while I do look forward to discussing Angular, I’m not-so-secretly excited to be starting with React. I work in it every day, and since it’s the only tool I use for my pet projects, it wouldn’t exactly be a stretch to say that it’s my favorite. However, before I go any further with my (slightly) biased opinions about it, the unbiased consultant in me must share this caveat: only when you consider your team, future goals, and project (in that order) will you know which tool is best for your organization. With that in mind, take a look at my favorite features of React.
Facilitates Component-Driven Architecture
The history of software has taught us that small, reusable chunks of code give us faster development, easier maintenance, and fewer bugs. The innovation of the frontend has brought the necessity to follow good design patterns and principles that we previously only saw on the backend. Components have become the vessel by which we can accomplish this on the frontend. We create, for example, a button component that looks and responds to user actions the way we want, and we use that component all throughout the codebase. This means we never have to think about how our button looks and responds ever again unless to make a purposeful change. When we do decide to change the look and feel of our buttons, we have one single component to update, and those changes are then reflected throughout the entire app.
React provides a fast and solid foundation from which to build our component-driven architecture. It offers few opinions about how it should be done, leaving those decisions up to your team, goals, and demands of the project.
React has one of the best ecosystems around, without question. I always take the ecosystem into account when I’m considering a technology. Technology with a vast and energetic ecosystem tends to have great momentum. With that momentum comes continued innovation and support. It also helps to ensure support is available if I ever hit some weird edge-case that greatly hinders my application in some way.
The React ecosystem plays a huge role in the success and growth of developers, too. Information on how to be a better React developer is plentiful. Discussion boards are thriving with best practices, new ideas, and better ways to make the best use of React. All of these things make it easy to adopt and learn React, priming your project for success.
Deliberate Decisions from the React Team
React is an open-source project, which means anyone can contribute to its core codebase, and therefore, directly affect the websites or web applications of millions of people worldwide. This is a tremendous responsibility and one that the React team takes very, very seriously. It is the primary reason I trust building applications on top of React. I know that the React team is going to be thorough and thoughtful in their decision-making process to ensure that they add value without introducing breaking changes and bugs. I’ve been burned by many other open-source projects who recklessly accept pull requests, make breaking changes, or just completely abandon the project altogether.
I’ve seen the React team take six months or more to thoroughly discuss and evaluate suggested features or changes to ensure that they’re making the best possible decision. No haste or fluff, just thoughtful, deliberate discussions to ensure the right decision is made. It’s a huge commitment when we choose to build our application on top of someone else’s work. We’re at their mercy, and breaking from them would likely require a full rewrite of the application. It gives me so much peace of mind and confidence every time I see how deliberate the React team is about introducing new features and/or changes.
Great Experience for Users and Developers
We all know user experience is important, and React gives us the foundation we need to facilitate a great interaction with our users. Pretty much every project these days talks about user experience during the planning phase, but I rarely hear the developer experience discussed.
A solid developer experience primes your project for success, increases velocity, and ensures consistent delivery of bug-free code that can respond to the business’s and users’ changing needs. React, and its ecosystem, certainly sets a great example and provides a solid foundation for a seamless developer experience. Ample documentation on how to easily set up supporting tools and best practices ensures your developers can work as efficiently as possible.
When I work in React, I know what I’m in for: a reliable tool that provides developers with a robust, dependable experience that still gives us the flexibility for customization. Curious about how React stacks up against the other Goliath in the application platform space? Check back in June to learn all about Angular.
About the Author: