This is indeed exciting!!

How do you imagine developers adopting this before support is ubiquitous? 
Is there a "standard" polyfill developers are expected to use? Some 
feature-detection based patterns? Something else?

On Tuesday, February 25, 2025 at 6:17:01 AM UTC+1 Domenic Denicola wrote:

> Very exciting!
>
> On Sat, Feb 22, 2025 at 6:25 AM Chromestatus <
> ad...@cr-status.appspotmail.com> wrote:
>
>> Contact emails d...@chromium.org 
>>
>> Explainer https://github.com/WICG/observable 
>>
>> Specification https://wicg.github.io/observable 
>>
>> Summary 
>>
>> Observables are a popular reactive-programming paradigm to handle an 
>> asynchronous stream of push-based events. They can be thought of as 
>> Promises but for multiple events, and aim to do what Promises did for 
>> callbacks/nesting. That is, they allow ergonomic event handling by 
>> providing an Observable object that represents the asynchronous flow of 
>> events. You can "subscribe" to this object to receive events as they come 
>> in, and call any of its operators/combinators to declaratively describe the 
>> flow of transformations through which events go. This is in contrast with 
>> the imperative version, which often requires complicated nesting with 
>> things like `addEventListener()`. For more on this, see the examples in the 
>> explainer. The big selling point for native Observables is their 
>> integration with EventTarget — its proposed `when()` method that returns an 
>> Observable which is a "better" `addEventListener()`. See 
>> https://github.com/WICG/observable and 
>> https://twitter.com/domfarolino/status/1684921351004430336. See the spec 
>> https://wicg.github.io/observable/ and the design doc: 
>> https://docs.google.com/document/d/1NEobxgiQO-fTSocxJBqcOOOVZRmXcTFg9Iqrhebb7bg/edit
>> .
>>
>>
>> Blink component Blink>DOM 
>> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EDOM%22> 
>>
>> TAG review https://github.com/w3ctag/design-reviews/issues/902 
>>
>> TAG review status Issues addressed 
>>
>> Risks 
>>
>>
>> Interoperability and Compatibility 
>>
>> Initially we proposed adding the `.on()` method to EventTarget, which was 
>> found to conflict with userland versions of the same method. The conflict 
>> was found to be too significant to justify shipping our native version of 
>> this API (see https://github.com/WICG/observable/issues/39) so we 
>> renamed it to `.when()` and we strongly believe this resolves any naming 
>> collision issues after searching through public libraries and performing 
>> developer outreach on X. See the discussion on that issue.
>>
>>
>> *Gecko*: No signal (
>> https://github.com/mozilla/standards-positions/issues/945) 
>>
>> *WebKit*: Positive (
>> https://github.com/WebKit/standards-positions/issues/292) 
>>
>> *Web developers*: Strongly positive (
>> https://twitter.com/domfarolino/status/1684921351004430336) Also see 
>> https://foolip.github.io/spec-reactions/ and the developer interest in 
>> the original WHATWG DOM issue. 
>>
>> *Other signals*: We've gotten good design feedback from TC39 members on 
>> many issues which we have implemented accordingly. This has led to positive 
>> feedback from Node.js, and luke-warm non-negative feedback from WinterCG. 
>> See https://github.com/WICG/observable/issues/93; specifically 
>> https://github.com/nodejs/standards-positions/issues/1 & 
>> https://github.com/WICG/observable/issues/30 for Node, and 
>> https://github.com/wintercg/proposal-minimum-common-api/issues/72 for 
>> WinterCG. 
>>
>> 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?
>>
>> None
>>
>>
>> Debuggability 
>>
>> The developer experience of Observables might benefit from 
>> Observable-specific DevTools tracking of events and streams (see 
>> https://github.com/WICG/observable/issues/55). It is possible that the 
>> existing DevTools work that assists asynchronous task tracking and 
>> callstack tagging may be sufficient though. At the moment, however, our 
>> effort is focused on the platform implementation of Observables.
>>
>>
>> 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 
>>
>> See https://wpt.fyi/results/dom/observable/tentative.
>>
>>
>> Flag name on about://flags observable-api 
>>
>> Finch feature name ObservableAPI 
>>
>> Requires code in //chrome? False 
>>
>> Tracking bug 
>> https://bugs.chromium.org/p/chromium/issues/detail?id=1485981 
>>
>> Estimated milestones 
>> Shipping on desktop 135 
>>
>> 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).
>> Issues with the "possible future enhancement" label [1] track possible 
>> changes to the feature that may come after we ship the initial API. One 
>> issue (https://github.com/WICG/observable/issues/200) is identified to 
>> have behavior changes that theoretically pose a compat risk, but only for 
>> developers that subclass the API. The behavior change proposed puts the 
>> implementation more inline with what subclass users want: the operators 
>> that return native Observable objects would instead return objects of 
>> `this.constructor` type, as to return instances of the subclass that the 
>> operators are called on. This is how JS built-ins like `Array` work, 
>> however, no other web platform feature works like this and it likely 
>> requires non-trivial Web IDL support. [1]: 
>> https://github.com/WICG/observable/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22possible%20future%20enhancement%22
>
>
> https://github.com/WICG/observable/issues/177 looks like it might also 
> have compat impacts, right? Albeit only in error cases. (In fact, in cases 
> where there are two errors at once.)
>
> Do you think it might be worth making that change before shipping?
>  
>
>>
>>
>> Link to entry on the Chrome Platform Status 
>> https://chromestatus.com/feature/5154593776599040?gate=5141110901178368 
>>
>> Links to previous Intent discussions Intent to Prototype: 
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAP-uykBH1%3DUoLN6%3DBRSEZE%2B1iUq6UdcTpo3qtTQ5T%3DSRxwnu5Q%40mail.gmail.com
>>  
>>
>>
>> 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 blink-dev+unsubscr...@chromium.org.
>> To view this discussion visit 
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/67b8ef25.2b0a0220.38f609.0192.GAE%40google.com
>>  
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/67b8ef25.2b0a0220.38f609.0192.GAE%40google.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 blink-dev+unsubscr...@chromium.org.
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/73aa2f6e-59c0-48d8-ac1b-dc10d0d4ce1fn%40chromium.org.

Reply via email to