Don't forget Unpoly: https://demo.unpoly.com/
I use it to replace almost all "api" calls to the backend and for the "turbolinks like" navigation, modals, etc. Then I use Alpinejs for the really interactive/complex parts.
I'm not doing a React/SPA ever again if I have any chance to decide on that.