# fix\(mobile\): throw the cold-launch Home failure inside the failed render pass · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/commit/5144e3e4fd78ca0dce01f105b0462618e1820dfd)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

Requested revision: 5144e3e4fd78ca0dce01f105b0462618e1820dfd

Requested commit: 5144e3e4fd78ca0dce01f105b0462618e1820dfd

Commit: 5144e3e4fd78ca0dce01f105b0462618e1820dfd

Tree: f610f6c63ec4234522fa4ff4a28271050ceff301

Author: Julius Marminge

Committer: Julius Marminge

## Message

```
fix(mobile): throw the cold-launch Home failure inside the failed render pass

The macrotask rethrow let React commit the fallback first: that paints a
frame, expo-updates records first content / launch success, and the cached-
update rollback is dropped before the delayed fatal ever runs — so a bad
OTA's Home crash could persist. Rethrowing from the boundary's own render
while the fatal-first-paint policy applies means nothing above the seam
catches it, React discards the whole in-progress commit, and no frame is
shown. That is the same unwinding a boundaryless render throw took before
this PR existed, so ErrorRecovery's startup failure path (rollback + its
crash log) is untouched; componentDidCatch never runs for the discarded
pass, so nothing double-reports.

```

## Parents

- [333b8feae9c3dbaaf98935e8e01533f877724e6a](https://git.cafe/pingdotgg/t3code/commit/333b8feae9c3dbaaf98935e8e01533f877724e6a?format=markdown)

[Source at this commit](https://git.cafe/pingdotgg/t3code/tree/5144e3e4fd78ca0dce01f105b0462618e1820dfd?format=markdown)
