React vs Vue — How to Choose!
Every generation has a major technology choice to make that will impact their products and companies for years to come. Java vs. .Net. MySql vs Postgres. Tabs vs Spaces. Angular vs just jumping off a cliff and letting the ocean take you. These are all hard choices with a lot of great pros and cons on every side (except the Angular one — cliff all the way).
Any major tech choice needs to weigh multiple factors, and I like to break them down along three general categories:
- The Tech — what’s it like to write code in on or the other ecosystem? What is the tooling like? The open source community? These are all important factors.
- The Non-tech — what are the non-technical factors to consider and weigh?
- The intangibles — what are the wild-card factors that might tip a decision one way or another?
Let’s dive in.
The Technical Factors
React is a little more mature. React has somewhat more community around it but there’s no shortage in Vue. React is backed by a megacorporation which is good and bad. Vue is backed by nobody which is good and bad.
What’s it like to write code? Let’s take a look at the most basic example from the React and Vue docs, respectively:
Off the bat, we’ve got some stylistic differences. Whereas you just mount the React component into a DOM node, it seems like you have to do a kind of two-way binding on the Vue end.
Either way, there’s a good chance one calls out to you more than another, and if you weren’t hurt by Angular in the past, one doesn’t immediately trigger you.
Maybe you can make a decision with this info alone. Maybe you need to spike up a few components and see what feels right. Or, maybe you’re still on the fence. If so, it’s time to consider the non-technical factors.
The Non-technical Factors
I have a brief checklist that I run through to test some assumptions and flag things that might be important to consider. Items include:
- What is the skill-level of the other people on the team?
- Does anyone already have experience with either technology?
- What else is being built in the company and how might this choice impact that?
- Is this framework long-lived enough to see my company into the future where there will potentially be no fish but whatever my startup is the “Uber” of will still be important?
- Will this be performant enough to continue to run on current hardware after we run out of Helium and can no longer etch new computer chips?
- Will this company be around long enough to require ever having to rewrite this in another language or framework? Will you be there long enough to have to deal with it?
- Developer productivity is important so is this framework agile enough to get a MVP of the product out before we run out of funding?
- Are there enough blog posts out there that I won’t have to post on StackOverflow under my alias that I use so nobody knows it’s me?
- Do I really want to put myself through all this mental anguish and stress over choosing between two things that I know for a fact can accomplish the job for a corporation that basically is trying to figure out a better way to monetize clicks and to whom I am just a cog (but like part of the cog FAMILY) and that probably tried to get me to take a reduced salary for stock options that will be as underwater as my coastal home in a few years?
These are just a sampling of the kinds of questions you can ask yourself around the non-technical, more big-picture things that might impact your decision.
If you still can’t decide, let’s look at some of the intangibles and see if we can’t put React or Vue over the finish line.
Once you’ve examined the technical context, and the non-technical context, it’s time to think about the intangible, but still extremely important things, such as:
- Which thing has more jobs?
- Which thing could I get more blog traffic or Twitter followers from talking about?
- Which thing has more celebrity programmers using it?
- Which thing did I point at after being blindfolded and spun around a bunch of times?