I’m planning to release a new version with a mechanism like InstantPage.start() (but by triggering an event instead of doing a function call, so that instant.page can be loaded asynchronously). Maybe that’ll solve it.
I’ve talked privately with @dhh and he said he’s interested in bringing the just-in-time preloading mechanism into Turbolinks. I also plan to make an alternative to Turbolinks that uses them (in fact I already did so with InstantClick, but it lacks good documentation and a bunch of other things, I plan to reboot it). So maybe I won’t make instant.page compatible with Turbolinks in the next version, it will depend on ease of implementation, we shall see.
Why does this not work? instant.pages EventListeners are bound to the document node, so the script shouldn't even need to get reinitialized on changes from turbolinks. And if the script is not at the end of the body it wouldn't be replaced by turbolinks.