by Sacha Greif

The State of JavaScript 2018

We surveyed over 20,000 JavaScript developers. Here’s what they told us.

5TqeXFGtpiqkdymYpTdPSxKILh7l6p6ibRa2

I’m writing these lines somewhere high above Russia because it turns out there’s people willing to fly me halfway across the world for a conference just so they can hear me talk about JavaScript trends.

If you ask me, that’s a pretty good measure of how popular the State of JavaScript survey has become, and by extension how fast the JavaScript ecosystem keeps growing.

This year again, we surveyed over 20,000 JavaScript developers to figure out what they’re using, what they’re happy with, and what they want to learn. And the result is a unique collection of stats and insights that will hopefully help you make your own way through the JavaScript ecosystem.

? Check out the results

…or read on to learn more about the project.

What’s New This Year

Dark Mode

KZ5MsA5bpeOgvH74t379z54LhDWlECvAocNo

If you’ve seen the survey before, the first thing you’ll notice is probably the new, darker color scheme. We think it switches things up a bit, makes the charts pop more, and just looks pretty cool!

Individual Pages

In addition to grouping libraries in broad sections like front-end, back-end, and so on, we also decided to give each library its very own page. This makes it easier to ignore data that’s not relevant to you, while drilling deeper into tools that you do use.

Historical Data

yOfFRfCBNgdmXmJrFmjx9lPqSQg9M2y7dvsX

Because this is the third edition of the survey, we’re now able to show you historical data over the past two years! This is super helpful to see longer-term trends, and not just a frozen snapshot in time.

Likes & Dislikes

u-z7t3VYkNnz9X9W97p0HarnZa5sj9yPBBEq

We decided to feature fewer libraries this year, but in turn ask more follow-up questions about each of them. So not only did we ask you what you use, but also why you use it.

No CSS

Sadly there will be no CSS section this year. CSS is such a vast topic it would almost merit a survey of its own, so rather than do things halfway we decided to focus on just JavaScript this time.

More Sharing

We took the extra step of generating image previews for every chart in the survey to make it easier to share them on social media or by email.

We encourage you to check out the full results but maybe you’re in a hurry and only want the gist of it?

TL;DR: things didn’t change that much this year.

JavaScript “Flavors”

We call “flavors” the various syntaxes and languages that can compile to JavaScript, such as TypeScript.

And speaking of TypeScript, it’s the clear leader in this category. In most places, over 40% of developers said they had used it and would happily use it again, and in some countries that ratio even went over 50%.

lV92AsP1pjHuWvg431BKhRae4q3e0abjp9pb
TypeScript satisfaction ratio worlwide

Front-End Frameworks

Here’s a chart that plots how satisfied developers are with front-end libraries vs how many users they have:

-jRXpzIaFq5bqwU8v6h1Lq4WKvBOC3It0kNl
Front-End Frameworks Quadrant Chart

As you can see, only React has both a high satisfaction ratio and a large user base, although Vue is definitely getting there. Angular on the other hand does boast a large user base, but its users don’t seem too happy.

Data Layer

The data layer groups all the technologies used to transmit and manage data. And while Redux is dominant in terms of raw numbers, we think the trend favors GraphQL and adjacent technologies such as Apollo:

8cNlJIv2Sj5ZqLOrw4J6CLXe-AkmJa0qlAmP
Data Layer Trends

Of course, in theory you can use Redux and GraphQL together, but in practice that combination might end up being replaced by a GraphQL-specific tool like Apollo’s built-in state management.

To find out what’s going on with testing, back-end frameworks, and much more, read the full results!

The Stack

It might seem weird to talk about a tech stack for what is, at its core, a simple static site. But this is JavaScript we’re talking about after all! So you know things are never going to be that simple!

  • We collected the data using Typeform. We built our own command-line tool to generate surveys from YAML outlines through their API, which was a huge help for iterating quickly.
  • We then treated and normalized the data using Elasticsearch.
  • We plugged the resulting JSON files into Gatsby to generate the site. We used a combination of Gatsby’s GraphQL data-querying features and plain old imports to load the data.
  • Finally, we generated all the charts using the amazing Nivo.js data visualization library for React.

If you’re curious, the entire project is available on GitHub for learning purposes.

uQ1YOSmLEuA7zUQFTLQ01TRGljhmLs42WR26
Nivo

About The Team

In case you’re curious who’s behind the survey:

Sacha Greif (me!)

I created the survey in 2016 to answer my own questions about the best technologies to learn. Two years later I’m still learning, and also trying to reinvest all that freshly acquired knowledge into my very own JavaScript framework, Vulcan.js.

Raphael Benitte

Raphael is the creator of Nivo, and an all-around data visualization expert, and front-end bad-ass. He also takes care of all data analysis tasks for the survey.

Michael Rambeau

Michael is the creator of BestOfJS, an aggregator of data and trends about the JavaScript ecosystem. He’s the perfect person to ask when you need data about some obscure JavaScript library!

What’s Next

Launching this year’s site was the result of over two months of hard work collecting, analyzing, and presenting data. But there’s still a lot more we could do.

For example, we would love to make the results site available in more languages. This will require a little re-engineering on our part, as a lot of strings are currently hardcoded, but it should be possible.

If you’d like to help translate the site in your language, please check out this GitHub thread.

And with all the work we’ve put in, we’re starting to think it might be a good idea to reuse our setup for other surveys. How about the State of…Turbo Pascal? Well, maybe not. But do let us know in the comments if you have any suggestions!