mdn / mdn/browser-compat-data

Verify and consolidate feature flags across BCD

Open
#30,010 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

browser:multiple early features
Dominant language
JSON
Stars
5.8k
Forks
2.6k
Avg merge
1d 21h
Merged PRs (30d)
186

Description

Verify and consolidate feature flags across BCD

Summary

A per-browser inventory of every flags entry in BCD shows that some flag statements diverge only in casing, value_to_set, or name spelling while pointing at the same underlying flag. The inventory also surfaces flags that may no longer exist in current browser builds.

This issue tracks two things:

  1. Verify that each flag is still valid in the browser it's attributed to (flags get renamed or removed between releases).
  2. Consolidate statements that refer to the same flag but were entered inconsistently, so a single flag has a single canonical name + value_to_set.

Each item below lists the earliest observed version_added and the number of features using the flag (blast radius). Check off a flag once it has been verified and, where applicable, consolidated.

Motivation

Ensure flag data is accurate and internally consistent, so that tools consuming BCD (and readers of MDN's "requires a flag" notes) get one unambiguous instruction per flag instead of several spellings of the same one.


Chrome

  • #enable-experimental-web-platform-features (from 37, ~90 features) — see note below
  • #enable-generic-sensor-extra-classes = Enabled (from 56, 12 features)
  • #enable-jxl-image-format = Enabled (from 145, 1 feature) — JPEG XL flag was removed from Chromium; verify
  • #extension-apis = Enabled (from 67, 1 feature)
  • #local-network-access-check = Enabled (from 138, 1 feature)
  • #web-machine-learning-neural-network = Enabled (from 112, 125 features)
  • WebAuth (from 67, 1 feature) — no # prefix and an unusual name; verify the real flag name
  • --enable-blink-features=ExperimentalProductivityFeatures (runtime_flag, from 64, 2 features)

[!NOTE]
Only one Chrome flag actually diverges: enable-experimental-web-platform-features appears in ~4 variants spanning ~90 features, differing on the # prefix, presence of a value, and casing (Enabled / enabled / true). Pick one canonical name + value_to_set and apply it everywhere.

Deno

  • --location [url] (runtime_flag, from 1.7, 15 features)
  • --unstable-net (runtime_flag, from 2.2, 38 features)
  • --unstable-webgpu (runtime_flag, from 1.39, 203 features)

Edge

  • #edge-llm-prompt-api-for-phi-mini = Enabled (from 138, 12 features)
  • enable-experimental-web-platform-features = enabled (from 79, 31 features) — missing # and lowercase value; align with the canonical Chrome form

Firefox

  • browser.dom.window.dump.enabled = true (from 1.5, 1 feature)
  • dom.compression_streams.zstd.enabled = true (from 138, 2 features)
  • dom.css_pseudo_element.enabled (from 75, 3 features) — blank value; should be = true
  • dom.headingoffset.enabled = true (preview, 4 features)
  • dom.imagecapture.enabled = true (from 35, 4 features)
  • dom.indexedDB.experimental = true (from 40, 3 features)
  • dom.multiple_import_maps.enabled = true (from 150, 1 feature)
  • dom.payments.request.enabled = true (from 55, 33 features)
  • dom.payments.request.supportedRegions (from 55, ~24 features) — see note below
  • dom.permissions.revoke.enable = true (from 51, 1 feature)
  • dom.scoped-custom-element-registries.enabled = true (from 150, 3 features)
  • dom.screenBrightnessProperty.enabled = true (from 12, 1 feature)
  • dom.screenEnabledProperty.enabled = true (from 12, 1 feature)
  • dom.security.featurePolicy.webidl.enabled = true (from 65, 7 features)
  • dom.select.customizable_select.enabled = true (from 149, 3 features)
  • dom.serviceWorkers.navigationPreload.enabled = true (from 97, 1 feature)
  • dom.shadowdom.referenceTarget.enabled = true (from 144, 4 features)
  • dom.viewTransitions.enabled = true (from 140, 1 feature)
  • dom.vr.enabled = true (from 98, 69 features)
  • dom.vr* (from 39, 7 features) — wildcard placeholder, not a real flag name; reconcile with dom.vr.enabled
  • dom.webnotifications.requireinteraction.enabled = true (from 117, 1 feature)
  • dom.webshare.enabled = true (from 71, 4 features)
  • layout.css.appearance-base.enabled = true (from 149, 3 features)
  • layout.css.attr.enabled = true (from 149, 16 features)
  • layout.css.custom-media.enabled = true (from 146, 2 features)
  • layout.css.element-content-none.enabled (from 91, 1 feature) — blank value; should be = true
  • layout.css.fit-content-function.enabled (from 91, 12 features) — blank value; should be = true
  • layout.css.getBoxQuads.enabled = true (from 31, 3 features)
  • layout.css.heading-selector.enabled = true (preview, 2 features)
  • layout.css.inverted-colors.enabled = true (from 114, 1 feature)
  • layout.css.moz-submit-invalid.enabled = true (from 88, 1 feature)
  • layout.css.prefers-reduced-transparency.enabled = true (from 113, 1 feature)
  • layout.css.scroll-driven-animations.enabled = true (from 152, 2 features)
  • layout.css.text-box.enabled = true (from 149, 5 features)
  • media.mediasource.experimental.enabled = true (from 62, 2 features)
  • media.track.enabled = true (from 33, 27 features)
  • media.webspeech.recognition.enable = true (from 142, 31 features)
  • network.cookie.sameSite.laxByDefault = true (from 69, 1 feature)
  • network.cookie.sameSite.schemeful = true (from 79, 1 feature)
  • network.cors_preflight.authorization_covered_by_wildcard = false (from 115, 1 feature)
  • network.http.idempotencyKey.enabled = true (from 135, 1 feature)
  • security.integrity_policy.stylesheet.enabled = true (from 142, 2 features)

[!NOTE]
dom.payments.request.supportedRegions has two near-identical long-form values, one a typo variant: "comma-delineated" with a missing closing ) (preview, 5 features) vs. "comma-delimited" (from 55, 19 features). Consolidate to one canonical value.

