My main problem with Vue 3 was succinctly summarized in the RFC:<p>"More Flexibility Requires More Discipline<p>Many users have pointed out that while the Composition API provides more flexibility in code organization, it also requires more discipline from the developer to "do it right". Some worry that the API will lead to spaghetti code in inexperienced hands. In other words, while the Composition API raises the upper bound of code quality, it also lowers the lower bound. We agree with that to a certain extent."<p>Vue 3 has committed several cardinal sins of software projects:<p>1) Splitting the API, allowing several different ways of doing the same thing. Call it "basic" and "advanced". Every developer thinks they're smart enough to use the advanced method, and egocentric devs will shame others to do it that way because it's "better" (this is already happening). This is a community killer.<p>2) Most <i>orgs</i> don't have the discipline required to keep code from turning into a mess if a library or API will let them. Time constraints, miscommunications, refactoring gone wrong, and general ignorance or outright stupidity always rears their ugly heads. If Vue 3 was a gun, it'd be a shotgun fired at your foot in an enclosed space.<p>3) Fad chasing. Emulating React hooks was a premature decision. Hooks are a hack (and it <i>is</i> a hack, without any question) to help some of React's more painful points. It's not a general solution. Trying to emulate that function-first way of doing things (fighting against JavaScript to do it) isn't something Vue needed to do, and just makes Vue seem like a React-clone instead of a project in its own right.