NEW288795
[iOS] View Transitions interrupt scroll momentum
https://bugs.webkit.org/show_bug.cgi?id=288795
Summary [iOS] View Transitions interrupt scroll momentum
Sebastian Markbåge
Reported 2025-02-27 19:04:56 PST
Attachments
Desktop Safari works (812.39 KB, video/quicktime)
2025-03-04 18:26 PST, Sebastian Markbåge
no flags
iOS Safari with Touch Doesn't work (1.77 MB, video/quicktime)
2025-03-04 18:28 PST, Sebastian Markbåge
no flags
Chrome Desktop with Mobile Touch Simulator enabled (1.25 MB, video/quicktime)
2025-03-04 18:29 PST, Sebastian Markbåge
no flags
Repro with opacity: 0; on VT (1.47 KB, text/html)
2025-03-21 08:32 PDT, Tim Nguyen (:ntim)
no flags
Repro without VT fade (1.56 KB, text/html)
2025-03-21 08:34 PDT, Tim Nguyen (:ntim)
no flags
Repro without VT fade and 60s VT (1.56 KB, text/html)
2025-03-21 08:41 PDT, Tim Nguyen (:ntim)
no flags
Sebastian Markbåge
Comment 1 2025-02-27 19:08:48 PST
On iOS, when you start a View Transition it interrupts the currently running scroll if it's inside the transitioning boundary. It keeps responding to touches though. Once it has started and you release the touch . On desktop, with wheel scroll you can start scrolling and keeping scrolling while the View Transition is going. On Chrome it also works with touches, if you start scrolling with touch it keeps being scrollable even if you start a View Transition. That's how it's expected to work on iOS too.
Sebastian Markbåge
Comment 2 2025-02-27 19:16:43 PST
The example on https://repro-view-transition-scroll-bug.vercel.app might be a bit confusing since it also takes a snapshot which freezes as expected. However, the content fading in should be live and respond to the scroll. If you release the touch and then touch again it now starts scrolling again even while the View Transition is going. So I suspect it's just something that causes it to be stopped by starting the View Transition that's the bug.
Radar WebKit Bug Importer
Comment 3 2025-02-28 11:40:24 PST
Tim Nguyen (:ntim)
Comment 4 2025-03-03 07:17:22 PST
Could you post a screen recording of the bug? I see the same behavior in ToT WebKit and Chrome on macOS.
Sebastian Markbåge
Comment 5 2025-03-04 10:26:58 PST
Created attachment 474445 [details] Desktop Safari works This is using touch pad two finger scroll. It's hard to tell if this is actually broken or not because there's no "scrollend" event so it's hard to tell if it stops or restarts.
Sebastian Markbåge
Comment 6 2025-03-04 10:28:40 PST
Created attachment 474446 [details] iOS Safari with Touch Doesn't work Note how I press down and swipe to start but then it stops before my finger lifts. After I lift the finger and press down again it can now restart and the second time it works because the View Transition has already started. (Note that with iPhone mirroring it's not in touch mode and so behaves like Safari desktop.)
Sebastian Markbåge
Comment 7 2025-03-04 10:29:42 PST
Created attachment 474447 [details] Chrome Desktop with Mobile Touch Simulator enabled Note that in Chrome on MacOS with touch events simulated. I just press down once. It's not visible in the video but my finger is down and up only once the whole time. It never gets interrupted.
Sebastian Markbåge
Comment 8 2025-03-04 10:32:53 PST
The reason this is so important is because without it, you can't have a swipe implemented as a scroll drive a View Transition. Such as swiping between two pages. Because you'd have to have a View Transition started before you even knew the finger was going to press down but you can't have View Transitions "always on" since it's only one at a time an it would block other interactions. So it's important to start the View Transition at the same time as the swipe.
Sebastian Markbåge
Comment 9 2025-03-18 10:57:54 PDT
For anyone following along we had a side-discussion on GitHub as well. https://github.com/facebook/react/pull/32656#issuecomment-2733906601
Tim Nguyen (:ntim)
Comment 10 2025-03-21 08:32:12 PDT Comment hidden (obsolete)
Tim Nguyen (:ntim)
Comment 11 2025-03-21 08:34:24 PDT
Created attachment 474671 [details] Repro without VT fade
Tim Nguyen (:ntim)
Comment 12 2025-03-21 08:41:04 PDT
Created attachment 474672 [details] Repro without VT fade and 60s VT
Sebastian Markbåge
Comment 13 2025-04-08 15:07:03 PDT
Any progress on this? Tbh, I'm considering abandoning View Transitions in React and reimplementing it with custom Animations instead because of this seemingly small bug. Because it really just kills so many use cases.
Note You need to log in before you can comment on or make changes to this bug.