Thanks for taking this survey! Together, maybe we'll be able to figure out this JavaScript thing once and for all! (yeah right…)

Also, I know this survey seems long, but it's mostly the same questions repeated a bunch of times for different frameworks and libraries. Most people only take around 10 minutes to fill it in.
Let's Get This Started
Note: questions with a "*" are required.

JavaScript Flavor

These days, JavaScript is rocking more flavors than Flavor Flav eating Baskin Robbins. Pick your favorite!
Good Old Plain JavaScript *

ES6 *

Includes ES2015, ES7, ESP, etc.

CoffeeScript *

TypeScript *

Elm *

ClojureScript *

On a scale of one to five dogs, how happy are you with your current flavor of JavaScript?

(Five dogs meaning "super happy")


For each technology, pick all the statements that apply.
No Front-End Framework *

Or your own, custom in-house framework.

React *

Angular *

Angular 2 *

Ember *

Vue *

Backbone *

Other Front-End Frameworks

On a scale of one to five cats, how happy are you with your current solution for the front-end?

State Management

Some apps use dedicated libraries such as Redux to manage global state.
Redux *

MobX *

Relay *

Other State Management Libraries

On a scale of one to five thunderbolts, how happy are you with your current solution for state management?

API Layer

How does your server transmit data from your database to the client?
Custom REST API *

Firebase *

GraphQL *

Apollo *

Falcor *

Horizon *

Other API layer solutions

On a scale of one to five crowns, how happy are you with your current solution for the API layer?

Halfway there!


Sometimes you want something that just works out of the box. These solutions provide you with an entire JavaScript stack.
Meteor *

FeathersJS *

DoneJS *



Other stacks

On a scale of one to five trophies, how happy are you with your current full-stack solution?


Testing frameworks are a dime a dozen these days. Actually, even cheaper than that since most of them are open source and free!
Mocha *

Jasmine *

Enzyme *

Jest *

Cucumber *

Ava *

Other testing frameworks

On a scale of one to five severed hands, how happy are you with the current state of JavaScript testing?


Back in my days, we didn't need no variables or scoping in our CSS, no sir! The humble !important was good enough for us, and we walked uphill both ways!
Plain CSS *



CSS Modules *

Aphrodite *

Other CSS solutions

On a scale of one to five lightbulbs, how happy are you with the current state of CSS?

Build Tools

You need something to bundle it all up together.
Webpack *

Grunt *

Gulp *

Browserify *

Bower *

Other build tools

On a scale of one to five droplets, how happy are you with the current state of build tools?


Over the past couple years, the line between mobile and the web has been getting blurrier and there are now a range of technologies that promise to make the transition easier.
Native Apps *

React Native *

Cordova *

PhoneGap *

NativeScript *

Other mobile apps solutions

On a scale of one to five pencils, how happy are you with the current state of mobile apps?


Life is all about trade-offs, and you can't always get everything you want. So when building an app, which features truly matter, and which ones are just nice-to-have?

I don't know what that is: you're not familiar with this concept. 
Not needed: you wouldn't use this feature even if it's available.
Nice-to-have, but not important: you would add this feature if it doesn't involve too much work. 
Major feature: not having this feature would have a strong negative impact on your app or workflow. 
Vital feature: you cannot launch an app without this feature.
Server-Side Rendering

Server-side rendering means your app's markup is first rendered on the server then sent to the client, instead of being generated only on the client.

Code Splitting

Code splitting lets you load parts of your code incrementally when needed, instead of loading the entire app bundle every time.

Optimistic Updates

Client operations take effect instantly, and potentially get corrected once the result of the "real" operation comes back from the server.

Hot Module Reloading

In your development environment, hot-module reloading means code changes appear instantly in the browser without the need to rebuild the entire app.

Time-Travel Debugging

Your app keeps track of its state at all times, and lets you step back through successive operations as if travelling back in time.

Real-Time Operations

Operations gets propagated back and forth between client and server in real time.

Dead Code Elimination

At build time, your build tool can figure out what parts of your codebase are not actually used, and remove them from the app bundle.

Progressive Enhancement

Your app can be reasonably functional even when JavaScript is not enabled.

Other Features

Opinion Questions

This is your chance to let the world know how you really feel.
JavaScript is moving in the right direction

Building JavaScript apps is overly complex right now

JavaScript is over-used online

I enjoy building JavaScript apps

I would like JavaScript to be my main programming language

The JavaScript ecosystem is changing too fast

This survey is too damn long!

About You

We want to know everything about you. Well, maybe not everything…
Years of Experience

How long you've been working in the code mines

Company Size

Yearly Salary


Favorite Text Editor

Tabs or Spaces?

Other Comments

Things we missed, feedback on the survey, your favorite color, etc.
Thanks for completing this typeform
Now create your own — it's free, easy, & beautiful
Create a <strong>typeform</strong>
Powered by Typeform