I think React caved in to wider adoption pressure to introduce abstractions that are intuitive on the surface level but are costly in terms of large scale complexity.<p>> It's "declarative" right up until you're debugging stateful hooks, or resorting to useRef, or trying to reason about when a "component" re-renders<p>Maybe they should have modularized the core library more and have these things be separate, because the core idea of a uniflow pattern with reactivity is good.<p>I think what happened, at least in frontend, is that the industry pushed away from having engineers do any design or architecting on the frontend. All of these high level patterns have been "outsourced" to frameworks, and the result usually is something that has trouble scaling and adjusting to whatever domain it's in.