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
iOS RCTAssert crash when unmounting near cursor pointer hover effect #55489
A peek in the debugger reveals that self.currentContainerView.subviews has a _UIPointerEffectPlatterView in the expected index location instead of the view in question.
Also reproducible on 0.79, 0.81 and in the latest main branch.
As a side note, I've also seen these pointer hover effects being applied to views even when cursor: 'pointer' is not set, which can cause the same typeof assertion crash. But have not been able to reproduce this in a stable way. Hopefully it's the same root cause.
Steps to reproduce
Hover the Click Me button with hover enabled (e.g. Apple Pencil Pro or "Send Pointer to Device" in simulator)
Click the button.
Crash
React Native Version
0.81.6
Affected Platforms
Runtime - iOS
Output of npx @react-native-community/cli info
System:
OS: macOS 14.5
CPU: (8) arm64 Apple M1
Memory: 120.50 MB / 16.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 22.15.0
path: /usr/local/bin/node
Yarn:
version: 1.22.22
path: /usr/local/bin/yarn
npm:
version: 10.9.2
path: /usr/local/bin/npm
Watchman:
version: 2026.01.12.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.13.0
path: /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 24.2
- iOS 18.2
- macOS 15.2
- tvOS 18.2
- visionOS 2.2
- watchOS 11.2
Android SDK:
API Levels:
- "29"
- "31"
- "33"
- "34"
- "35"
Build Tools:
- 29.0.3
- 30.0.3
- 31.0.0
- 33.0.0
- 35.0.0
System Images:
- android-29 | Google APIs ARM 64 v8a
- android-31 | Google APIs ARM 64 v8a
- android-33 | Google APIs ARM 64 v8a
- android-36.1 | Google APIs ARM 64 v8a
- android-36.1 | Google Play ARM 64 v8a
- android-36 | Google Play ARM 64 v8a
Android NDK: Not Found
IDEs:
Android Studio: 2025.2 AI-252.28238.7.2523.14688667
Xcode:
version: 16.2/16C5032a
path: /usr/bin/xcodebuild
Languages:
Java:
version: 22.0.2
path: /usr/bin/javac
Ruby:
version: 2.6.10
path: /usr/bin/ruby
npmPackages:
"@react-native-community/cli": Not Found
react: Not Found
react-native: Not Found
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: false
newArchEnabled: false
iOS:
hermesEnabled: true
newArchEnabled: true
This issue is stale because it has been open for 180 days with no activity. It will be closed in 7 days unless you comment on it or remove the "Stale" label.
Confirmed another real-world instance of this pattern on iOS 26.5/26.6 with RN 0.81.4 (Fabric): EXC_BAD_ACCESS in -[_UIPointerInteractionAssistant _assistantForView:] -> -[UIView _containsView:] during RCTMountingManager performTransaction, plus freed-CALayer variants (-[__NSArrayM insertSublayer:atIndex:] unrecognized selector) from the same corruption.
In our case the trigger was a third-party Fabric component (@callstack/liquid-glass) that (a) mounted Fabric children directly into UIVisualEffectView.contentView, where iOS 26's glass/pointer machinery injects private platter subviews that shift Fabric's index space, and (b) never tore down UIGlassEffect.isInteractive registrations on recycle/dealloc, leaving dangling entries in the pointer-interaction registry. Root-cause analysis and a validated fix are written up in callstack/liquid-glass#46 — zero recurrences across an automated stress loop that previously crashed ~1 in 3 sessions.
May be useful signal for anyone else hitting this: check for custom Fabric components mounting children into containers UIKit also mutates on iOS 26.
We observed a related crash on an iPad mini, iPadOS 26.4.1, with React Native 0.86.3 and react-native-screens 4.27.0.
The failing component was React Navigation’s standard JS-stack header Back button, which uses cursor: 'pointer'.
LLDB showed UIKit-injected _UILumaTrackingBackdropView and _UIPortalView siblings around the button. Fabric then failed in unmountChildComponentView:index: with index: 0, actual index: 1.
As a workaround, we override the Back button’s cursor to 'auto'. LLDB confirms its native hoverStyle becomes nil, and touch navigation passes afterward.
This provides another example of UIKit modifying a container whose child indices Fabric assumes it controls.
Description
iOS app crashing in certain scenarios when unmounting view near hover effects caused by using
cursor: 'pointer'.Requires hover to be enabled, for example with an Apple Pencil Pro or "Send Pointer to Device" active in the simulator.
Reproducible test (Also in supplied reproducer)
A peek in the debugger reveals that
self.currentContainerView.subviewshas a_UIPointerEffectPlatterViewin the expected index location instead of the view in question.Also reproducible on 0.79, 0.81 and in the latest main branch.
As a side note, I've also seen these pointer hover effects being applied to views even when
cursor: 'pointer'is not set, which can cause the same typeof assertion crash. But have not been able to reproduce this in a stable way. Hopefully it's the same root cause.Steps to reproduce
React Native Version
0.81.6
Affected Platforms
Runtime - iOS
Output of
npx @react-native-community/cli infoStacktrace or Logs
MANDATORY Reproducer
https://github.com/AndreasHogstrom/react-native/blob/main/packages/rn-tester/js/examples/Playground/RNTesterPlayground.js
Screenshots and Videos
crash-1080p.mov