Visitar URL original
Speculation rules · Issue #186 · web-platform-dx/developer-signals · GitHub
Skip to content

Speculation rules #186

Open
Open

Description

@github-actions

This GitHub issue is for collecting web developer signals for Speculation rules.

Speculation rules are hints to the browser to proactively download pages in the background so they appear instantly when the user navigates to them.

Browser support

chromeavailable edgeavailable firefoxunavailable safariunavailable
  • Chrome 109 (Jan 10, 2023)
  • Chrome Android 109 (Jan 10, 2023)
  • Edge 109 (Jan 12, 2023)
  • Firefox: not supported
  • Firefox for Android: not supported
  • Safari: not supported
  • Safari on iOS: not supported

Give us feedback

If you're pressed for time, but you want this feature to be available in all browsers, please give this issue a thumbs up 👍 reaction.

However, a much better guide for us is to know how you'd use this feature, and what you're having to do in the meantime. This helps us judge the priority versus other features.

Copy the template below in a comment, and add the details that matter to you.

## What I want to do with this feature

<!-- Add your specific use-cases, even if they seem obvious to you. -->

## What I'm having to do in the meantime

<!--
Are you having to use another feature instead, a polyfill, or is it blocking you completely?
Why are the alternatives worse than using this feature?
-->

All comments are expected to adhere to the Code of Conduct.

Learn more

You can learn more about this feature here:

Activity

  1. akgit18 commented on Apr 8, 2026

    @akgit18

    What I want to do with this feature

    My company has a web app in which users can create, edit, and save documents. The app's landing page is the documents list, from which users can open their documents in a proprietary editor in a new tab.

    The editor has many features, so it loads and evaluates several megabytes of assets. Even with request & bytecode caching, loading and evaluating assets is pretty slow.

    With the Speculation Rules API (specifically prerendering), I can start asset load and evaluation before a user opens their document, and then use the Broadcast Channel API to tell the prerendered page what document to open.

    What I'm having to do in the meantime

    We have tried to implement an SPA transition in which the documents list switches into the selected document (and the back button can switch back to the documents list). However, many users did not like losing their documents list tab.

    So instead, we just have to let the users of non-Chromium browsers endure slower document loads.

  2. Maferep commented on Aug 18, 2026

    @Maferep

    What I want to do with this feature

    Intelligently prefetch pages using my existing, simple Rails-based stack without cumbersome SPA/ frontend framework dependencies. Unlike the existing prefetch it would be nice to not have to be careful around cache settings in order for this to work.

    What I'm having to do in the meantime

    Traditional prefetch or javascript framework solutions.

  3. TejasviReddyK commented on Sep 4, 2026

    @TejasviReddyK

    What I want to do with this feature

    Improve performance for my web apps without resorting to SPA frameworks. Service Workers and Cache API have come a long way towards making MPA apps comparable to SPAs. Speculation rules will close the gap further while providing an ergonomical API.

    What I'm having to do in the meantime

    I am currently using instant.page. Also evaluating quicklink. Anything to avoid build tool complexity and the inefficiencies of SPAs. A native solution would be great.

  4. Waleed-abdullah commented on Oct 14, 2026

    @Waleed-abdullah

    What I want to do with this feature

    My company's website Imagine.art is made up of several independently deployed Next.js apps served from one origin using Next.js Multi-Zones: a host app rewrites routes for each zone. Inside a zone/Next.js app, <Link> prefetches the next page's RSC payload, so navigation is instant. Between zones that isn't possible. Every switch is a full document navigation that goes through the host proxy, the target zone's middleware and a server render.

    We use the Speculation Rules API to close that gap:

    • Document rules with href_matches prefetch each zone's root page as soon as a page links to it (immediate), and deeper zone pages on hover (moderate).
    • Dynamically inserted list rules cover platform switchers that navigate with window.location.assign, where there's no <a> to match.
    • Sec-Purpose: prefetch lets our middleware refuse prefetches that would refresh a session or rotate a single-use refresh token, so prefetching has no side effects on an authenticated app.

    In Chromium the difference is dramatic. In our dev environment, a cross-zone navigation served from the prefetch gets its first byte in a few milliseconds and reaches DOMContentLoaded in about 60 ms, versus 2–4 s for the same navigation without it.

    What I'm having to do in the meantime

    Safari and Firefox users get the full, unprefetched navigation. The alternatives we evaluated don't fit:

    • <link rel="prefetch">: our zone pages are personalized and dynamically rendered, so Next.js sends Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate. The prefetched document can't be stored in the HTTP cache and is discarded. Safari also doesn't support rel="prefetch" by default.
    • A service worker: a worker scoped to / would sit in front of every request for all zones, which different teams own and deploy independently. Caching personalized HTML in it also means building our own invalidation for logout and account switches. That's a lot of risk to recreate what the browser's prefetch cache already does safely.

    The Speculation Rules API fits this use case in the best way

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions