Contact emails
[email protected]

Explainer
https://github.com/explainers-by-googlers/promisify-scroll


Specification
https://github.com/w3c/csswg-drafts/issues/1562


Design docs

https://github.com/explainers-by-googlers/promisify-scroll


Summary
Web developers currently have no way to know when a programmatic smooth-scroll 
has completed. This feature provides a solution to the problem: make the 
programmatic scroll methods return Promise objects that get resolved on scroll 
completion.


Blink component
Blink>Scroll


Web Feature ID
Missing feature


Motivation
We have multiple scroll methods available through both Element and Window 
interfaces. These methods return immediately with the value undefined, which 
was fine during the early days of the web when scroll was assumed to be 
instant. This behavior no longer seems adequate from a web developer's 
perspective today: there is widespread support for smooth-scroll (see 
browser_compatibility [1] for the CSS property), and it is not easy for the 
developers to determine when a particular call for a smooth-scroll has 
completed. This feature makes the programmatic scroll methods return Promise 
objects that get resolved on scroll completion. [1] 
https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior#browser_compatibility


Initial public proposal
No information provided


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


TAG review status
Pending


Goals for experimentation
None


Risks




Interoperability and Compatibility
Interop: Given the developers' support in the github discussion and the easy 
resolution in the CSWWG, we expect other major browsers to implement this 
feature in near future. Compat: To maintain the backward compatibility for the 
scroll methods, we would avoid rejecting the returned Promises (as much as 
possible). This is because unhandled Promise rejections are treated as 
exceptions, which could fail any JS callers that assume that those methods 
succeed unconditionally.

Gecko: No signal (https://github.com/mozilla/standards-positions/issues/1379) 
Spec PR was approved by Mozilla: https://github.com/w3c/csswg-drafts/pull/12355

WebKit: No signal (https://github.com/WebKit/standards-positions/issues/639) 
WebKit positive in a follow-up resolution: 
https://github.com/w3c/csswg-drafts/issues/12495#issuecomment-4040657058

Web developers: Positive (https://github.com/w3c/csswg-drafts/issues/1562)

Other signals:


Security
None.


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?
No information provided



Debuggability
Existing DevTools functionalities sufficiently cover this features: the return 
values of element/window scroll methods are switched from undefined to 
Promises, and the returned Promises can be inspected easily on console.


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?
Yes
https://wpt.fyi/results/css/cssom-view?label=master&label=experimental&aligned&q=-scroll-arguments.html%20or%20-scroll-promises.html%20or%20-scroll-promise-interruption.html


Flag name on about://flags
No information provided


Finch feature name
ProgrammaticScrollPromise


Rollout plan
Will ship enabled for all users


Requires code in //chrome?
False


Tracking bug
https://issues.chromium.org/41406914


Estimated milestones


Shipping on desktop 149

Shipping on Android 149

Shipping on WebView 149




Anticipated spec changes

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


Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5082138340491264?gate=5098794827644928


Links to previous Intent discussions
Intent to Prototype: 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAB0cuO7QpgC2bUgHk6ZWLsNjaR%3DLb-O%3DA5hiOF5vgJicbR9igQ%40mail.gmail.com



This intent message was generated by Chrome Platform Status.

-- 
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/69cc2140.2b0a0220.5f79f.04fa.GAE%40google.com.

Reply via email to