v158 · webtransport · reliability

Reliability, read across a session's lifetime

The spec pins the lifecycle down precisely: reliability is "pending" from the moment the object is constructed, and only becomes "supports-unreliable" or "reliable-only" when a connection actually establishes. A session that never establishes stays "pending" forever. This page reads the real attribute at each lifecycle moment and timestamps what came back.

Chrome targets these attributes for Chrome 158 behind the WebTransportReliability runtime flag. On an earlier or unflagged build, launch with --enable-blink-features=WebTransportReliability, or flip chrome://flags/#enable-experimental-web-platform-features and relaunch. No HTTP/3 endpoint is reachable from this showcase, so the session attempt below fails at connect — which is exactly what makes the "stays pending" rule observable.

The static half: WebTransport.supportsReliableOnly

This is a static attribute — it lives on the constructor itself and answers for the whole user agent, before any session exists: can this browser run WebTransport over an exclusively reliable (HTTP/2) connection?

'supportsReliableOnly' in WebTransport
…
WebTransport.supportsReliableOnly
…
typeof
…

Reading…

The per-session half: a timestamped reliability timeline

Open a real new WebTransport() attempt against https://127.0.0.1:44443/never (nothing listens there) and sample the attribute at every lifecycle moment the page can reach.

Samples from the most recent attempt
t (ms)lifecycle momenttransport.reliability
No attempt yet — press the button.

code path

const t = new WebTransport("https://127.0.0.1:44443/never");
t.reliability;                 // "pending" — [[Reliability]] starts here

try { await t.ready; } catch {
  // establishment failed: the spec never assigned a mode,
  t.reliability;               // so this is STILL "pending"
}

// Only a session that establishes moves off "pending":
//   HTTP/3 connection  -> "supports-unreliable"
//   HTTP/2 connection  -> "reliable-only"

see also