LGTM3

On 10/28/26 5:20 a.m., Chris Harrelson wrote:
LGTM2

On Tue, Oct 27, 2026 at 7:03 PM Alex Russell <[email protected]> wrote:

    LGTM1; love to see these practical additions!

    On Wednesday, October 21, 2026 at 6:31:37 PM UTC-7 Chromestatus wrote:

        *Contact emails*
        [email protected]

        *Explainer*
        https://github.com/w3c/webtransport/issues/372
        https://github.com/w3c/webtransport/pull/395

        *Specification*
        https://w3c.github.io/webtransport/#webtransportreceivestream

        *Summary*
        Adds the standardized WebTransportReceiveStream interface, a
        ReadableStream subclass used for incoming unidirectional
        streams and the readable side of bidirectional streams. Its
        getStats() method returns per-stream byte counters:
        bytesReceived reports bytes received from the network, while
        bytesRead reports bytes delivered to the application.

        *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*
        Incoming WebTransport streams have historically been exposed
        as generic ReadableStream objects in Chromium. The
        WebTransport specification defines a dedicated
        WebTransportReceiveStream subclass with stream-specific
        statistics. Applications that receive large or
        latency-sensitive streams need to distinguish bytes received
        by the browser from bytes actually consumed by JavaScript.
        This helps diagnose application backpressure, buffering, and
        slow-consumer behavior. Exposing the standardized subclass
        also aligns the runtime type of incoming streams with the
        WebTransport specification and other browser engines.

        *Initial public proposal*
        /No information provided/

        *TAG review*
        /No information provided/

        *TAG review status*
        Not applicable

        *Goals for experimentation*
        None

        *Risks*


        *Interoperability and Compatibility*
        Enabling this feature changes incoming unidirectional streams
        and the readable side of bidirectional streams from plain
        ReadableStream  objects to WebTransportReceiveStream objects.
        Reading remains compatible, and the objects remain instanceof
        ReadableStream, but applications that compare the exact
        constructor or prototype may observe a change. Firefox and
        Safari already expose WebTransportReceiveStream, so this
        aligns Chrome’s stream type with those browsers.

        /Gecko/: Under
        consideration 
(https://searchfox.org/mozilla-central/source/dom/webidl/WebTransportSendReceiveStream.webidl)
 Partial
        implementation. Firefox ships WebTransportReceiveStream and
        exposes getStats(), but getStats() currently rejects with
        NotSupportedError, so receive stream statistics are not
        implemented. Implementation
        
https://searchfox.org/mozilla-central/source/dom/webtransport/api/WebTransportReceiveStream.cpp

        /WebKit/:
        Shipped/Shipping (https://commits.webkit.org/300850@main) 
WebKit-7624.1.16
        implements WebTransportReceiveStream and pipes real
        receive-stream statistics through WebCore and the network
        process. WebTransport shipped in Safari 26.4. Implementation -
        
https://github.com/WebKit/WebKit/blob/WebKit-7624.1.16/Source/WebCore/Modules/webtransport/WebTransportReceiveStream.cpp#L54-L65


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

        /Other signals/:

        *Ergonomics*
        getStats() asynchronously returns a snapshot with
        bytesReceived and bytesRead. bytesRead is expected to be less
        than or equal to bytesReceived. Chromium preserves final
        counters when streams finish, are reset or cancelled, or when
        the Mojo connection disconnects. The interface is not
        constructible directly; applications obtain it from
        incomingUnidirectionalStreams or from the readable side of a
        bidirectional stream. Chromium's IDL currently types
        WebTransportBidirectionalStream.readable as ReadableStream
        because Blink cannot conditionally change an IDL attribute
        type behind a runtime flag, although the returned object is a
        WebTransportReceiveStream when the feature is enabled.

        *Activation*
        Activation is automatic for sites using incoming WebTransport
        streams; no server change or opt-in is required. Existing code
        that treats these objects as ReadableStream continues to work
        because WebTransportReceiveStream is a subclass. The runtime
        type and prototype are observably different, so code that
        relies on an exact ReadableStream constructor or prototype
        could behave differently. Feature detection using "getStats"
        in stream is recommended.

        *Security*
        The API adds no network capability and exposes no peer
        address, credentials, or payload contents. It reports byte
        counters for a stream already available to the calling origin.
        These values reveal only the amount of data received by the
        browser and consumed by that application.

        *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. This is an additive API on existing WebTransport streams
        and does not change connection establishment or network
        behavior. WebView code that does not inspect the stream's
        exact runtime type is unaffected.


        *Debuggability*
        Developers can inspect incoming streams and call getStats()
        from the DevTools Console. The returned bytesReceived and
        bytesRead values help distinguish network delivery from
        application consumption. DevTools does not currently provide a
        dedicated per-WebTransport-stream statistics UI.

        *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/receive-stream-stats.https.any.html

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

        *Finch feature name*
        WebTransportReceiveStream

        *Rollout plan*
        Will ship enabled for all users

        *Requires code in //chrome?*
        False

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

        *Availability expectation*
        The interface is defined in the W3C WebTransport
        specification. WebKit implements WebTransportReceiveStream and
        real receive-stream statistics. Firefox exposes
        WebTransportReceiveStream, but its getStats() implementation
        currently rejects with NotSupportedError. Implementations are
        expected to converge through the Interop 2026 WebTransport
        focus area.

        *Adoption expectation*
        Expected to be adopted by WebTransport applications that
        monitor per stream throughput, buffering, or slow-consumer
        behavior. Code that only reads from incoming streams does not
        need to change.

        *Adoption plan*
        Adoption is expected to occur organically through WebTransport
        documentation, examples, and client library support.
        Developers can progressively enhance existing code by
        feature-detecting getStats().

        *Non-OSS dependencies*

        Does the feature depend on any code or APIs outside the
        Chromium open source repository and its open-source
        dependencies to function?

        No

        *Estimated milestones*
        Shipping on desktop     158
        DevTrial on desktop     155
        Shipping on Android     158
        DevTrial on Android     155
        Shipping on WebView     158



        *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 known for the WebTransportReceiveStream interface or the
        bytesReceived and bytesRead members.

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

        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/ca305a97-1ac6-4382-843c-47b096efdc98n%40chromium.org
    
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/ca305a97-1ac6-4382-843c-47b096efdc98n%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/CAOMQ%2Bw_Nw-XvTrHSFQZ2mD9Sb9m47Hbt67iJ1XdhrWfFo0igtg%40mail.gmail.com <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOMQ%2Bw_Nw-XvTrHSFQZ2mD9Sb9m47Hbt67iJ1XdhrWfFo0igtg%40mail.gmail.com?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/a5197d88-08b4-40cc-a534-8cbf468b2c90%40chromium.org.

Reply via email to