Where Browsers Differ · stage 06

Prefixes and their legacy

Vendor prefixes were meant to be temporary experiments. The web made them permanent.

Stage 06 of six/Where Browsers Differ, piece 2 of 3/Short piece/Next: Testing what you cannot see

A code editor on screen showing a block of prefixed CSS declarations, close
Stage 06 · Where Browsers DifferPrefixes introduced — early 2000s, during rapid CSS experimentation by multiple engines

The intention and the wreckage

Browser makers once faced a genuine problem: they wanted to ship experimental CSS properties before the specification was finalised, without breaking anything if the final form turned out different. The solution was namespaced prefixes — -webkit-, -moz-, -ms-, -o- — each property wearing a vendor's badge until it graduated to the unprefixed form.

The logic was sound. In practice, authors shipped the prefixed version in production and never went back. When a feature stabilised and browsers dropped the prefix, those properties quietly stopped working — except that enough sites depended on the prefixed form that browsers were forced to keep reading it anyway. -webkit-transform became immortal not because it was ever standardised but because removing it would have broken real pages, and nothing on the web is ever truly removed.

The situation grew stranger when WebKit's market share on mobile became dominant enough that competing engines had to parse -webkit- prefixes just to render popular sites correctly. Mozilla and Microsoft, on rival engines, were effectively implementing someone else's vendor prefix. The prefix, which was supposed to signal "engine-specific experiment," had become a de facto standard — but with no governance and no clear specification.

Chronology of the mechanism

In order
  1. Prefixes introducedearly 2000s, during rapid CSS experimentation by multiple engines
  2. Mobile WebKit dominancearound the time of early-generation smartphones, mid-to-late 2000s
  3. Rival engines begin parsing -webkit- prefixesacknowledged publicly by Mozilla and others circa early 2010s
  4. W3C/CSS Working Group deprecates the prefix mechanismformal position established during the 2010s
  5. Replacement: per-browser feature flags in developer settingscurrent practice

The W3C and browser makers eventually acknowledged the experiment had failed. The declared successor is the browser conformance suite model combined with feature flags: experimental properties now live behind a developer-controlled flag in about:flags or equivalent, invisible to ordinary users and absent from production stylesheets. When consensus is reached, the unprefixed property ships.

The prefixed properties themselves are in an awkward half-life. Browsers continue to honour the most widely used ones for compatibility while never adding new ones. What remains is the lesson: a system designed for impermanence met the web's deep bias toward accumulation, and accumulation won.

Two monitors side by side showing the same page rendered slightly differently, photographed square on
Also in Where Browsers DifferSpecifications leave gaps, and each engine fills them differently. The same spec, two results
Stage 06

In practice, authors shipped the prefixed version in production and never went back.

A terminal window close enough to read a request and its response headers
Stage 06 · Where Browsers Differ The stage in a room: vendor prefixes were meant to be temporary and became permanent.