Node.js

  • --inspect (runtime_flag, from 8.0.0, 4 features) — a debugging flag, not a feature flag; verify it correctly gates its features

Safari

  • <select> showPicker() method = Enabled (preview, 1 feature)
  • Canvas Filters = true (from 18, 1 feature)
  • Cookie Store API CookieStoreManager = Enabled (from 18.4, 6 features)
  • CSS font-variant-emoji property = true (from 17.5, 1 feature)
  • LinkPrefetch (from 13.1, 1 feature) — blank value
  • referenceTarget = true (from 26, 4 features)
  • referenceTarget support for aria-owns = true (from 26, 4 features)
  • Shape Detection API = true (from 17, 4 features)
  • SpeculationRules prefetch (from 26.2, 15 features) — blank value
  • useTemporal = 1 (runtime_flag, preview, 1 feature)

[!NOTE]
Safari names mix real pref keys with human-readable prose / Feature-menu labels, and values diverge (Enabled / true / 1). Decide on a consistent convention (real WebKit pref/feature name + consistent value) and apply it across all Safari entries.

Safari on iOS

  • Contact Picker API (from 14.5, 4 features) — blank value and prose name; align with the Safari convention chosen above

Notes

  • The flags linter auto-strips any flag statement carrying version_removed, so removed flags should be deleted rather than annotated.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the BCD flags entries and the flags linter that strips statements carrying version_removed. Verify each listed browser flag against current browser builds, then consolidate duplicate names and values, including the Chrome variants, Firefox supportedRegions values, and Safari conventions. Done means invalid entries are removed and each remaining flag has one verified canonical statement.

Written by the indexing model from the issue text.

Assessment

Tech stack
deno, json, nodejs
Domain
data
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.