This right here is exactly what
@inertiajs lets you do today.
You can have a rich client-side application, that still handles routing, data fetching, state management and more server-side.
Plus you can do this with your existing server-side stack of choice. Laravel, Rails, etc.