Growing up from a document viewer to an app platform in the particular way it did left the web as the most important and ubiquitous GUI app deployment and runtime platform, but without a dev-accessible native GUI component system. No other major modern UI platform was _ever_ in this state.
This left all the work of creating the most basic widget system to userland, while at the same time the platform's features available to that userland were relatively paltry to begin with. As those features of JavaScript and DOM grew, frameworks were released frequently because newer ones were designed to take advantage of newer features. This lead to a huge amount of fragmentation.
Which brings us to now. Outside of threading, the runtime features are much more suitable to an app platform now, and finally the web has a native UI component system in Web Components. I think there's one or two more big shifts ahead of us toward Web Components and better utilizing Workers, and then things will settle down because we'll finally all be using the same platform features. Even if we still have opinionated and helpful layers on top, the foundation will be more stable and standardized.