Pages not preloaded

Pages with a query string (a “?”) in their URL aren’t preloaded by default because they sometimes trigger an action (such as logging out or deleting something).

Whitelisting pages with a query string

If you want to let all pages with a query string be preloaded, add a data-instant-allow-query-string attribute to the <body>.

If you’d like to allow only select links with a query string to be preloaded, add a data-instant attribute to them:

<a href="articles?page=2" data-instant>Page 2</a>

Blacklisting pages

To manually blacklist a link that triggers an action add a data-no-instant attribute to them:

<a href="logout?token=f2d2650ce6" data-no-instant>Log out</a>

This is to be used mainly if you use data-instant-allow-query-string, otherwise by default links with a query string are already blacklisted.

External links aren’t preloaded by default, to allow them all add a data-instant-allow-external-links attribute to the <body>.

To allow only some external links, add a data-instant attribute to them.

Preloading only some links (whitelist mode)

If you’d like to only preload specific links, add a data-instant-whitelist to the <body> and mark links to preload by adding a data-instant attribute to them.

Servers sending a Vary: Accept header and Chromium < 110

Chromium < 110, when encountering a Vary: Accept header, will not use the preloaded pages, making preloading useless. Add a data-instant-vary-accept attribute to your <body> in that case.

Shopify sites notably suffer from this. They are automatically enrolled in having preloading disabled in Chromium < 110 — no need to add the attribute.

Content blockers

For dubious reasons prefetching is considered a privacy violation by some content blockers such as uBlock Origin. Be sure to disable your content blocker on your site to see the preloading requests being made.

uBlock Origin in Firefox totally disables prefetching; if you use it you need to temporarily completely disable the extension, not just turn it off for your site.

This only affects users of content blocker that use the EasyPrivacy list. It works fine with AdBlock; and users of uBlock Origin are a minority. If you’d like to make work for users of your site that have a privacy content blocker you can self-host the script.

Put this HTML code just before </body>:
<script src="//" type="module" integrity="sha384-jnZyxPjiipYXnSU0ygqeac2q7CVYMbh84q0uHVRRxEtvFPiQYbXWUorga2aqZJ0z"></script>
Copied. Now place it just before </body> on your pages.