I've brushed up enough with react and vue to know their idioms, and I agree with you, and this is why I tend to reach for vue if I can use it. It reminds me of the "old" template system, but better because components are much nicer than the spaghetti you could find yourself in with template inheritance. The state tracking is also simple, and while I understand many find this aspect of vue "simplistic" I have never hit a serious limitation for my limited use cases.
So what about htmx? Well, I've tried to like it, but the thing is I could not figure out how to track state server side without quickly devolving into jquery like spaghetti of "this has to update, but also this if that but not if also this, and I need to trigger X if Y". I might be missing the correct pattern in using it, but in the mean time I've gone back to Laravel blade templates (which I rather like for its component system, taking in the best idea from front end) together with vue inspired Alpine JS.