← Chrome 151 reference

v151 · loading · speculation rules

Speculation rules: form_submission field

Not Baseline-tracked · Chrome-only evidence

  • Chrome · enabled by default 151
  • Edge · not separately reported
  • Firefox · no signal
  • Safari · no signal

Not on the Baseline register (no web-features entry at webstatus.dev). Enabled by default in Chrome 151 per the milestone listing (origin trial ran from Chrome 146); the feature detail still says “Proposed” and no public Firefox or Safari position is recorded.

Ordinary prerenders can only be activated by ordinary navigations — a form submission, which carries special state and runs extra checks, could never match one. The form_submission field on a prerender speculation rule tells the browser to prepare the prerender as a form submission, so a real form submission (for example a search form's GET navigation) can activate it.

Availability — listing vs detail

The Chrome 151 milestone listing records this feature Enabled by default, and Chromium's runtime feature PrerenderActivationByFormSubmission is marked stable at trunk (it was an origin trial from Chrome 146). The feature detail, updated 2026-06-16, still reports status text “Proposed” and no public position from Firefox or Safari — so the field should be treated as Chrome-only for now. There is no direct client-side feature-detection API for this JSON member; use progressive enhancement and validate real prerender activation rather than treating script insertion as support proof.

Source: chromestatus.com/feature/5074313831120896; Chromium runtime_enabled_features.json5

at a glance

At a glance
Milestone listingChrome 151 — Enabled by default
Feature detailDesktop 151, status text “Proposed” (updated 2026-06-16); ship stage (intent 5) desktop_first 151; origin trial stage (intent 3) desktop_first 146
SurfaceA JSON field inside <script type="speculationrules"> — not a JavaScript API
Field typeBoolean. The open PR discards prefetch rules that specify it; a non-boolean value discards the individual rule and the user agent may warn in the console.
Runtime flagPrerenderActivationByFormSubmission (status stable at trunk; crbug.com/346555939)
Standards bodyWICG nav-speculation PR #426 (spec-previews diff of prerendering.html)
ChromeStatus5074313831120896 — Speculation rules: form_submission field
Source: chromestatus.com/feature/5074313831120896

Syntax

The field lives inside a prerender rule in a <script type="speculationrules"> block. Per the open PR's spec-preview diff of prerendering.html, the rule parser accepts a form_submission member only when its value is a boolean; for a non-boolean value, the user agent may report a console warning and the individual rule parser returns null. The explainer says the intended form-submission use is restricted to list rules (explicit urls) because document rules match links, not submit buttons. However, the current open PR diff parses the member generically and propagates it through the predicate/document-rule candidate path; it does not visibly add a list-only rejection. Treat that as unresolved proposal text, not a settled parser guarantee.

// Two prerendered candidates: one prepared as a form submission, one ordinary.
// A navigation that matches the parameters activates the matching one.
{
  "prerender": [
    {
      "form_submission": true,
      "urls": ["/expect_form_submission.html"]
    },
    {
      "urls": ["/not_expect_form_submission.html"]
    }
  ]
}
Source: WICG form_submission explainer — example; spec-previews diff — parse a speculation rule
Field contract (per the spec diff + explainer)
AspectContract
Where it livesA member of a prerender speculation rule inside <script type="speculationrules">
Value typeBoolean; a non-boolean value discards the individual rule and may produce a console warning
Rule kindsThe explainer intends list rules (urls) because document rules match links rather than submit buttons. The open PR diff currently propagates the member through its predicate path, so list-only parser enforcement is not yet settled.
Effect when trueThe browser prepares the prerender as a form submission, so a real form-submission navigation can activate it
Activation matchingActivation matches on the navigation type, not only the URL: a record prepared as a form submission is matched only by a form-submission navigation, and a record prepared ordinarily only by an ordinary navigation. The two never substitute for each other, so marking the field on the wrong candidate makes the prerender unusable rather than harmless.
What it does NOT doIt does not trigger the speculation itself — the page decides when to speculate (hover the submit button, pause after typing, or a form-specific point)
EligibilityPreparing as a form submission lets the browser run the form-action/CSP checks up front, avoiding wasted prerenders on ineligible pages
Source: WICG form_submission explainer — proposal & design considerations

Why it exists

Prerendering loads a page before the user navigates so the navigation is instant. But form submissions are special navigations: they carry state ordinary navigations lack, and at least Chrome runs extra checks on them that a prerendered page never went through. So a prerender prepared the ordinary way can never be activated by a form submission — and without an eligibility check, the browser could waste resources prerendering a page CSP would reject anyway (via form-action). Developers asked for this specifically for search-style GET forms (crbug.com/346555939). The proposal addresses both halves: a candidate marked for form submission can run the additional eligibility checks while being prepared, and a later form submission can activate it only if the browser created and retained an eligible prerender and the activation navigation matches.

Prefetch rules are unaffected: prefetch only downloads HTML without starting a navigation, so form navigations already work without this field.

In the proposal's parsing changes, a prefetch rule that does specify form_submission is discarded rather than rejected as a whole rule set — the field is a prerender concept, and a prefetch cannot carry it.

Source: WICG form_submission explainer — problem & motivation; WICG nav-speculation PR #426

Lifecycle and context

Preparing is not activating. Marking a candidate form_submission only prepares the prerender; the candidate is then retained, and activation happens later, if at all, when a navigation arrives that matches the retained record. The explainer is explicit that the proposal “does not add functionality to trigger the speculation”, so a rule that is never matched is never activated.

The proposal's own review records one of these lifecycle questions as not applicable — prerendered pages cannot be kept in BFCache — and answers another factually: speculative loading does not work in disconnected documents. On context, the proposal does not distinguish first-party from third-party use, behaves the same in private browsing, and — because a speculatively loaded page is itself a waste of resources — speculative loads are skipped inside a page that is already prerendering.

Source: WICG form_submission explainer — W3C TAG questionnaire, questions 14, 15, 18 and 19; WICG nav-speculation PR #426 — processing model

Examples

Live example from the Chrome Platform Showcase: build prerender rules with and without the form_submission field and inspect the JSON. Source: Chrome Platform Showcase — syntax builder
// Simple GET search form: decide WHEN to speculate yourself.
// `debounce` is an application helper, omitted here for brevity.
const form = document.querySelector("#search");
let rulesScript;

function speculate() {
  // Build the same URL this simple GET form will submit, including its query.
  const target = new URL(form.action, location.href);
  target.search = new URLSearchParams(new FormData(form));

  rulesScript?.remove(); // replace the old candidate instead of accumulating rules
  rulesScript = document.createElement("script");
  rulesScript.type = "speculationrules";
  rulesScript.textContent = JSON.stringify({
    prerender: [{ form_submission: true, urls: [target.href] }]
  });
  document.head.appendChild(rulesScript);
}

form.querySelector("input").addEventListener("input", debounce(speculate, 300));
// Submission can activate only if an eligible prerender was created, retained,
// and matches the eventual form navigation.
Source: WICG form_submission explainer — example & triggering guidance; chrome.dev prerender GET-form demo

Browser compatibility

There is no browser-compat-data (BCD) entry for this field (BCD's html/elements/script.json covers speculationrules but not form_submission, checked 2026-07-25), so the table below is an interim view built from ChromeStatus ship data and public signals — not from BCD.

Interim compatibility — from ChromeStatus, not BCD
BrowserStatusNotes
Chrome151 (enabled by default listing)Feature detail records desktop 151 and Android 151 with status text “Proposed” (updated 2026-06-16); origin-trial stage began at 146; runtime feature is stable at trunk
EdgeNot separately reportedNo Edge position is recorded on ChromeStatus; no public support evidence (Chromium engine equivalence is not a support commitment)
FirefoxNo signalRecorded on ChromeStatus (ff_views = 5)
SafariNo signalRecorded on ChromeStatus (safari_views = 5)

Web developers: “In development” is recorded on ChromeStatus (web_dev_views = 2).

Source: chromestatus.com/feature/5074313831120896; mdn/browser-compat-data — html/elements/script.json

Security and privacy

The explainer records no new accessibility, privacy or security considerations on top of the existing ones for speculative loads in general, and answers the W3C TAG security and privacy questionnaire: the field exposes no information and deals with no sensitive or personal data, creates no state that persists across browsing sessions and no temporary identifiers, does not expose platform information, does not access device sensors or other devices, does not enable a new script execution or loading mechanism, does not downgrade any default security protection, and works the same in private browsing. The larger Speculation Rules specification carries the Security considerations and Privacy considerations sections that this field inherits.

The eligibility check this field enables is a resource argument rather than a privacy property, and is framed that way in the explainer: preparing the prerender as a form submission lets the browser run the form-action CSP check up front, so a page whose policy would reject the submission is never prerendered. The explainer's security and privacy section records no considerations for the feature beyond those already existing for speculative loads in general, and describes the check only as avoiding wasted resources.

Source: WICG form_submission explainer — accessibility, privacy and security considerations (incl. the TAG questionnaire)

Specifications

Specifications
SpecificationStatus
WICG nav-speculation PR #426 — form_submissionOpen, unmerged proposal (verified 2026-07-25); its spec-preview diff is not published normative text
Speculation RulesWICG draft (incubation) — the base rules syntax this field extends
WICG form_submission explainerExplainer (proposal evidence, not normative text)
Source: spec links recorded on chromestatus.com/feature/5074313831120896

See also