Work / Imposter / Wiki / Surfaces
restore-failed
Surfacecanonicalverified 2026-09-23
SURFACE.MOBILE.STORE.RESTORE-FAILEDSummary
A restore that found nothing, with three plain causes and a way out.
Raw wireframe
- .context/designs/mobile/store/restore-failed.html
Why it is drawn this way
A dead end here reads as theft. Three causes in plain words — a different Apple Account, Family Sharing, offline — then Try again and Email support. Never just "restore failed".
The heading is honest about which failure it was. It used to assert "No
purchase found on this account" for every outcome, including a store we never
reached — telling a paying customer their purchase does not exist, which is the
review this app exists not to earn. paywall.tsx keeps restoreOutcome so the
same screen can say the true thing; failed (unreachable) is the second heading,
and it is NOT drawn yet. It is listed in routes.js under missing.
Its own screen, not the paywall's error state. That slot belongs to the
purchase failure, which is the one that involves money.
A restore from Settings does not land here. settings.tsx pushes
paywall on anything but a success, and the paywall is where the outcome gets
explained. This screen is reached from the paywall's own Restore.
Related
Sources
- .context/designs/mobile/store/restore-failed.html
- src/app/paywall.tsx — the restoreFailed view
Every project of mine is written down like this.
Read the résumé