Intent to Ship: Programmatic scroll promises

33 views
Skip to first unread message

Chromestatus

unread,
3:32 PM (3 hours ago) 3:32 PM
to blin...@chromium.org, vmp...@chromium.org, mus...@chromium.org
Contact emails
mus...@chromium.org

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 desktop149
Shipping on Android149
Shipping on WebView149


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).

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.
Reply all
Reply to author
Forward
0 new messages