CHAPTER 10 – How HTML Works
Checking engine…

10.11 — The Living Standard Workflow & Modern Evolution

The web does not have versions. It evolves continuously through the WHATWG Living Standard. New features pass through a rigorous lifecycle of proposal, implementation, and testing before they become stable. As an engineer, you must understand this workflow and use feature detection and progressive enhancement to build applications that thrive on a constantly shifting platform.

Diagram of the Living Standard lifecycle: proposal, incubation, implementation, specification, convergence
Figure 10.41: The WHATWG Living Standard lifecycle – features are born in implementation, not in abstract specification.

The Rise of the Living Standard

The traditional W3C model defined HTML versions like HTML4 and XHTML as fixed snapshots. This approach failed: committees debated features without real‑world code, leading to divergent browser implementations and a fractured web.

In 2004, browser engineers formed the WHATWG and established a radical principle: HTML has no version number. Instead, the Living Standard is a continuously updated specification that reflects the actual, running code in browsers. The standard follows the implementation, not the other way around.

Diagram of a feature lifecycle: Proposal → Incubation (WICG) → Experimental Implementation → Specification → Convergence (WPT)
Figure 10.42: A feature’s journey from idea to stable standard requires multiple interoperable implementations.

The Feature Lifecycle

  1. Proposal & Incubation – Engineers identify a platform gap and submit an explainer to the Web Incubator Community Group (WICG). Early discussion shapes the API shape.
  2. Experimental Implementation – Browser teams (Chromium, WebKit, Gecko) prototype the feature in their engine’s source code, often behind a flag. They map new C++ node classes, update the tokenizer, and expose JavaScript bindings.
  3. Specification Refinement – The standard text is updated continuously to match the implementations. Edge cases discovered during coding are fed back into the spec.
  4. Interoperability & Convergence – Only when multiple engines produce identical behaviour for the feature does it graduate from “draft” to “standard.” This convergence is verified by Web Platform Tests (WPT).
Diagram showing browser release channels (Nightly, Beta, Stable) and the WPT test suite running against all engines
Figure 10.43: Web Platform Tests (WPT) run continuously across all browser engines to enforce specification compliance.

Web Platform Tests – The Convergence Enforcer

Web Platform Tests is a massive, shared test suite maintained by all browser vendors. It contains millions of tests that verify:

  • HTML parser tokenization and error recovery produce identical DOM trees.
  • DOM interface inheritance chains match the specification.
  • Layout and paint operations yield consistent pixel results.

Every build of every browser engine runs the WPT suite. A feature cannot ship to stable without passing these tests, guaranteeing a baseline of interoperability.

Contrast: user-agent sniffing (fragile guess) vs feature detection (direct runtime check)
Figure 10.44: Feature detection queries the live runtime; user‑agent sniffing makes fragile assumptions about browser identity.

User‑Agent Sniffing vs. Feature Detection

User‑Agent sniffing reads navigator.userAgent and tries to deduce what the browser supports. It is a legacy anti‑pattern: strings can be spoofed, legacy browsers cannot predict future features, and engine internals change without updating the identifier.

Feature detection directly queries the runtime to verify if a capability exists before using it. This is the only reliable, future‑proof strategy.

// ❌ Sniffing – never do this
if (navigator.userAgent.includes('Chrome')) { ... }

// ✔ Feature detection in JavaScript
if ('showModal' in HTMLDialogElement.prototype) {
    dialog.showModal();
} else {
    // Fallback polyfill
}
Diagram of progressive enhancement: a solid baseline, then layers of advanced features added via feature queries
Figure 10.45: Progressive enhancement – deliver a reliable baseline, then enhance with modern capabilities that are supported.

CSS Feature Queries & Progressive Enhancement

The same defensive strategy applies in CSS using @supports:

/* Baseline layout */
.card { display: block; }

/* Enhanced layout for modern engines */
@supports (display: grid) {
    .card { display: grid; }
}

The style engine evaluates its own capabilities. If it understands grid, the advanced rules apply; if not, the element gracefully falls back to block layout. The browser’s fault‑tolerant CSS parser silently ignores unknown properties, so there’s never a crash.

This is progressive enhancement: build a solid, accessible baseline using fundamental HTML and CSS, then layer on advanced features conditionally. Every user gets a working experience; capable engines get the best possible version.

TAKEAWAY

The web is not a static platform—it’s a living organism. The WHATWG Living Standard evolves through implementation and testing, not abstract committee votes. Use Web Platform Tests to gauge interoperability. Abandon user‑agent sniffing; adopt rigorous feature detection in both JavaScript and CSS. Deliver a robust baseline with progressive enhancement. By mastering this evolutionary workflow, you become a true systems engineer, building applications that thrive on the ever‑shifting foundation of the open web.

Checking engine…