Bug 262287 - Interrupting scroll momentum causes container to not render
Summary: Interrupting scroll momentum causes container to not render
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: Scrolling (show other bugs)
Version: Safari 17
Hardware: iPhone / iPad iOS 17
: P2 Normal
Assignee: Nobody
URL:
Keywords: HasReduction, InRadar
Depends on:
Blocks:
 
Reported: 2023-09-28 01:28 PDT by Joffrey Jaffeux
Modified: 2024-05-16 16:06 PDT (History)
7 users (show)

See Also:


Attachments
video of the bug (183.94 KB, video/quicktime)
2023-09-28 01:28 PDT, Joffrey Jaffeux
no flags Details
video of bug w horizontal snap - chrome 125 (1.32 MB, video/quicktime)
2024-05-16 16:05 PDT, tally
no flags Details
video of bug w horizontal snap - firefox 126 (2.08 MB, video/quicktime)
2024-05-16 16:05 PDT, tally
no flags Details
video of bug w horizontal snap - safari 17 (1013.28 KB, video/quicktime)
2024-05-16 16:06 PDT, tally
no flags Details
video of horizontal snap w smooth scrolling, NO bug - safari 17 (1.37 MB, video/quicktime)
2024-05-16 16:06 PDT, tally
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Joffrey Jaffeux 2023-09-28 01:28:13 PDT
Created attachment 467958 [details]
video of the bug

Hi,

I created a very simple reproduction of this issue with instructions on this codepen:

https://codepen.io/joffreyjaffeux/pen/qBLKOLj

In the wild I have seen the web version of telegram suffering from this exact bug, AFAIK it's been here for a long time and has not been introduced in safari/iOS17, but is still very much present in this version. This is a very common issue for chat like applications.

Attached is a video of the bug you should see when using my demo.

Let me know if you need any more information.
Comment 1 Radar WebKit Bug Importer 2023-09-28 15:18:12 PDT
<rdar://problem/116205365>
Comment 2 tally 2024-05-16 16:04:52 PDT
This also happens on macOS (Safari 17.4.1) when using a trackpad, but it's harder to trigger because inertial scroll is usually cancelled when moving the mouse after scrolling.

Here's a tweaked version of @Joffrey's pen with a horizontal-scrolling list with snapping enabled, which maintains scroll inertia while you move the mouse away to click the button:

https://codepen.io/tally-canva/pen/GRapBBa

Note the bug does NOT happen if you call `scrollTo` with `behavior: 'smooth'`.

On Chrome 125, calling `scrollTo` briefly flickers to the given top/left point and then returns to continue the original inertial scroll, effectively ignoring the `scrollTo`. This is not ideal and looks like it's tracked by this Chromium bug: https://issues.chromium.org/issues/40144061

On Firefox 126, calling `scrollTo` stops the inertial scroll and immediately scrolls to the given top/left point.

I've attached videos of the behaviour in Safari with and without smooth scrolling, and Chrome and Firefox.
Comment 3 tally 2024-05-16 16:05:38 PDT
Created attachment 471425 [details]
video of bug w horizontal snap - chrome 125
Comment 4 tally 2024-05-16 16:05:51 PDT
Created attachment 471426 [details]
video of bug w horizontal snap - firefox 126
Comment 5 tally 2024-05-16 16:06:09 PDT
Created attachment 471427 [details]
video of bug w horizontal snap - safari 17
Comment 6 tally 2024-05-16 16:06:49 PDT
Created attachment 471428 [details]
video of horizontal snap w smooth scrolling, NO bug - safari 17