Turbolinks is a great idea in theory, but it comes with enough problems to offset its benefits.
I would assume, if you're reading this, that you're familiar with Turbolinks. If not, it's README explains it well:
Unfortunately, while good in theory, it's caused me several problems.
Many libraries that we use won't consider compatibility with Turbolinks. In an ideal world, every library and plugin we use would consider scoping more carefully. But, frankly, it's not the responsibility of these various authors to consider compatibility with Turbolinks.
The biggest benefit of Turbolinks is supposedly that it speeds up applications. That makes sense, and most of the time that is the case. But it makes writing feature tests more difficult.
Because Turbolinks doesn't load a new page, Capybara will think clicking a link is the end of the request and will move on. This means every time you click a link in a feature test you have to make sure you're waiting for the ajax to finish loading before writing the next line in the spec.
While Turbolinks may speed up page loads, it makes writing feature tests more aruduous. And I've found it leads to unexpected and inconsistent results.
While Eleventy doesn't appear to be built for today's component-driven landscape, here are three approaches we can take to get closer.