18 ms·
The State of JavaScript 2017
- jaylynch 9y agoI find the data from the "I've used this but wouldn't again" almost as interesting as anything else here. Also really looking forward to seeing how Reason shifts between this year and next... :)
- myth_drannon 9y agoLast year I was excited about Elm, this year about Reason. I follow a bunch of Reason folks on Twitter and see lots interesting projects. I also keep seeing React core devs keep dropping hints that React will be rewritten in Reason which makes sense since originally it was written in SML.
- jaylynch 9y agoSame here. Since hearing about it we have a port of a large project in progress and whilst the typing is nice, the improvement in build time alone looks like making it a worthwhile exercise. Big things to come I suspect, particularly with it feeling like such a natural progression of so much of FB's recent JS work.
- namuol 9y ago> I also keep seeing React core devs keep dropping hints that React will be rewritten in Reason Seems like a natural fit. Wasn't the whole Fiber architecture inspired Algebraic Effects, natively possible in OCaml? Sebastian Markbåge even toyed with adding algebraic effects to JS... wild stuff: https://esdiscuss.org/topic/one-shot-delimited-continuations-with-effect-handlers https://esdiscuss.org/topic/one-shot-delimited-continuations...
- spicyj 9y agoWe don’t have any plans to rewrite React in Reason right now, sorry! Maybe one day.
- alexwebb2 9y ago> I find the data from the "I've used this but wouldn't again" almost as interesting as anything else here. I'd love to see an explicit "percentage of those who've used it who would use it again" number for each library, easily glanceable. I think that's what most of us are probably doing in our heads when looking at this data.
- mycelium 9y agoSome quick ones I did for myself: Frontend frameworks: https://i.imgur.com/Sd1g5zw.png https://i.imgur.com/Sd1g5zw.png State management frameworks: https://i.imgur.com/HCD32bo.png https://i.imgur.com/HCD32bo.png
- shabbyrobe 9y agoI can't read the text on this site. Does anyone know a way to permanently disable "font-weight: <=300" for all websites in firefox without resorting to anything as heavy as Stylish, or will I need to write my own extension? There's a minimum font size preference, but not a minimum weight.
- sgdesign 9y agoCreator here. What browser/OS are you using? You can always add a `font-weight: 500 !important` to the <body> tag.
- shabbyrobe 9y agoUbuntu 16.04 + Firefox 57, Ubuntu 16.04 + Chromium 62.0.3202.89, macOS Sierra + Firefox 57. Inaccessible to me on all - the font is too thin for me to read. I can't scale the font size up high enough either as the layout breaks. I used the `font-weight` hack initially, but after I clicked a couple of internal links that reset the override, I gave up.
- CoryG89 9y agoSomething like this should work with the font-weight override. https://superuser.com/questions/318912/how-to-override-the-css-of-a-site-in-firefox-with-usercontent-css https://superuser.com/questions/318912/how-to-override-the-c...
- ww520 9y agoThe text has pretty bad contrast.
- spiralx 9y agoI'm not sure you could do exactly that even with Stylish as there's no way in CSS to match elements based on their style - you could define a global font-weight just by adding this to "chrome/userContent.css" in your profile directory, but that would override every font-weight on every element: * { font-weight: 400 !important; }
- kenhwang 9y agoHow did 18% never hear about "No Framework"? Isn't that the default option?
- RobLach 9y ago4.3k people never hearing about using no framework for the frontend gave me a good laugh particularly re: the state of javascript.
- quickthrower2 9y agoMaybe they think it is a new framework with the name "no"
- ChrisSD 9y agoIt's a rival to http://vanilla-js.com/ http://vanilla-js.com/
- intrasight 9y agoI built my commercial SaaS last year in vanilla-js as am very pleased with the results.
- franciscop 9y agoWhat an excelent idea for a name, no.js will be the next framework I make!
- quickthrower2 9y agoOr use the past participle: noed.js
- deleted 9y ago[deleted]
- NanoWar 9y agoI was just wondering why this site doesn't use Comic Sans aswell...
- ransom1538 9y agoPlease lord, let JS die a horrible, horrible death.
- wybiral 9y agoModern JS isn't that bad. Some of the tooling and frameworks are though.
- ehnto 9y agoI'm not sure it's Javascript's fault. The ecosystem that is using it would have found a language to live somewhere. The idiom of ephemeral, throw away, spaghetti of dependencies was born out of the way the web platform moved forward, the short lived nature of websites and web apps, and the spread of developers with different backgrounds that were working on it all. If we were using Javascript to develop native windows apps then I am sure the ecosystem would be very different. However, that would be dumb, right? cough
- dhruvrrp 9y agoElectron would like to have a word with you
- stuffedBelly 9y agoRead Javascript the Good Parts by Crockford and you will feel slightly better about the language.
- acheron 9y ago“JavaScript: The Good Parts” always makes me think of the joke from Airplane about “light reading”.
- chasd00 9y agoIt is a good book and there's definitely lots of bad to go with the good. I describe JavaScript as a pyscho gf or bf depending on the audience. Everything's fine until it goes wrong then it goes real wrong real fast.
- velodrome 9y agoAngular should be noted as AngularJS. https://angularjs.org/ https://angularjs.org/ Angular 2 should be noted as Angular. https://angular.io/ https://angular.io/
- icedchai 9y agoNot confusing at all. How about just calling them Angular 1.x and 2.x?
- velodrome 9y agoAngular 5.x?
- la_oveja 9y agowhen searching info about Angular (2+) is easier to avoid "angularjs" results than "angular 1".
- Lazare 9y agoThe problem with the numbers is "Angular 2.x" is actually "Angular 2+"; they're currently up to Angular 5.x.
- madeofpalk 9y agoI don't understand. React and everything else doesn't suffer from this 'problem'.
- smackfu 9y agoTry google searching for anything Angular related.
- madeofpalk 9y agoHonestly, this is just very confusing.
- velodrome 9y ago
- Xeoncross 9y agoLooks like vue.js is doing great marketing (even if just word-of-mouth). Almost half the participants say: "I've HEARD of it, and WOULD like to learn it". Meanwhile, react.js has over half the participants saying: "I've USED it before, and WOULD use it again".
- baby 9y agoRecently chose Vue.js over React, and it's been great! React was a pain to learn imo and Vuejs really made everything smooth and easy. Just my 2 cents.
- mtpn 9y agoI’ve heard this so many times, and don’t get me wrong I really like Vue, but I’m so surprised people find it easy to learn compared to the others. It wasn’t an uphill battle but I found getting started with vue to be about the same, if not little more overhead, than react, ember, or angular 1, all of which I’ve played with a little.
- aroman 9y agoAs someone who knows react very well, is there still a reason to learn Vue? Or is the primary benefit that it's easier to learn?
- blackrice 9y agoThere are some other benefits like styled components / scoped css available by default and officially supported libraries for routing and global state management.
- jaxondu 9y agoMaybe for VueJS's smaller size. As for React or Vue, VueJS is simpler, easier to learn, compatible with web components, comes with default router and Vuex redux style store from the core team. So this avoid lots of learning time by new user as to which router to choose, should I learn redux or mobx etc. Typical React/Redux app is full of biolerplate, where VueX is hiding them. VueX also specify a default way of dealing with async, where's in Redux you have many options that could be confusing to new user. There is also bulitin html animation/transition support. Also web dev tools for Chrome and Firefox are from core team.
- natural219 9y agoInteresting to see that Webpack has continued to gain ground on Gulp as the leading top-level build tool that people use, because from my experience it seems slightly over-engineered for 99% of use cases. Webpack uses the "configure a black box + add a bunch of plugins" approach to the front-end build pipeline, whereas I recently used Gulp to create a beautiful build workflow using Rollup, Babel ES6, JSX, Sass, and a basic livereload webserver in less than 80 lines of very readable, plain javascript code that would take roughly 5 minutes to explain to a new developer on my team faced with build pipeline modifications. I also don't think many people understand that using Webpack encourages non-ES6 import semantics that will break your source code if you ever decide to switch from Webpack. Encouraging things like "import app.css" seems like it might confuse junior developers who don't understand what's going on under the hood, or have to eventually work in non-Webpack systems. Sorry for the rant here, haha, I'm a huge fan of these surveys and love taking the opportunity to talk crap on build tools / frameworks :).
- saosebastiao 9y ago> Interesting to see that Webpack ... because from my experience it seems slightly over-engineered for 99% of use cases. Overengineered? I feel like un-engineered is the right word for it. I use it, but I dread touching anything in my config, cause every time I do, something breaks. I've tried gulp and grunt, and both of those are pretty bad as well. Different problems, but problems nonetheless. I'd love to see Parcel deliver on their promises, but as of right now it's alpha level for even basic use cases.
- natural219 9y agoCurious what you dislike about Gulp? I keep hearing people poo-poo it and say that it's "totally uncool now", but I can't understand anyone's frustrations with it, especially compared to other build tools.
- chrisco255 9y agoNothing wrong with it. It's just not as powerful as Webpack.
- bascule 9y agoKind of disappointed to see very little information about the evolution of the language itself, especially in regard to ECMA TC39.
- flukus 9y agoThe state is way overused, as this simple article that doesn't work without javascript can attest.
- sgdesign 9y agoI know this is just trolling, but it thought it was ironic to get this clichéd criticism about complex dynamic data visualizations, which for once are precisely the kind of thing that JS is required for…
- flukus 9y agoAs far as I can see there is only one dynamic visualization and the rest could have been handled with static images, but they don't work with javascript turned off. Even the dynamic one could be a static image and progressively enhanced with javascript. So I stand by the overused comment.
- syphilis2 9y agoThe menu is broken for me using Firefox mobile. I can't scroll down, it just keeps snapping back to the beginning of the list. (That's my state of JavaScript :) I really like all this information and the way it's presented.
- karimf 9y agoOther answers on backend section: 138 mentioned .NET, 129 mentioned Rails, 90 mentioned PHP.
- mandazi 9y agoI feel like some underestimate the .NET framework. Microsoft has done a great job of really opening up and building a better eco system for developers to work with. Years ago there was a common stereotype that .NET was old and not cool. I believe it still has a place and is a strong server side framework.
- djeikyb 9y agodotnet development targeting linux is painfully slow. on my macbook, with a relatively small asp core project, there is a 10-20s overhead to run any quantity of unit tests. i believe it will get better, but right now it's a bad choice.
- patates 9y agoI have a project with 36 different entities, 100s of endpoints, and way too many abstractions (coming close to the enterprise-Java levels) and for me, it takes 8 seconds for a cold start on a 7 year old mac mini with an ssd (around the same when running tests). I find it not perfect but acceptable.
- DiThi 9y agoWhat about Coffee Script? Was it forgotten even though version 2 has been released recently with all features I missed and more?
- toomanybeersies 9y agoI think Coffeescript is basically dead at this point, for better or worse.
- iends 9y agoSadly CoffeeScript 2 recently came out, so not dead...but the ecosystem has moved on.
- Yaggo 9y agoNothing prevents you from using CoffeeScript with the "ecosystem". CoffeeScript is just alternative syntax. Version 2 outputs ES6 code with compatible classes, etc. It also supports JSX out of the box (with the help of babel), there are webpack/browserify/etc plugins.
- DiThi 9y agoSadly? I'd say fortunately it's no longer a fad, but only fans of the language (like me) use it.
- pjmlp 9y agoAnother victim of JavaScript's fashion industry.
- jorblumesea 9y agoPersonally found Webpack to be really heavy handed for what most developers need it for. Gulp on the other hand seemed easier to just build exactly what you need. Webpack felt like an overly complicated poorly documented black box that seemed to work by sifting through github issues and comments. You spend 2 days getting it into some semblance of a working state, and never touch it for fear of introducing a new issue. Gulp just...worked, and with very little fuss. Sadly React seemed tightly tied to webpack so if you want React you're tied to that toolchain. In general I think tooling needs to improve, and neither Webpack nor Gulp are painless. Neither is maven, I suppose...
- codefined 9y agoI'm not sure, my opinion of Webpack is completely different. We used a ~20 line configuration file found on Gist to replace our ~400 line gulp build. It resulted in better optimisation, less hassle and "Just Worked™". We wanted to add a few more things to our configuration, literally just took running `npm install some_package`, followed by requiring it in the webpack configuration.
- inimino 9y ago> a ~20 line configuration file found on Gist Having to find it on gist because the official documentation is so lacking that nobody can figure out how to configure the thing except by following examples is the main problem that leads people to fear webpack configuration and to cargo cult magical config files that they are afraid to touch. Mature tools can be understood in principle and configured without needing to see "how someone else did it."
- ggregoire 9y agoThe recent rewrite of the doc seems pretty clear and straightforward to me. Did you take a look at it? I think lot of people don't even try to read the official doc and just look for a work-out-of-the-box conf to copy/paste. Probably because they think it's not worth it learning a tool you configure one time and never touch again.
- md224 9y agoIt looks like they're purposefully grouping together front-end and back-end state management. Why do that when they often (if not always) serve different purposes?
- lmiller1990 9y agoI wonder how much correlated the pay/framework data is? A lot of orgs I know using Vue.js moved to it from jquery -- so I suppose a lot of people using Vue.js might use in the same way, for just a bit of dynamic functionality. React seems to be more popular as a full front end solution, as opposed to just adding a few dynamic effects.
- bigtunacan 9y ago“The Progressive Framework” marketing of Vue is both appealing and accurate. As a shop that has both applications that reside primarily server side and have jQuery spaghetti where needed as well as full front end SPA applications Vue fits the bill for both arenas.
- Keyframe 9y agoI used to do web 'things', but have been out of the loop for quite some time now. I'm intrigued by the idea of doing everything with one language / ecosystem. So, I'm asking you - as an ye olde php (and laravel) guy, where would one even start? I guess node.js and expressjs is where I look first and then branch out? Also, what's with the build systems? Isn't it js?
- tpfour 9y agoI recently had to build a small web app. I mostly code for fun, and I've been writing Python for years. I was able to learn how to use VueJS with single file components in about a week, with Flask as a backend, plus Bulma as a CSS framework. Nothing fancy but it works flawlessly. Also, the Vue team offers a Webpack template so I didn't have to spend a minute learning about that. Overall very pleasant experience. Edit: woops, forgot to say what I actually wanted to say! You don't need to write everything in one language. I actually abhorred that idea, and glad I found a stack that 1. doesn't need much maintenance 2. doesn't force me to spend countless hours learning about why XYZ is better than ABC and how QRT were wrong about this and that and learning 100 different new concepts and terms. I put together the stack myself, and it worked without me having to bend my programming knowledge to the particular task. There's value in this.
- ldd 9y agoI just want to say that react/vue(javascript) on the frontend and flask(python) on the backend is a combo made in heaven: So I don't think you are the only one :D
- pfranz 9y agoI feel like I was similarly curious a year ago. I think this is a good tutorial for introducing the pieces one at a time: https://github.com/verekia/js-stack-from-scratch https://github.com/verekia/js-stack-from-scratch It is opinionated (as in, it picks a single option; webpack instead of gulp, react instead of angular or vue), but I think it does a good job of introducing things in isolation. I ran through the tutorial a couple times after I was more familiar with things.
- 9y ago
- johnhenry 9y agoI like to site, but please remove the blinking effect when hovering over links. Edit: I know i'm probably getting down-voted for this, but even though the effect is brief, it's really jarring -- similar to the "<blink>" tag.
- aroman 9y agoI can't believe nobody's mentioned that apparently yarn is more popular than npm? Surely that can't be — see the "Other tools" page.
- yen223 9y agonpm has its own entry under Build Tools, and that has significantly more users than yarn.
- sandGorgon 9y agosame here - no yarn at all ?
- jblg 9y agoNo minifier category?
- FLGMwt 9y agoCurious: I assumed it had converged around UglifyJS. Do you use something different?
- deleted 9y ago[deleted]
- marpstar 9y agoWhy are "Electron" and "nw.js" listed on the mobile section?
- laurent123456 9y agoI was wondering as well, but that's because the menu is titled "Mobile", while the section is actually "Mobile & Desktop Frameworks"
- vjeux 9y agoThis is so exciting that prettier is being used by 15% of people that responded to the survey, it hasn't even been a year since it was open sourced!
- spectrum1234 9y agoPrettier is amazing!!!!
- elbear 9y agoThank you for mentioning this. I didn't know it existed and I was looking for a formatter for TypeScript.
- Androider 9y agoTwo steps to better code reviews and happiness that everyone working with JS should implement: 1. Setup prettier, using the defaults, with the recommended pre-commit git hook 2. Never talk about code formatting again (Don't like the prettier defaults? Please refer to bullet point #2)
- cpburns2009 9y agoPrettier could really use some example inputs and outputs for the supported languages. Sure, all of the settings appear to be documented in the API, but there's no concrete examples. I'd like know if its defaults look reasonable to me. I've seen some weird JavaScript conventions which makes me leery (e.g., jQuery). And I don't even know what that JavaScript/HTML hybrid is in the "Playground".
- rattray 9y agoA PR with this would likely be very welcome!
- alexkoeh 9y agoI've heard more and more about prettier, but I can't figure out how it's much different from eslint. What are the advantages?
- flatline 9y agoNo Google Closure? I realize it’s not particularly hip but there is a very large set of decent tools there.
- growtofill 9y agoIt’s there, see ClosureScript: https://stateofjs.com/2017/flavors/results https://stateofjs.com/2017/flavors/results
- flatline 9y agoThat’s ClojureScript, not Closure. Yeah, they were both poor name choices.
- swellep 9y agoDidn't expect so many people to be using Firebase
- HumanDrivenDev 9y agoWhy would you design a website with grey text on a grey background? How could anyone possibly think that's a good idea?
- noway421 9y agoBrutalist design
- virtualized 9y agoI'm sure it looks "beautiful" on the designer's MacBook Pro.
- pteredactyl 9y agoI use the absolute least amount of packages and libraries necessary.
- pteredactyl 9y agoI will not use a library to ‘virtue signal’ JS abilities.
- drblast 9y agoYou shouldn't virtue signal anymore anyway. Have you heard about nosignal.js? It does everything virtue signaling did but is way easier.
- sAbakumoff 9y agoPretty soon angular 4+ will take over and become the only framework you want to use.
- _pmf_ 9y ago> The JavaScript ecosystem is richer than ever In the way a pile of half decomposed meat by-products is "richer" than a surgical instrument.
- TheSleeprAwakns 9y agoAgreed
- kevinsd 9y agoIIRC the survey was open in July/August. But it took the authors 3+ months to produce this result, which IMO has very limited commentary. It would have been much nicer for such a time-sensitive survey to come out sooner.
- FLGMwt 9y agoFWIW, Sacha posted a "sorry for the delay" post a while back: https://medium.com/@sachagreif/the-state-of-js-2017-results-preview-acbd2885da7f https://medium.com/@sachagreif/the-state-of-js-2017-results-... Agreed on wanting it earlier, but the results are still super valuable.
- qualitytime 9y agoIf you view source and check the web console you'l see a link to a quiz: /\ ----+---- / \ ----+---- +----+ +------- | / \ | +------- +----+ |the | | | /------\ | | | of | +----+ +------+ | / \ | +----- +----+ | | | | +-----+-+-----+ -------+ | +----+ | +------- +-----+ +-----+ +-+----+-+ ( ) ++ | | | | ' || | | +--+ +-+ +-+ +--+ | | ++---+ +-+/--+ +++ +++--++ |+--+ | | +++--+++ \\ // +++--+++ +-+----+ +++---+ +-----+ ++| ||+--+++ |+--+ | | || || \\ // || || +----+-+ || || || || || || | | +++--+|| \V/ +++--+|| | | +++---+ +-++-+ +++-+||+--+++ ++--+ | | +--+++ V +--+++ | | ++---+ +----+ +---+||+--++ +--+ +-+ +-+----+-+ || +-+-----++ +----+ || +-----+ /\/\ -----+ +---+ /\/\ ++ / / / | +----+ | | | \ \ \ \/\ / +----+ | | | | \ /\/ / | | | | | \ / | | | | | \ +----- +----+ | | Will you be wise enough to escape the JavaScript Jungle? Take the challenge to find out! http://bit.ly/2yVkZNc http://bit.ly/2yVkZNc
- have_faith 9y agoWhy does China skew towards the "alt" libraries? Koa, Vue, etc.
- nie 9y agobecause the "main" libs by Google, Facebook et.al. are blocked.
- bolololo1 9y agoThe 'connections' page contains an error - Angular should be AngularJS(https://angularjs.org/ https://angularjs.org/), And Angular 2 should be just Angular (https://angular.io/ https://angular.io/).
- lucideer 9y agoI'm guessing this correction would make it more confusing for more people than it would help. Perhaps "AngularJS" and "Angular 2" would make an appropriate compromise between being correct and being clear to people not as familiar with the Angulars' release histories.
- rcarmo 9y agoI'm becoming fonder and fonder of RiotJS (http://riotjs.com http://riotjs.com), although I've tried to get into Elm (and failed, largely because I'm not fond of "compilers" when I'm iterating quickly). I'm cool with working with a niche thing that I can sit down and read the entire codebase for in a single morning, though, and that doesn't seem to be a survival trait in front-end development :)
- pagnol 9y agoHa, I use Elm because it allows me to iterate quickly, especially as I don't need to run the app to find out if there are bugs, since the compiler catches so much.
- robinwassen 9y agoSome generalisations from this data: - Developers likes newer tools more than older tools - Developers who work with newer tools are paid less than developers working with older tools These points are not really surprising.
- rattray 9y agoThat's true in some places but not true in others. While Vue underperforms React, Reason outperformed all other langs (for example).