You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 8b1faed
Browse filesBrowse the repository at this point in the historyBrowse files
Summary:
iOS 26 adds scroll edge effects, which UIKit positions in a scroll view's own coordinate space. Inverted virtualized lists are implemented with a `scaleY(-1)` transform on the scroll view, and UIKit does not account for it, so neither effect lands where it belongs:
- Against a navigation bar, `topEdgeEffect` darkens the lower half of the screen instead of the content passing under the bar.
- Against a bottom bar, `bottomEdgeEffect` dims the entire screen.
With both bars present the two stack, leaving content close to unreadable.
This reproduces with a plain `UIScrollView` carrying the same transform, with no React Native involved, so the underlying defect is in UIKit rather than here. What can be done from this side is stop the misplaced effects from rendering, so `RCTEnhancedScrollView` now hides both while the scroll view is inverted.
Nothing visible is lost by doing so. An inverted list never gets a usable edge effect at any scroll position; the only thing the effects produce while mirrored is the misplaced darkening. Giving the bars correct effects is not possible from here, because UIKit has no notion of the transform.
Reported as react-native#54181, migrated from software-mansion/react-native-screens#3293.
Changelog:
[iOS][Fixed] - Hide the misplaced iOS 26 scroll edge effects on inverted ScrollViews
Differential Revision: D120641422
0 commit comments