That said, there are many instances where you need server data and you don't want to get it post-render (thus avoiding the now dreaded spinners on first load), you don't have many options
React Router, Vue Router etc. None of them have any consideration for using them together, they either don't support it at all or make you choose.
I'm aware of the choice between path based routing, and hash based routing, which has some server side implications.
The History API manages entries in the client history, which I always thought a hash based router would still need to use. Maybe because a hash based router can work single page on the client without having to fake real resource paths?
edit: I'm only familiar with the vue side, but vue-router relies on the same code for both, I can only see minimal differences for the `#`, not much for the history management.
https://github.com/vuejs/router/blob/110c86929ac92e2428d8d49...
I'm not a fan of anything that has the word "rehydration" in it. Server is good at some stuff. Client is good at other stuff. Trying to blur the boundary seems like an engineering exercise in search of an application.