These days, I just do vanilla JS/HTML/CSS. In some cases we serve our pages using server-side rendering techniques via Blazor, so there is no tricky state synchronization game to play over the wire. But, Blazor is mostly just doing what PHP used to do for us. We aren't diving into their component/binding ecosystem any further than we need to.
Biggest advantage with a vanilla stack is that you will never get trapped on an old version of one of these things and be forced to "migrate" (i.e. "rewrite") your application each time. Vanilla also means you don't have to submit yourself to any arbitrary package manager, build toolchain, et. al. Your entire product can fit inside 1 html document that just instantly works in any browser.
I'm only a tad familiar with Vue, but it seems like you wouldn't have as many curve balls thrown at you by committing to that framework. Which makes sense with it being essentially 1 guy's project, rather than a giant like Google (who famously is not one to care for backwards compatibility)