I'm calling Purchases.shared.getCustomerInfo from my intro screen / AppDelegate on a fresh install to check if the user is premium before routing them to the correct screen. On fresh install, this call takes approximately 6 seconds to return. However, if I call getCustomerInfo again a few seconds later, it returns in under 1 second.
Because of this delay, I can't reliably validate whether the user is premium at the point my intro screen needs to make a routing decision.
Setup:
- SDK version: 5.80.0
- Platform: Swift, UIKit
- Call site: intro screen / AppDelegate, on first launch after install
Questions:
- Why is the first
getCustomerInfocall so much slower than subsequent calls on a fresh install? - Is this expected behavior (e.g. due to receipt fetch/validation on first call, with caching afterward), or could this indicate a configuration issue on my end?
- What's the recommended pattern for gating UI on entitlement status during this initial slow fetch — is there a way to speed up the first call, or should I be designing around it with a loading state / timeout fallback?
Any guidance on best practices here would be appreciated.
