The other point I would add to what you wrote is that five to ten years ago, we were all going crazy watching new JS frameworks come out every other week, like Ember and Knockout (to say nothing of the Grunt vs. Webpack war). It was impossible to keep up with everything going on in JS. AMD → Require → Import. Callbacks → Promises → Async. There were a ton of language evolution changes going on.
Today, things are much more stable. The big choice is React or Not React, and then Not React breaks down into the clones (Preact) and improvements (Vue, Svelte) over standard React. It's not the Wild West anymore. Similar concepts apply everywhere, and you're not taking the same kind of gamble by using a particular component framework that you were back then. The only old browser we still care about is IE11, and that's on a death clock. We're very close to entering the module JS Promise land. If web components ever gets sorted out, we'll even have compatibility of the different frameworks. It's becoming saner.
Today, things are much more stable. The big choice is React or Not React, and then Not React breaks down into the clones (Preact) and improvements (Vue, Svelte) over standard React. It's not the Wild West anymore. Similar concepts apply everywhere, and you're not taking the same kind of gamble by using a particular component framework that you were back then. The only old browser we still care about is IE11, and that's on a death clock. We're very close to entering the module JS Promise land. If web components ever gets sorted out, we'll even have compatibility of the different frameworks. It's becoming saner.