feat(core): iOS 26 scroll edge effect on ScrollView and ListView - #11447
Merged
Merged
Conversation
|
View your CI Pipeline Execution ↗ for commit bcaafbf
💡 Verify your cache is correct by running tasks in a sandbox. Read docs ↗ ☁️ Nx Cloud last updated this comment at |
commit: |
Core pins contentInsetAdjustmentBehavior to never and lays content out
inside the safe area itself, so UIKit's automatic scroll edge effects
never appear on NativeScript scroll views on iOS 26: content under the
status bar stays crisp and a custom bar gets no fade.
- iosScrollEdgeEffect ('automatic' | 'soft' | 'hard' | 'none') styles or
hides the effect on every edge; soft on its own already blurs the
status-bar band of a scroll view that overflows the safe area.
- addScrollEdgeContainer(view, edge) / removeScrollEdgeContainer(view)
register a bar the content scrolls beneath, through
UIScrollEdgeElementContainerInteraction, so the effect extends under
it and follows it. Registration completes once both native views
exist, survives the bar being recreated, and works for a bar in
another window.
- CoreTypes.ScrollEdgeEffect and CoreTypes.ScrollEdge.
No-ops before iOS 26 and on Android.
NathanWalker
force-pushed
the
feat/ios-scroll-edge-effect
branch
from
October 2, 2026 19:39
20ec874 to
bcaafbf
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
First-class access to the iOS 26 scroll edge effect on
ScrollViewandListView.iosScrollEdgeEffect: 'automatic' | 'soft' | 'hard' | 'none'(defaultautomatic), applied to every edge of the native scroll view.softis the blur-and-fade UIKit draws under system bars.addScrollEdgeContainer(view, edge)/removeScrollEdgeContainer(view): register a view as a bar the content scrolls beneath, so the effect extends under it and follows it as it moves. Registration completes once both native views exist, survives the container being recreated, and works for a bar in another window (a keyboard accessory).CoreTypes.ScrollEdgeEffectandCoreTypes.ScrollEdgefor the string unions.No-ops before iOS 26 and on Android.
Why
Core pins
contentInsetAdjustmentBehaviortoneverand lays content out inside the safe area itself, so UIKit's automatic edge effects never appear on NativeScript scroll views on iOS 26: content that runs under the status bar stays crisp, and a custom top bar or a docked composer gets no fade at all. The result reads as a hard line wherever dark content (a code block, an image) passes under chrome.Two facts from testing on the iOS 27 simulator with the 27.1 SDK drive the API shape:
automaticstyle draws nothing for these scroll views.UIScrollEdgeElementContainerInteractionextends the region under any view, including one hosted in the keyboard's window.@nativescript/input-accessoryregisters its docked composer this way (feat(input-accessory): clear bar on iOS 26+, suspend/restore, collapsed inset plugins#686).Verification
The same UIKit calls run in ns-octane's ChatGPT-style chat screen on the iPhone 18 Pro / iOS 27 simulator: status bar and a floating top bar at the top edge, the docked composer at the bottom, in light and dark mode, with the keyboard open and closed and through a drawer push.
tsconpackages/coreandapps/automated, eslint and vitest pass.none/softmapping to the native effects on iOS 26+, and registering an unloaded view.