v158 · webtransport · reliability
Readonly, static, and the unknown-value edge
Two attributes, two different homes. reliability is a readonly accessor on WebTransport.prototype — a getter with no setter, so a strict-mode write must throw. supportsReliableOnly is static: it lives on the constructor object and never appears on instances. This page dumps the real property descriptors and runs the writes that prove each claim.
Chrome targets this for Chrome 158 behind WebTransportReliability (--enable-blink-features=WebTransportReliability, or chrome://flags/#enable-experimental-web-platform-features). On a build without the attributes, every panel below reports the missing surface explicitly instead of inventing descriptors.
Property descriptors, read from the live objects
| property | found on | shape | matches the IDL? |
|---|---|---|---|
| Press the button. | |||
The writes that must fail
Three real assignments, run in strict mode against a real transport object. On a supporting build the first two throw TypeError (readonly accessor, no setter); the third proves statics never reach instances.
| assignment | result on this build |
|---|---|
| Press the button. | |
Three engines, three correct answers
Recorded from the standards-position research on the ChromeStatus entry (October 2025–2026) — this table is documentation, not a live cross-browser probe. The "this browser, live" column underneath it is the only live data on this panel.
| engine | reliability | supportsReliableOnly |
|---|---|---|
| Chromium (158, recorded) | yes — established sessions report "supports-unreliable" (HTTP/3 only) | yes — returns false (no HTTP/2 fallback) |
| Firefox (recorded) | yes | no — static not exposed |
| WebKit (recorded) | yes | yes — returns true (its WebTransport is reliable-only today) |
| this browser, live | … | … |
code path
// Readonly accessor: getter, no setter, on the prototype.
const d = Object.getOwnPropertyDescriptor(WebTransport.prototype, "reliability");
// d → { get: f, set: undefined, enumerable: true, configurable: true }
"use strict";
transport.reliability = "supports-unreliable"; // TypeError — no setter
// Static: on the constructor, never on instances.
Object.getOwnPropertyDescriptor(WebTransport, "supportsReliableOnly"); // accessor
transport.supportsReliableOnly; // undefined — statics don't inherit