you only really need one framework to do shit, the main problem is that js is a dumpster fire of a language, and the web stack if full of incongruent ancient shit that doesnt work well together.
Like we have global styles but nowadays you'll probably use css modules and preprocessors (more abstraction)
Like we have js with its entire host of birth traumas. You have to use babel for it to work everywhere. Meaning, the code you write isn't quite the code thats get run (more abstraction)
Like you have this whole step of bundling which is a mess on its own (more abstraction)
Like then there's frameworks (more abstraction)
Like we have essentially duck typed language that is js that we want to make safe by... inventing Typescript, which introduces a lot of its own pains in the ass.
Dont get me started on linting - eslint is a horrible mess that needs to die. Same goes to jest (testing) .
Then there's npm which is basically a trashbin of abandonware.
frontend is ridden with shit like this.
AND YET, there's this new movement from engine authors to make a new dumbed down version of js the standard and offload implementing new language features to BUNDLERS FOR FUCKS SAKE. It doesnt get crazier than that.