Skip to content
Ritesh FirodiyaGet in touch

Work / Imposter / Wiki / Surfaces

restore-failed

Surfacecanonicalverified 2026-09-23

SURFACE.MOBILE.STORE.RESTORE-FAILED

Summary

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é