Skip to content

The app gated its first paint on a ready flag that was only ever set inside the success branch of the AsyncStorage read. If that read rejected — a corrupt store, a full disk, a native module not yet initialised — the flag stayed false and the app sat on nothing, with no error and no way out. It now opens on the default theme instead.

Found by a linter rule (no-floating-promises) on the day the linter was introduced, not by a user. Nobody had reported it, which is consistent with it needing a storage failure to trigger — and is exactly why it could have survived to production and shown up as "the app doesn't open" with nothing to go on.