Or make that LGTM2

/Daniel

On 2026-11-04 17:31, Daniel Bratell wrote:
LGTM1

/Daniel

On Tuesday, 3 November 2026 at 23:21:22 UTC+1 Chromestatus wrote:

    *Contact emails*
    [email protected]

    *Explainer*
    https://github.com/w3c/webtransport/blob/main/explainer.md

    *Specification*
    https://www.w3.org/TR/webtransport/#web-transport-error-interface

    *Design docs*

    https://developer.mozilla.org/en-US/docs/Web/API/WebTransportError
    https://developer.chrome.com/docs/capabilities/web-apis/webtransport

    *Summary*
    Updates Chromium WebTransportError to match the current
    WebTransport specification. Adds the standard (message, options)
    constructor while preserving the shipped dictionary constructor
    for compatibility; carries the full unsigned-long stream error
    code end to end; and makes WebTransportError structured-clonable
    while preserving its message, source, and nullable error code.
    Serialization is enabled by default behind a writer-side runtime
    kill switch, while decoding remains permanently enabled for
    persisted values.

    *Blink component*
    Blink>Network>WebTransport
    
<https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3ENetwork%3EWebTransport%22>

    *Web Feature ID*
    webtransport <https://webstatus.dev/features/webtransport>

    *Motivation*
    Chromium's shipped WebTransportError implementation predates the
    current WebTransport specification. It accepts a legacy
    dictionary-only constructor, narrows outgoing application stream
    error codes to 8 bits despite the API exposing an unsigned long,
    and does not support the structured serialization required by the
    specification. The change aligns Chromium with the standardized
    API and improves WebTransport interoperability. The legacy
    constructor remains available so existing Chromium applications
    continue to work.

    *Initial public proposal*
    /No information provided/

    *TAG review*
    https://github.com/w3ctag/design-reviews/issues/669

    *TAG review status*
    Not applicable

    *Goals for experimentation*
    None

    *Risks*


    *Interoperability and Compatibility*
    Interoperability risk Low. The constructor,
    WebTransportErrorOptions dictionary, unsigned-long
    streamErrorCode, source attribute, and serialization behavior are
    defined in the W3C WebTransport specification and covered by Web
    Platform Tests. Mozilla implemented the same constructor and
    full-width stream error-code behavior and contributed the relevant
    WPT coverage: https://github.com/web-platform-tests/wpt/pull/63842
    Compatibility risk Low. Chromium's shipped dictionary constructor
    is retained as a compatibility overload, including its existing
    octet clamping and handling of trailing arguments. Existing calls
    therefore continue to work. The intentional behavior changes are
    that application stream error codes above 255 are no longer
    truncated, and structured-cloning a WebTransportError now succeeds
    instead of throwing DataCloneError. Code that deliberately
    depended on either non-standard behavior could observe a difference.

    /Gecko/:
    Shipped/Shipping (https://bugzilla.mozilla.org/show_bug.cgi?id=2009530)

    /WebKit/:
    Shipped/Shipping (https://bugs.webkit.org/show_bug.cgi?id=305224)

    /Web developers/:
    Positive (https://github.com/web-platform-tests/interop/issues/1121) The
    Interop 2026 WebTransport proposal received 28 👍 reactions.
    Developers also reported active WebTransport use and significant
    cross-engine differences.

    /Other signals/:

    *Ergonomics*
    Low. The standard constructor follows familiar Error and
    DOMException patterns: new WebTransportError("message", { source:
    "stream", streamErrorCode: 70000 }); Existing Chromium
    dictionary-style construction remains supported. Structured
    cloning preserves the WebTransportError subtype and its
    WebTransport-specific properties instead of reducing it to a
    generic exception or rejecting it.

    *Activation*
    Low. The standard constructor and full-width stream error-code
    support correct existing non-conforming behavior while preserving
    Chromium's legacy constructor. Structured serialization is newly
    observable behavior. It is controlled by the
    WebTransportErrorSerialization runtime feature, which is enabled
    by default but retained as a writer-side kill switch. The
    deserializer is intentionally always enabled so WebTransportError
    values already stored in IndexedDB or other structured-clone
    storage remain readable if writing is disabled. The implementation
    is covered by focused Blink and Network Service tests and the
    Mozilla Web Platform Tests.

    *Security*
    Low. The change does not grant additional network access, expose
    new server or user information, or weaken WebTransport's
    secure-context requirement. Structured cloning copies only the
    WebTransportError subtype, DOMString message, source enum, and
    nullable unsigned 32-bit stream error code. The versioned decoder
    validates the format version, enum discriminants, presence flags,
    string code units, and payload completeness before constructing an
    object.

    *WebView application risks*

    Does this intent deprecate or change behavior of existing APIs,
    such that it has potentially high risk for Android WebView-based
    applications?

    Low risk. This aligns the existing WebTransportError API with the
    current specification. Existing error values from 0–255 retain
    identical behavior, the legacy constructor remains supported, and
    ordinary creation, throwing, and catching are unchanged.
    Structured cloning changes from throwing DataCloneError to
    succeeding. Serialization writes are protected by a kill switch,
    while the reader remains enabled for compatibility with previously
    persisted data.


    *Debuggability*
    No feature-specific DevTools support is required. Developers can
    inspect WebTransportError.name, message, source, and
    streamErrorCode in the DevTools Console. Existing WebTransport
    diagnostics, NetLog, Network Service logging, and QUIC logging
    remain available for tracing the underlying stream error.

    *Will this feature be supported on all six Blink platforms
    (Windows, Mac, Linux, ChromeOS, Android, and Android WebView)?*
    Yes

    *Is this feature fully tested by web-platform-tests
    
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?*
    Yes
    
https://wpt.fyi/results/webtransport/idlharness.https.sub.any.html?label=experimental&label=master&aligned
    
<https://wpt.fyi/results/webtransport/idlharness.https.sub.any.html?label=experimental&label=master&aligned>

    *DevTrial instructions*
    https://developer.mozilla.org/en-US/docs/Web/API/WebTransportError#examples

    *Flag name on about://flags*
    enable-experimental-web-platform-features

    *Finch feature name*
    WebTransportErrorSerialization

    *Non-finch justification*
    Ships enabled to 100%. The runtime feature is retained as a
    serialization kill switch, not for a gradual Finch experiment.

    *Rollout plan*
    Will ship enabled for all users

    *Requires code in //chrome?*
    False

    *Tracking bug*
    https://issues.chromium.org/issues/577073049

    *Measurement*
    A Blink UseCounter will measure use of Chromium's legacy
    dictionary WebTransportError constructor so that its compatibility
    impact can be evaluated before any future deprecation. The
    standardized constructor, uint32 stream error-code propagation,
    and serialization behavior are validated through WPT and Chromium
    integration tests. No dedicated UMA metric is planned for
    serialization because it is a deterministic structured-clone
    capability and does not change network policy or resource allocation.

    *Availability expectation*
    Firefox has implemented the aligned WebTransportError API,
    including structured serialization. WebKit supports WebTransport
    and has landed the updated constructor and stream error-code
    behavior, although WebTransportError-specific structured
    serialization has not yet been confirmed. Remaining
    interoperability is being tracked through Interop 2026.

    *Adoption expectation*
    Existing WebTransport applications benefit automatically from the
    corrected constructor and full-width stream error codes.
    Applications using workers, postMessage(), structuredClone(), or
    persistent structured-clone storage can propagate
    WebTransportError values without custom conversion. No migration
    is required for existing users

    *Adoption plan*
    Ship the standards-aligned behavior by default, maintain Web
    Platform Test coverage, and track cross-browser implementation
    through the Interop 2026 WebTransport effort. This is primarily a
    compatibility and interoperability correction, so no separate
    developer migration campaign is necessary.

    *Estimated milestones*
    Shipping on desktop         159
    DevTrial on desktop         159
    Shipping on Android         159
    DevTrial on Android         159
    Shipping on WebView         159



    *Anticipated spec changes*

    Open questions about a feature may be a source of future web
    compat or interop issues. Please list open issues (e.g. links to
    known github issues in the project for the feature specification)
    whose resolution may introduce web compat/interop risk (e.g.,
    changing to naming or structure of the API in a
    non-backward-compatible way).

    None anticipated. This implements the current WebTransport
    specification rather than introducing a new API design. No known
    open specification issues are expected to require incompatible
    changes to this API.

    *Link to entry on the Chrome Platform Status*
    https://chromestatus.com/feature/5158277221580800?gate=5546593351761920

    This intent message was generated by Chrome Platform Status
    <https://chromestatus.com>.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/94ecf84c-bd7a-4689-b9f5-d5673c08d177n%40chromium.org <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/94ecf84c-bd7a-4689-b9f5-d5673c08d177n%40chromium.org?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/f4bc231a-04df-4d8f-a4ea-4255b2ffb74e%40gmail.com.

Reply via email to