Bug 230669

Summary: iOS15 is causing important performance issue due to scrolling reflow
Product: WebKit Reporter: mic.gallego
Component: Layout and RenderingAssignee: Nobody <webkit-unassigned>
Status: RESOLVED MOVED    
Severity: Normal CC: asheem.mamoowala, bfulgham, simon.fraser, webkit-bug-importer, zalan
Priority: P2 Keywords: InRadar
Version: Safari 14   
Hardware: iPhone / iPad   
OS: Other   

Description mic.gallego 2021-09-23 00:34:34 PDT
Hi,

I have found a major problem in iOS15 that is impacting most slider libraries, for instance. I have found the issue to be due to how iOS15 now handles the toolbar.

Previously, if the toolbar at the bottom was closed, moving up from 1 or 2 pixel would not cause the bar to goes up. In the context of a slider library, this means that if you would swipe left or right, the window height would not change unless you would do a rather large vertical movement.

However on iOS15, when you scroll a bit diagonally (to swipe for instance), the bottom bar is moving up and down for every pixel of your diagonal movement.

Unfortunately, this cause the "resize" event to be called a very large number of times. Libraries like Flickity therefore re-render them whole carousel a huge number of times per swipe movement, which cause everything to be laggy (having the bottom bar going up and down while dragging slighly diagonally is also just annoying, from UX perspective).

I think that iOS should introduce a minimum number of scrolled pixel before initiating the collapse of the bar OR triggering the resize event only after the bar has been minimized or shown, but now many times in between as it does now.
Comment 1 Radar WebKit Bug Importer 2021-09-23 08:09:14 PDT
<rdar://problem/83447573>
Comment 2 Brent Fulgham 2021-09-23 09:34:48 PDT
This behavior change is outside of the WebKit project, and will be tracked as an internal bug (see Radar above). I'll update this bug once we have some status on when this can be fixed.
Comment 3 Brent Fulgham 2022-02-10 10:44:47 PST
The fix for this issue was needed outside the WebKit project, therefore this is being resolved as 'Moved'.

The bug was resolved in the external component in rdar://82189302.

The fix was shipped in iOS 15.2.