Checklist: What to do before posting to the App Store?
After my bad experiences with nasty bugs in my release versions I will compile a list of checkpoints to tick before archiving the release version. Feel free to post any additions.
- Clean Target, Clean Build Folder and delete Derived Data
- Set Version to Release (especially if you have an Adhoc Build)
- Use Static Analyzer to find obvious memory issues
- Use Instruments to find less obvious memory issues
- Use Release-safe versions of Apple-provided code templates. e.g. for persistentStoreCoordinator
- Select a Release-Certficiate for code signing
- When releasing for older devices: Build for armv6 and armv7
- Check size is under 50MB (if possible) by exporting it as .ipa
- Use your own version of NSLog, which is disabled for Release
- Don’t use [[UIDevice currentDevice] uniqueDeviceIdentifier]. Also check third-party modules.
- Check third-party modules for useful updates.
- Enable Game Center, Leaderboards and Achievements in Itunesconnect
- Send In App Purchases for review with your app
- Make a copy of your development dir as a fallback solution, if some errors should occur in future updates
- Don’t load too much in the AppDelegate, as startup time for an app is limited to around 20-25 seconds and you’ll get an “
failed to launch in time” error. It only appears in Release and Adhoc Builds, not in debug Builds
- For Push Notifications: Check if aps-environment is included in the mobileprovision file (just open with a text editor) and use the production certificate serverside. Create a new provisioning file, if not included.
This is work in progress and open for discussion. I will compile a nice PDF Version, if I think it is complete and I can find the time.