TL;DR
- GraphQL looks promising.
- REST APIs are still the standard by a large margin.
No surprises here, custom REST APIs are the default, even though it looks like Firebase has managed to carve out a nice little niche for itself.
All other options had minimal awareness, and even the much-hyped GraphQL seems to struggle to break through the noise, although it does have a fairly high 76% “want-to-learn” score.
It's fair to say this space suffers from a communication problem. While BaaS (back-end-as-a-service) offerings like Firebase or Parse are able to clearly articulate their value proposition (“we take care of the back-end so you don't have to”), these advantages are less clear when it comes to self-hosted options like GraphQL, Falcor, or Horizon.
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 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
REST API | 12 | 19 | 2 | 8 | 2 | 3 | 11 | 11 | 6 | 4 | 3 | 3 | 7 | 12 | 1 | 0 | 100 | 6 | -1 | -4 | 0 | 2 | -3 | 0 | -1 | 5 | 10 | 17 | 15 | 6 | 2 | 6 | 2 | 5 | 10 | 6 | 1 | 0 | 14 | 5 | 8 | 8 | 3 | 11 | 5 | 6 | 4 | 0 |
Firebase | 3 | 11 | 0 | 5 | 4 | 3 | 0 | 11 | 8 | 9 | 11 | 6 | 3 | 11 | 5 | 3 | 6 | 100 | 8 | 3 | 7 | 8 | 8 | 4 | 3 | 8 | 13 | 9 | 9 | 7 | 5 | 4 | 5 | 4 | 11 | 3 | 8 | 4 | 12 | 1 | 10 | 9 | 7 | 7 | 13 | 9 | 7 | 7 |
GraphQL | -3 | 11 | 2 | 2 | 7 | 9 | -2 | 17 | -4 | 2 | 2 | 1 | 1 | 17 | 10 | 45 | -1 | 8 | 100 | 42 | 15 | 12 | 9 | 7 | 5 | 9 | 2 | 13 | 5 | 17 | 15 | 6 | 10 | -3 | 1 | 0 | 12 | 12 | 14 | -2 | -2 | 2 | -5 | 5 | 20 | 3 | 3 | 4 |
Apollo | -4 | 5 | 3 | 2 | 2 | 1 | -2 | 9 | -3 | 2 | 0 | 1 | 0 | 9 | 9 | 15 | -4 | 3 | 42 | 100 | 15 | 12 | 14 | 10 | 7 | 5 | 1 | 5 | 0 | 8 | 7 | 4 | 9 | -2 | 0 | 2 | 6 | 9 | 6 | -3 | -3 | -1 | -3 | 1 | 12 | 2 | 0 | 5 |
Falcor | -1 | 2 | 3 | 3 | 2 | 6 | 0 | 5 | 2 | 5 | 5 | 3 | 3 | 6 | 6 | 12 | 0 | 7 | 15 | 15 | 100 | 17 | 3 | 10 | 14 | 5 | 2 | 5 | 4 | 6 | 8 | 9 | 8 | -1 | 2 | 1 | 5 | 7 | 5 | -1 | 2 | 3 | -1 | 2 | 8 | 2 | 2 | 4 |
Horizon | 0 | 4 | 2 | 3 | 3 | 3 | -3 | 4 | 1 | 4 | 2 | 5 | -1 | 5 | 6 | 8 | 2 | 8 | 12 | 12 | 17 | 100 | 4 | 14 | 10 | 3 | 1 | 3 | 1 | 5 | 5 | 3 | 6 | 1 | 0 | 0 | 4 | 5 | 4 | -3 | -1 | 1 | -1 | 3 | 9 | 5 | 4 | 7 |
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.
Apart from GraphQL showing strong correlation with its two main wrapping libraries, Relay and Apollo, it's hard to derive any meaningful conclusions from the data.
The one thing that stands out is that all API layer technologies seem clustered together, which would indicate that at this stage they're still mostly used by a population of early adopters who frequently try out new libraries.
JSON API was frequently mentioned, but it's a little different from the rest (no pun intended) in that it's a specification and not a library.
Meteor was another popular choice, and the fact that it enjoys such popularity as a self-hosted back-end explains why the Meteor team recently decided to refocus their effort on the API layer with Apollo, the afore-mentioned GraphQL solution.
The rest of the ecosystem is very fragmented, and the reponses also show how large the “API layer” umbrella really is, with answers ranging from full-on server-side frameworks like Rails, to back-end-only libraries like Deployd.
With a fairly low average happiness score of 3.4, the API Layers section confirms the trend: the more fragmented the domain, the less happy overall the users are.
These days, people are putting a lot of hope in GraphQL, but it remains to be seen if it'll end up being the answer everybody has been waiting for, or just one more option to add to the pile.