TL;DR
- You can't go wrong with React.
- Vue is the new up-and-comer.
- Angular 2 > Angular.
The battle for JavaScript mindshare is often led by front-end frameworks, and this comes through in the survey results: apart from relative newcomer Vue, every option here stands at over 97% awareness.
While awareness is pretty much a draw, things start getting interesting when you look at interest. Angular 2 is still brand new, so in absolute numbers it leads the pack when it comes to technologies people are interested in learning.
But if you look at percentages, it turns out the uncontested leader is instead React. What's more surprising is Vue's performance, coming second by both measures.
Looking at satisfaction might explain why: while React dominates the ranking at a 92% "would use again" rating, Vue is right on its heels at 89%. With such a high developer satisfaction rating, it's no surprise if Vue is generating more and more momentum (accumulating around 90 GitHub stars per day according to bestof.js).
I think it's fair to say that React and Vue are in a class of their own here, with Angular 2 being somewhat of an unknown, and Angular, Ember, and Backbone trailing behind.
Plain JavaScript | ES6 | CoffeeScript | TypeScript | Elm | ClojureScript | No Framework | React | Angular | Angular 2 | Ember | Vue | Backbone | Redux | MobX | Relay | REST API | Firebase | GraphQL | Apollo | Falcor | Horizon | Meteor | FeathersJS | DoneJS | MERN | MEAN | Mocha | Jasmine | Enzyme | Jest | Cucumber | Ava | Plain CSS | SASS/SCSS | LESS | CSS Modules | Aphrodite | Webpack | Grunt | Gulp | Browserify | Bower | Native Apps | React Native | Cordova | PhoneGap | NativeScript | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
No Framework | 22 | -1 | 0 | -5 | -1 | -2 | 100 | -5 | -6 | -5 | 0 | 2 | 9 | -8 | -3 | -2 | 11 | 0 | -2 | -2 | 0 | -3 | -4 | -1 | 1 | 1 | -1 | -3 | -2 | -6 | -2 | -3 | 0 | 18 | 2 | -1 | -2 | -2 | -6 | 7 | 4 | 6 | 0 | 4 | -4 | 2 | 4 | 0 |
React | -1 | 42 | 1 | -3 | 10 | 10 | -5 | 100 | -16 | -5 | 2 | -2 | 2 | 62 | 14 | 11 | 11 | 11 | 17 | 9 | 5 | 4 | 8 | 4 | 1 | 19 | -1 | 32 | 12 | 33 | 19 | 6 | 13 | -3 | 10 | 1 | 19 | 9 | 54 | -9 | 2 | 14 | -17 | 4 | 33 | -7 | -7 | -1 |
Angular | 4 | -5 | 1 | 20 | -6 | -4 | -6 | -16 | 100 | 36 | -2 | -5 | -2 | -14 | -4 | -2 | 6 | 8 | -4 | -3 | 2 | 1 | 1 | -1 | 1 | -1 | 36 | -1 | 18 | -11 | -5 | 2 | -5 | 2 | 9 | 12 | -4 | -2 | -9 | 17 | 20 | 3 | 25 | 2 | -7 | 17 | 14 | 6 |
Angular 2 | 0 | 8 | 0 | 48 | -2 | 0 | -5 | -5 | 36 | 100 | 1 | -2 | 0 | -2 | 0 | 2 | 4 | 9 | 2 | 2 | 5 | 4 | 4 | 2 | 2 | 1 | 22 | 2 | 15 | -6 | -1 | 1 | -1 | 0 | 7 | 7 | 2 | 1 | 3 | 6 | 13 | 3 | 9 | 5 | 0 | 13 | 10 | 15 |
Ember | 2 | 9 | 5 | -2 | 2 | 5 | 0 | 2 | -2 | 1 | 100 | 4 | 9 | 1 | 2 | 3 | 3 | 11 | 2 | 0 | 5 | 2 | 5 | 3 | 8 | 0 | 1 | 8 | 5 | 1 | 4 | 9 | 1 | 1 | 9 | 3 | 4 | 2 | 1 | 6 | 4 | 8 | 10 | 5 | 4 | 2 | 2 | 1 |
Vue | 2 | 7 | 3 | -1 | 2 | 1 | 2 | -2 | -5 | -2 | 4 | 100 | 1 | -1 | 4 | 1 | 3 | 6 | 1 | 1 | 3 | 5 | 5 | 7 | 8 | 2 | 0 | -1 | -3 | -3 | 0 | -1 | 2 | -1 | 6 | 1 | 2 | 2 | 8 | -4 | 8 | 9 | 1 | 2 | 1 | 2 | 2 | 1 |
Backbone | 8 | 2 | 5 | -4 | -2 | 1 | 9 | 2 | -2 | 0 | 9 | 1 | 100 | -2 | -2 | 0 | 7 | 3 | 1 | 0 | 3 | -1 | 1 | 1 | 4 | 1 | 5 | 9 | 10 | -1 | 1 | 7 | 0 | 4 | 5 | 8 | 1 | -1 | 2 | 13 | 7 | 10 | 5 | 4 | -1 | 4 | 6 | 2 |
Note: “user” defined as people who picked “I've used it before, and would use it again”. Phi coefficient values go from -100 to +100, darker red indicates stronger positive correlation, darker blue indicates stronger negative correlation.
Looking at the heatmap, the thing that stands out right away is how the React row just lights up compared to the other front-end frameworks. In other words, React users are more likely than average to have experimented with multiple other technologies.
This is especially true for Redux, Enzyme, and React Native. This is not really surprising since these are all made to work together, but it's still interesting to see patterns emerge.
And interestingly enough, while as expected Angular users tend to not want to use React, it turns out Angular 2 users have a much more favorable view of their main competitor!
I wasn't very familiar with Aurelia before the survey but I sure am now, since it lead the "other" responses by a mile. This of course doesn't tell us how happy people are with the framework, but I think it's safe to say that if that many people wrote it in, Aurelia must be doing something right.
Coming in second is Meteor and its own front-end framework, Blaze. Meteor is already featured in the full-stack section, which is why it wasn't included in the default options.
The rest of the results can roughly be split in two very different categories: legacy frameworks like Knockout, jQuery, or Dojo; and newer, cutting-edge libraries like Cycle, Polymer, or Mithril.
If nothing else, this list illustrates just how diverse the JavaScript front-end ecosystem truly is. Which makes sense: before Node came around, the front-end was the original JavaScript battleground.
For all the complaining about JavaScript Fatigue, it seems developers are pretty happy overall with their front-end framework of choice.
With a fairly high 3.78 average happiness rating, front-end frameworks give us some hope that maybe the JavaScript ecosystem is going in the right direction after all.