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 Fabric: SafeAreaView keeps stale insets for a few frames after rotation (async state update) #802
On iOS with Fabric, a SafeAreaView inside a native sheet keeps its old insets for a few frames after a rotation, then jumps to the right ones.
The view updates its state with the default async mode, so the new insets only land on the next event beat. When the app is busy, that takes a few frames. react-native-screens runs into the same thing with its screen state and passes unstable_Immediate there, so I did the same here.
Turns out there's a second bug under this one when the view is in a sheet (#781). Without that fix the view doesn't get the new insets at all until React commits again. #803 fixes both. Left is 5.11.0, middle only has the #781 fix, right has both, slowed down 4x.
Thanks for the report and repro. This is being tracked in #803, where I left a review: the fix direction looks right, but UpdateMode::unstable_Immediate only exists since RN 0.82 (the package supports any RN version), so it needs a version guard, and it may be better to limit it to the inset-change path rather than also mount-time updates. Let's continue the discussion there.
Activity
hirbod commentedon Nov 2, 2026
Turns out there's a second bug under this one when the view is in a sheet (#781). Without that fix the view doesn't get the new insets at all until React commits again. #803 fixes both. Left is 5.11.0, middle only has the #781 fix, right has both, slowed down 4x.
floco-af commentedon Nov 2, 2026
Thanks for the report and repro. This is being tracked in #803, where I left a review: the fix direction looks right, but
UpdateMode::unstable_Immediateonly exists since RN 0.82 (the package supports any RN version), so it needs a version guard, and it may be better to limit it to the inset-change path rather than also mount-time updates. Let's continue the discussion there.