So far I used Intercooler/HTMX and Turbolinks.
Of course I wish I could pick and choose to have the best of all three :) .
Unpoly has the best out of the box experience for the whole Fragment/Link game (preloading/prefetching links/fragments etc), you get layers out of the box (modals etc) and 3rd party JS is easy to integrate with compilers.
What I miss from Turbolinks, is the (re)loading of page specific CSS/JS. Unpoly wants you to load all JS Styles upfront or you have to load page specific JS (like a Map) with Javascript. Turbolinks keeps track of those additional JS/CSS references. But then you have to write your own mini framework to execute page specific methods. That's basically what Unpoly offers with their compilers. Also, you don't have the page transitions and preloading on hover with Turbolinks out of the box
So I have a project where I lean towards Turbolinks, just because of the page specific asset loading (don't want to rely on JS for that) - but I try to write my scripts so I can swap it out with Unpoly or not use any oof those frameworks.
Intercooler/htmx (the first relies on jQuery) is nice for smaller things where you need some ajax on one page and don't want to touch the legacy JS bundle in a project. Just drop in htmx and add some attributes to the html. Htmx is not as mature as unpoly and as far as I can tell, it has the same problems with page specific assets. But again if you load all scripts and css in one bundle, you don't have to worry about that.
I used Alpine.js a bit, but I think it's not comparable to Unpoly. More to Vue, so I'll leave that out. Curious to read about other peoples experience.