title: Is it necessary to validate / refresh an app store receipt on launch in iOS?
body: <p>The <a href="https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateLocally.html" rel="noreferrer">Apple docs</a> on receipt validation say to perform receipt validation immediately after launch. This amounts to checking for data at the path returned by <code>[[NSBundle mainBundle] appStoreRecieptURL]</code>, refreshing via <code>SKReceiptRefreshRequest</code> if it's not there, and validating it. The aforelinked docs reference both iOS and macOS.</p>
  
  <p>Is it actually <em>necessary</em> on iOS? If so, why? Is it to prevent users from using my app on a jailbroken device, or without having bought it from the app store (in which case I probably don't care if my app is free)? Or does it have implications for other operations like restoring or validating in-app purchases? For example, does the receipt data have to be there already in order to validate a transaction for an in-app purchase?</p>
  
  <p>Note: I am not using in-app subscriptions. I have in-app purchases, but I don't use the receipts from them after verifying them and recording the purchase server-side.</p>