But why? Few reasons popping into mind right away:

Alphabet. The biggest ad company that’s based on internet, who doesn’t want to pay billions to implant Google Search into other peoples’ browsers, is incentivized to instead invest as much money into making Chrome and JavaScript better. The Browser War will continue as other players try to match their cards.

The convergence of use cases that could be covered by JavaScript, as listed by the original post. Yes, argue all you want about the niceties or dominance of Swift or Kotlin or Ruby (aka Rails, cough) in their respective arena, the toolchain for web Swift or desktop Ruby is simply an order of magnitude more primitive compared to JavaScript toolchain in the same context. The sheer-mass of people (sure underestimate these n00bs who only know JS) who can use JS to accomplish what they want is thus significant more than any other ecosystem, the resulting cross-pollination of good ideas in JS world like reactive programming etc supercharges the ecosystem.

Iteration speed. Keep complaining about the JS Fatigue, and the dozen new frameworks that’s popping up every month, rest on the superiority of the “One framework that rules them all” in some other languages, I see these noisy shiny toys in JS land as constant experiments and innovations that will bring us closer to perfection in a faster speed than any other language ecosystem.

Babel.js. I’ve not seen any other language that have evolved so much over the last five years as JS. In most other languages, a major version bump will take years of planning and adoption. In JS, experimentations are afforded by using future features now, today, using Babel.js. Want generators? You can use that since three years ago, not the best idea anymore? Fine, let’s start using async/await, done. What if we want deconstruction or pattern-matching? That could be a Babel plug-in before it’s formally written in the standards.

What other reasons can you think that makes JS ecosystem so awesome as it is? Functions? Unique/lucky dominance in browsers? Simplicity? I’d love to know.