Last year's prediction was that 2016 would focus on consolidation over innovation. Looking back, that's exactly what happened. React solidified position, Angular 2 shipped, tooling matured, and new frameworks emerged without fragmenting ecosystem completely.
2016 wasn't "everything changed again." It was "things settled."
Framework Landscape Solidified
Three frameworks established themselves as viable long-term choices:
React cemented dominance. Not universal, but clearly winning mindshare. Ecosystem matured, patterns emerged (Redux, React Router), and React Native proved mobile viability.
Angular 2 finally shipped after two-year wait. TypeScript commitment, complete rewrite, and Google backing make it compelling for enterprise. But React's head start during Angular's rebuild cost Angular mindshare.
Vue emerged as legitimate third option. Simpler than React/Angular, growing fast especially in Asia. Vue 2.0's performance improvements and progressive framework philosophy resonate.
These three can coexist. They serve different developer preferences and project needs. This is healthier than one framework dominating or constant framework churn.
Tooling Maturity
Build tools stabilized:
webpack 2 beta showed webpack isn't going anywhere. Tree shaking, better performance, improved DX—webpack's dominance is secure despite complaints about configuration.
Create React App solved "getting started" problem. Zero-configuration React development became reality. This is significant—lowering barriers to entry matters.
Yarn challenged npm's monopoly. Competition improved package management for everyone. npm responded by accelerating development.
VS Code became dominant editor for JavaScript. TypeScript support, excellent debugging, growing extension ecosystem—Microsoft finally got developer tooling right.
Language Evolution
ES2015 became baseline. Transpiling via Babel is standard. ES2016 (small update) shipped. ES2017 (with async/await) is finalized.
async/await reached Stage 4, bringing readable async code to JavaScript. This is most significant language feature since Promises.
TypeScript growth accelerated. Angular 2's adoption, VS Code's support, and large companies standardizing on it suggest TypeScript is winning gradually.
The yearly release cycle (ES2016, ES2017, ES2018…) means JavaScript evolves continuously without massive disruptive changes.
What Shipped in 2016
Major releases:
Angular 2 (September): Complete rewrite finally done
Vue 2.0 (September): Virtual DOM, better performance
React 15 (April): Better warnings, smaller, faster
webpack 2 (beta): Tree shaking, improved config
Create React App (July): Zero-config React
Yarn (October): npm alternative
TypeScript 2.0 (September): Better types, more features
These are significant. Not revolutionary, but solid improvements.
The PWA Push
Progressive Web Apps gained real traction:
- Service worker support in all major browsers (except Safari)
- Real-world case studies showing significant impact
- Tooling improving (Workbox coming)
- Companies like Flipkart, AliExpress reporting success
PWAs aren't replacing native apps universally, but they're proving viable for specific use cases—especially in emerging markets.
The left-pad Incident
npm's fragility was exposed when one developer unpublished a 11-line package and broke thousands of builds. This highlighted ecosystem dependency vulnerabilities.
npm changed policies. Community discussed sustainability. But fundamental problems remain unresolved.
Yarn's release partially addressed this with lockfiles and better reliability.
React Native Matured
React Native proved itself production-ready:
- Major companies (Facebook, Instagram, Airbnb) shipping RN apps
- Performance improvements
- Ecosystem growing (libraries, tools)
- Android support maturing
React Native isn't perfect but it's viable alternative to pure native development.
GraphQL Adoption Growing
GraphQL moved from "Facebook experiment" to "serious option":
- More companies adopting (GitHub, Shopify)
- Tooling improving (Apollo, Relay)
- Community and ecosystem growing
- Patterns emerging
GraphQL isn't replacing REST everywhere, but it's proven itself for complex data requirements.
What Didn't Happen
Web Components didn't take over. Still a standard, still not widely used. Framework-specific components won.
JavaScript fatigue didn't end. It peaked but the complexity and churn remain challenging.
Module bundling didn't become unnecessary. HTTP/2 helps but bundling is still essential.
Native apps weren't displaced. PWAs and React Native are progress but native remains dominant for complex applications.
Framework Fatigue Peaked
2014-2015's endless new frameworks slowed. No major new frameworks emerged in 2016. The ones that exist matured instead.
This is healthy. Constant framework churn exhausted developers. Consolidation around React, Angular, Vue gives stability.
What 2017 Needs
JavaScript ecosystem needs:
Stability. Keep improving existing tools rather than replacing them. Give developers time to learn and invest.
Documentation. Too many tools are powerful but poorly documented. Investment in learning materials matters.
Accessibility. Complexity has grown. Onboarding new developers is harder. Better defaults and simpler getting-started experiences help.
Performance focus. JavaScript bundles are massive. Load times suffer. The ecosystem needs to prioritize performance and bundle size.
Sustainability. Open source maintainers burning out is ongoing problem. Supporting maintainers (financially, recognition) is necessary.
2016 in Perspective
This was the year JavaScript stopped changing constantly and started solidifying. Not stagnating—evolving predictably.
Frameworks established themselves. Tools matured. Patterns emerged. The platform feels less chaotic than 2014-2015.
Challenges remain: complexity, fatigue, sustainability, learning curve. But the ecosystem is healthier.
2016 delivered on consolidation promise. 2017 should continue this: refining and improving rather than replacing and churning.
JavaScript is maturing. Finally.
Resources:
- State of JavaScript Survey – First survey, community snapshot
- JavaScript Weekly
- TC39 Proposals