I had no idea how much stuff has come about in the past couple years until writing the above paragraph. I didn't even throw in all the flux libraries, CSS solutions, etc. There's a ton of things that got us to where we are today.
The beginning of this year, I created the biggest app I had ever made. Complete with code splitting and everything else a large app needs. Looking over the codebase after completion, I am happy with it overall. There's a lot I want to change with it. Using these projects for over a year has opened my eyes. In my opinion, we won't be needing to rewrite apps to get the latest features much longer.
The worst part about this app is its terrible SASS setup. In v2 I'll be using styled-components. I'll always be able to know when I can or cannot delete CSS. It was only released a few months ago, but I'd venture to say that it will be here to stay until CSS itself is radically changed.
Webpack 1 has been great. Version 2 comes with a more stable, less magical syntax. It has tree shaking, overall it's a much more mature project that you should consider using.
Babel hasn't changed drastically since the big changes in v6, and is also stabilizing. You can even use the relatively new babel-preset-env to target specific browser versions.
React Router is about to release version 4. A completely simplified api, that is just React components. The API surface is small. Historically, the React Router API has changed a lot. I see v4 being here to stay. It makes sense and feels like anything else you do in React now.
React has been extremely stable all year. With the announcement of switching to a new versioning scheme early in the year, not much has changed on the public API. Behind the scenes however, a lot is going on with React Fiber. This is another example of a project finding a good public api that won't be drastically changing any time soon.
It feels like all the projects I used to create react apps are figuring out the best ways to do things all at the same time. This is great for anyone getting into JS development at this point. Of course, I could be wrong. All of these packages could completely change in the new year, although I highly doubt it. Anyone who's been doing JS for a few years now should agree that things are slowing down a little bit. We are getting incremental language updates every year, and that only started in 2015.
It's taken a while for everyone to take advantage of new things that have been introduced. Personally, I have been playing with proxies and template literals to do some cool things. For instance, relation uses proxies to load relationships asynchronously. Legible uses template strings to make api requests. I bring this up to show that anyone who loves JS has been experimenting for 2+ years now. We are finding what actually works and what doesn't.
How do you feel about the state of JS? Let me know in the comments or on Twitter!