fix(mobile): disarm the first-paint valve once any frame has painted

expo-updates disarms its OTA recovery tasks at RN's first-native-view
marker, which rides the first commit ANYWHERE in the root tree — providers
above the navigation seam mount native views too. If a shell frame ever
paints before Home's first commit, a Home crash afterwards is already
'after content appeared' for expo: a rethrow there would be a plain crash
with the recovery tasks removed — strictly worse than the fallback. So the
valve now also requires that the app has never completed a commit, latched
by a sentinel layout effect that flips inside that very first commit and
therefore stays false exactly when a render-phase throw discards it.

In the all-at-once launch (the pre-PR world for bad OTAs) the valve fires
and the startup-error pipeline runs; in an early-shell world it self-disarms
and the fallback wins, matching the fact that cached-update fallback was
never available in that world even on main.
fd62e5edffJulius Marminge committed on 9/23/2026, 12:29:15 AMparentcb480a0
6 files changedLine totals unavailable