RootLayout in app/_layout.tsx wraps the Stack in nothing but a StatusBar, with no error boundary. A malformed SecureStore read, a Horizon SDK throwing an unexpected shape, or any other unhandled exception in a screen currently takes down the entire app to a native red-screen/crash with zero recovery path for the user — unacceptable for an app where the crash could occur mid-transaction-review.
Definition of done:
- Global
ErrorBoundary at the root layout level with a real recovery UI (not just "app crashed", an actionable retry/restart affordance)
- Verified it does NOT swallow errors during signing/broadcast in a way that leaves the user unsure whether a transaction went through — that ambiguity is worse than a crash
- Crash is still reported (once a crash reporter exists, per the related guardrails issue) with context, just not fatal to the user session
Before opening a PR for this issue, read CONTRIBUTING.md.
This is not a starter-issue. The Definition of done above is the full
acceptance criteria, not a subset to sample from — a PR that addresses part
of it is an unfinished issue, not a smaller one. Your PR must include, in
the PR description itself:
PRs missing these will be sent back before review, not reviewed and rejected — please do this up front.
RootLayoutinapp/_layout.tsxwraps theStackin nothing but aStatusBar, with no error boundary. A malformed SecureStore read, a Horizon SDK throwing an unexpected shape, or any other unhandled exception in a screen currently takes down the entire app to a native red-screen/crash with zero recovery path for the user — unacceptable for an app where the crash could occur mid-transaction-review.Definition of done:
ErrorBoundaryat the root layout level with a real recovery UI (not just "app crashed", an actionable retry/restart affordance)Before opening a PR for this issue, read CONTRIBUTING.md.
This is not a starter-issue. The Definition of done above is the full
acceptance criteria, not a subset to sample from — a PR that addresses part
of it is an unfinished issue, not a smaller one. Your PR must include, in
the PR description itself:
PRs missing these will be sent back before review, not reviewed and rejected — please do this up front.