Start with identity
If your product has accounts, the cleanest recovery path is a stableappUserId on every install and every device. That reduces your need to rely on restore flows as the primary identity mechanism.
Use the right recovery API
- Use restore when the customer explicitly asks to recover purchases.
- Use quiet sync when you need a silent reconciliation step.
- Use receipt queue drain when you intentionally need to flush retryable receipt work and refresh state.
User-facing restore button
Scenario matrix
Reinstall behavior
Anonymous users can end up with a new local identity after reinstall. If your product needs stronger continuity, prefer:- sign the user into your app account
- configure AppActor with the same stable
appUserId - run the appropriate recovery flow only if customer state still needs reconciliation