One of the things we strive to do here at Tidelift is help people make informed decisions about which packages will work best for their projects. Today I want to cover two mega-popular frameworks, Vue and React, and share what I believe the fundamental differences are.
Let’s get something straight right off the bat: both the Vue and React frameworks are excellent, and you’d be making the right choice using either of them. Both communities are fantastic, both projects are widely used, and there’s lots of support around both Vue and React.
I won’t really discuss too much around the technical specifics of either framework, since that discussion misses the bigger picture of the main differences.
React is for the scrupulous
Vue and React have audiences that are fairly distinct. A lot of React development is done by full-time Facebook engineers, with additional help from volunteers. Of course, there’s also the full set of necessary ecosystem packages maintained by the greater community. React was originally developed in 2011 as a high-performance framework used by Facebook engineers to power Facebook’s messenger.com.
They found it to be incredibly effective, so in a gesture of good faith, Facebook blessed the open source community with React in 2013 (and we shall be forever grateful 🙏🏽). Clearly, there are now far more consumers of React than just Facebook engineers, but we cannot forget that they were the original audience, and it shows in the sheer amount of knowledge needed to be productive.
Let’s not kid ourselves—there’s a fairly high bar to become an engineer at Facebook, and those technical interviews are no joke. React is a pretty technical framework. To realize its full strength, you must be acutely aware of the JavaScript runtime and how doing slightly different things within your components can yield vastly different results, often at huge performance costs. The classic example is writing an arrow function in a component’s render method.
I don’t think stuff like that is very obvious. Once someone tells you, sure, you’ll remember, but otherwise you might have to bang your head against a wall for awhile before you figure it out. Don’t get me wrong—I think that absolutely anyone can master React, but it’s a question of whether or not they actually care to become deeply intimate with JavaScript. I’m not so certain that most engineers do, really, but many Facebook engineers (and maybe you too!) are down with the cause.
Vue is for the pragmatic
Vue, on the other hand, is developed entirely by a team of volunteers for the general community at large.
Debuting in 2014, Vue had one mission—be only the good parts of AngularJS. I think that was largely successful, but what really came of that was a great developer experience. Writing Vue is just plain easy. I’d almost call it boring. But that’s a great thing! You can get in, do what you need to do, and get out. You’re not really worried about performance or optimization since most of that is taken care of for you by Vue, and it’s still pretty darn fast!
With Vue, you’re not (in general) getting as much fine-grained control over your component as you would with React. But if you really want to, Vue will let you implement your own render functions.
Since its very beginnings, the Vue community has focused on honing that developer experience. Even for an inexperienced developer, it's dead simple to hit the ground running with effective contributions on Vue projects.
While that’s partially due to the framework itself, we’ve really got to give a shoutout to the documentation. Vue has some of the most stellar documentation that I’ve ever seen for an open source project. The documentation is incredibly well maintained, and any beginner could get a majority of the knowledge that they’d need to be effective just from the Vue website.
By comparison, the React website is pretty straightforward about its docs. The docs homepage explains that the documentation might be a little too technical and fast-paced, and it includes a link to a much more beginner-friendly tutorial off-site.
The bottom line
It all boils down to how much dedication you’re willing to have when working with one of these frameworks. Vue is easier than React, both to learn and to write, but React will let you squeeze every extra ounce of performance out of your app. With a team of dedicated developers, React will deliver that blazing fast UI that’s sure to delight your users, but developers new to frontend will become effective much more quickly if they’re diving into a Vue codebase.
Which framework is right for you and your team?