A render error anywhere in the mobile app previously reached the global fatal handler, and expo-updates' ErrorRecovery killed the process. Wrap every root navigation route (navigator screenLayout) and the thread feed in their own error boundary: the failed subtree is replaced by a recovery view (retry, copy diagnostics, go back) while the native header, navigation, and the rest of the stack stay alive. Caught errors are recorded in a session-scoped render-error log (deduped by error identity so nested boundaries report once) and surfaced on the Settings > Diagnostics screen next to the existing expo-updates startup-crash log, which keeps covering only process fatals.
Julius Marminge committed on 9/22/2026, 11:00:56 PMparentd7819c1
6 files changedLine totals unavailable