Prefer Related Applications

Learn how to use HTML link prefetching to anticipate user navigation and preload resources for faster page loads

What is Link Prefetching?

Modern websites often involve multiple pages with shared resources. When users navigate through a site, each page transition requires downloading HTML, CSS, JavaScript, and other assets. This sequential loading can create noticeable delays, especially on mobile connections or when pages contain heavy resources.

The <link rel="prefetch"> attribute gives browsers a hint about resources the user is likely to need during future navigations. Instead of waiting for the user to click a link and then beginning the download, the browser can fetch and cache these resources during idle periods.

According to MDN's documentation on prefetch, this resource hint helps developers anticipate user behavior and prepare likely navigation targets in advance.

Implementing efficient resource loading is a core component of professional web development services that prioritize user experience and site performance.

How Prefetch Differs from Preload

HintPurposePriorityWhen to Use
preloadResources for current pageHighCritical assets needed immediately
prefetchResources for future pagesLowLikely navigation destinations
preconnectEstablish connectionMediumKnown external domains
dns-prefetchDNS resolutionLowPossible future connections

As explained in MDN's speculative loading guide, each hint serves a distinct optimization purpose based on when and how resources are needed. Pairing these techniques with proper SEO optimization creates faster, more crawlable websites.

Basic Syntax and Implementation

The prefetch link element follows the standard HTML link syntax with the rel="prefetch" attribute. The href attribute specifies the URL of the resource to prefetch.

Basic Prefetch Example

<link rel="prefetch" href="/assets/js/app.js">

This tells the browser to download and cache the JavaScript file at the specified path. The browser adds this to its download queue with low priority, fetching it when bandwidth is available.

Prefetching Entire Pages

<link rel="prefetch" href="/products/widget-123">
<link rel="prefetch" href="/cart">

Prefetching entire HTML documents provides particularly noticeable performance improvements for multi-page sites. When users navigate to a prefetched page, the content loads instantly from cache without additional network latency.

As noted by DebugBear's analysis of the Speculation Rules API, prefetching works best when targeting high-probability navigation paths, such as product pages users frequently visit after browsing categories or checkout pages after items are added to cart. This level of optimization is essential for high-converting e-commerce development.

Complete Prefetch Example
1<!-- Prefetch JavaScript for app functionality -->2<link rel="prefetch" href="/js/app-bundle.js">3 4<!-- Prefetch styles for main application -->5<link rel="prefetch" href="/css/main.css">6 7<!-- Prefetch likely next pages -->8<link rel="prefetch" href="/products/category">9<link rel="prefetch" href="/about">10 11<!-- Prefetch critical images -->12<link rel="prefetch" href="/images/hero-product.jpg" as="image">

Speculation Rules API: The Modern Alternative

While <link rel="prefetch"> remains useful, the Speculation Rules API offers a more powerful mechanism using JSON-based rules in a <script type="speculationrules"> element.

Prefetch with Speculation Rules

<script type="speculationrules">
{
 "prefetch": [
 {
 "urls": ["/shop", "/about", "/contact"]
 }
 ]
}
</script>

Dynamic URL Matching

<script type="speculationrules">
{
 "prefetch": [
 {
 "where": {
 "href_matches": "/products/*"
 },
 "eagerness": "moderate"
 }
 ]
}
</script>

This prefetches any URL matching the pattern when users hover over links. The moderate eagerness begins prefetching 200ms after hover, providing a balance between having content ready quickly and avoiding unnecessary downloads for links users only briefly consider.

According to DebugBear's implementation guide, the Speculation Rules API provides significantly more control compared to traditional link prefetch, allowing developers to define complex conditions without modifying HTML structure.

Eagerness Levels

  • immediate: Prefetch starts immediately when the rule is processed
  • moderate: Prefetch starts 200ms after hover (default for URL list rules)
  • conservative: Prefetch starts on click, minimizing wasted bandwidth
  • eager: Currently identical to immediate, designed for future enhancements

For complex applications requiring sophisticated prefetch logic, our AI automation services can help implement intelligent prefetch systems that adapt to user behavior patterns.

Prerendering: Going Beyond Prefetch

The Speculation Rules API also supports prerendering, which downloads the HTML and renders the page in a background context.

<script type="speculationrules">
{
 "prerender": [
 {
 "urls": ["/dashboard", "/profile"]
 }
 ]
}
</script>

Prerendering provides the ultimate navigation experience - when users click, the page activates instantly with no visible loading time. However, it consumes more system resources than prefetching since JavaScript execution and DOM construction occur in the background.

As documented in MDN's speculative loading guide, prerendering is best reserved for high-value pages where instant navigation provides clear user experience benefits.

Combining prerendering with a comprehensive web performance strategy ensures your most important pages deliver exceptional user experiences.

Common Use Cases

E-commerce Product Pages

Preload product pages users are likely to view after browsing categories

Content Sequential Navigation

Prefetch next article in a series or documentation section

Cart and Checkout

Prefetch high-value destinations after users add items to cart

Documentation Sites

Load the next page in a guide as users read the current one

Best Practices and Common Pitfalls

Do

  • Prefetch only high-probability navigation destinations
  • Use moderate eagerness to avoid unnecessary fetches
  • Combine prefetch with proper caching headers
  • Test performance impact with real user monitoring tools

Don't

  • Prefetch large files unless extremely likely to be needed
  • Prefetch low-click-rate links
  • Ignore cache headers that block caching
  • Overload with too many prefetch directives

Common Issues

Cache Headers: Cache-Control: no-cache and Cache-Control: no-store prevent prefetch caching. Ensure your server configuration allows caching for prefetched resources.

Browser Support: While Chrome, Edge, and Firefox support prefetch, Safari support is more limited. Always test across target browsers and implement graceful degradation.

Bandwidth Waste: Prefetch consumes bandwidth even if users never navigate to the page. Monitor your analytics to ensure prefetch efforts are reaching pages users actually visit.

Implementing prefetch as part of a comprehensive web performance strategy ensures you achieve the best results without negatively impacting user experience.

Frequently Asked Questions

Need Help Optimizing Your Website?

Our web development team can implement advanced performance optimizations including prefetching, caching strategies, and modern loading techniques.