iOS App Store Submission Checklist 2018

Complete checklist for submitting an iPhone/iPad app to the App Store. An example of the checklist-style of software testing you can do with Testpad. Originally published in 2012. FULLY UPDATED FOR 2018.

Your app…
Works
Never crashes
Performs as advertised by the developer
Is not marketed with features or content that it does not have
Is complete, with finalised images and text, ready for distribution
If a Lite Version, is not unusably restricted
Does not have empty ad banners or display test advertisements
Is not a duplicate of another app in the AppStore
Does not resemble (too closely) any native apps
Does not replicate (too closely) the functionality of a native app
Does not depend on another app to install
Has not been created from a commercialised template or app generation service
Does not provide fake or trick content that is not advertised
Remains responsive after long/excessive usage
Has been tested for successful database migrations (if applicable)
Does not expire (stop working) after a certain time or number of runs, including for Lite Versions
Does not force the user to login using a third-party social media account (e.g. Facebook, Twitter etc)
Does not contain contain racist material, prolonged graphic violence, graphic sexual content or nudity
Does not "accidentally" contain such material, e.g. explicit lyrics, unfiltered collections of books
Does not ridicule well-known public figures, past or present
Does not encourage consumption of illegal substances or excessive alcohol
Does not encourage minors to consume alcohol or smoke cigarettes
Does not make excessive use of iCloud storage
Does not send personal or confidential information using push notifications
Does not use push notifications for adverts, promotions or other marketing
Does not use data from facial mapping tools for advertising or use-based data mining
Does not suggest or require a restart of a device
Does not present a license screen at launch, require license keys, or implement its own copy protection
Does not include undocumented or hidden features that are inconsistent with the description
Does not contain a scripting interpreter, plugin or other runtime that can execute downloaded content
If displaying user generated content, includes means to flag offensive content, filter objectionable material, and block abusive users
Does not make covert or non-obvious use of the camera or microphone
Does not simulate a failure (e.g. crash or cracked screen)
Does not re-purpose, alter the function of, or disable, the hardware buttons of a device (e.g. volume buttons)
Does not alter the function of, or disable, other native user interface elements
Does not use any unapproved hardware accessories
Does not refer to hardware capabilities which don't exist on the users device
Does not use continuous vibration
Does not make use of any private APIs in the SDK
Does not make use of any undocumented features in the SDK
Conforms to Apple's Human Interface Guidelines
// you should really use the document itself and check every section, the following are some common mistakes
App looks well designed and of high quality
Users can see primary content without zooming or scrolling horizontally
Layout is easy to read
Text is at least 11pt for legibility at typical viewing distances
Text is displayed in colors of reasonable contrast
Text does not overlap
Controls have tappable areas of at least 44x44pt
Images are not blurry or distorted
UI elements are properly aligned
Native button icons are consistent with their native actions
Activity spinners do not spin indefinitely
Buttons trigger on touch-up
Screen layout can handle the double-height status bar (e.g. during phone call)
App state is saved when stopping the app and restored on next start
Landscape mode, if supported, looks well designed
Warns the user when there is no network connectivity, if it needs a connection
Functionality Specific
If using ARKit, Camera APIs, Photo APIs or other facial mapping information: has a privacy policy in place
Only uses APN API for push notifications
Only uses LocalAuthentication to provide authentication by facial recognition
Provides alternative to facial authentication for users under 13 years old
Does not use ARKit or other facial recognition technology for authentication by facial recognition
If using ARKit, provides a rich and integrated AR experience, not just a simplistic model view or animation playback
Does not write fake or inaccurate data into HealthKit
Does not trigger music playback via the Music API without user action
Provides standard media controls such as play, pause, skip if exposing Music API
If using MapKit, does not hide or obscure the Google logo
If using the camera, does not disable the shutter sound
If providing web browsing, uses iOS WekKit and WebKit Javascript
If prompting for reviews, uses the SKStoreReviewController API
Does not use Location APIs for dispatch, fleet management or emergency services
If using Core Location (GPS), does so for a real user benefit, not just advertising or tracking
If using Location data, explains exactly the data is needed and obtains user consent before collecting, using or transmitting
Is using Background Location services, explains clearly why they are are needed
If streaming audio over a cellular network, does not use more than 5MB over 5minutes
If streaming video longer than 10minutes, only uses HTTP Live Streaming and does not exceed 192kbits
Makes clear to the user when private data will be sent to a server, and provides an opt-out
Only blocks phone numbers using CallKit or an SMS Fraud Extension that are confirmed as spam
If encryption is used, you have registered with BIS and can provide documentation (or are confident in claiming an exemption)
Purchasing
Does not hardcode any price information inside the app
If a Lite Version, does not display the price of the full version
Supports in-app purchases initiated from the App Store (if applicable)
Only uses in-app purchases for unlocking features or functionality
Only uses in-app purchases for buying content
Any credits (or in-game currency) must not expire, and must be restorable for in-app purchases that are restorable
Does not charge user for push notification
Does not enable gifting of in-app purchased content to others
If using Apple Pay, provides user with all relevant information prior to sale
App description, screenshots and previews clearly indicate features or content that require additional purchases
Databases, Files and Storage
Does not read or write data outside its container directories
Uses the "do not back up" attribute for files that need to persist but should not be saved to iCloud
Data that can be regenerated, or re-downloaded, is stored in /Library/Caches
Stores temporary files in /tmp and deletes these on exit
Only stores user-created content in /Documents and iCloud
If primarily an iCloud file manager, your app provides additional functionality
iPad specific
Your app should work in all four orientations, but if only portrait or landscape, must support both ways up
Your app doesn't nest popovers, i.e. selecting something on a popover should not display another popover
Your app doesn't show more than one popover at a time
Uses the relevant keyboard per input field (e.g. numbers for a phone number field)
Deselects rows in table views after their selection causes another view to be displayed
Kids Apps
Include a privacy policy
Does not include behavioral advertising
Presents only adverts that are suitable for kids
Is made specifically for under 5, or ages 6-8, or ages 9-11
Submission package details
The name of your app is unique
The name of your app (in the binary package) matches (or is abbreviated version of) the iTunes name
Name does not include the price
Name does not include “Free” for free apps
The Bundle Identifier is unique to the app
Version number (bundle version number) is >= 1.0
The app has not been submitted previously with a different Bundle Idenfitier
Your app distribution is less than 4GB uncompressed
For iOS9 and later, your app executable file is less than 500MB
Your iTunes description accurately describes the functionality of the app, i.e. it works as advertised
Your iTunes description does not contain the price
Your iTunes description explains why it needs any permissions that will be asked for, and explains what will not work in the app if permissions are not granted
Your iTunes description (and the binary) do not include the names of any competing platforms (e.g. Android)
Your iTunes description does not mention unreleased iOS version numbers
Your iTunes categories match the functionality of the app
Your iTunes keywords match the functionality of the app
Your iTunes keywords do not contain the names of other apps or other irrelevant phrases
The screenshots do not include error states, including iAd errors
Screenshots show your app in actual use, not just title art or login pages
Screenshots and previews do not show personal information of a real person
Preview content is licensed for use in the preview
Contact information is complete and up-to-date on iTunes Connect
Correctly declares access to unrestricted web content (likely if WebView is being used)
Any easter eggs in the app are innocuous and are disclosed in the 'demo account' field
App includes a 1024x1024 “marketing” icon in PNG format
iPhone-only apps provide at least a 120px icon (and 57px for iOS 6.1 and earlier)
iPad-only apps provide at least a 76px icon (and 72px for iOS 6.1 and earlier)
Universal apps provide at least 120px and 76px icons (and 57px and 72px for iOS 6.1 and earlier)
Watch apps provide icons of size 48, 55, 58, 80, 87, 88, 172 and 196
The different sizes of icon all contain the same artwork
The required-device-capabilities entry in the info.plist file match the requirements of the app
Your app matches your claimed OS version compatibility
NSZombieEnabled is set to NO
App IP configured correctly (and signed) for
iCloud enabled/disabled, with correct entitlements if enabled
push notifications, with correct entitlements (for production) if enabled
In App purchasing enabled/disabled
Game Center enabled/disabled
When updating
Your iTunes "What's New" description accurately matches the changes to your app
The updates to your app are real and detectable
Version number is greater than the previous version number
Miscellaneous
Your app has a reasonably sized market, i.e. is not a tiny niche or for a private audience
There are no greyed out buttons or features in your app to do with a future release
Webpages loaded by your app, that are part of the app itself, are online and working
Any associated email addresses exist and are working
All (paid) app upgrades and other transactions use the App Store
Your app conforms to any regulatory requirements, e.g. if medical in nature, or contains contests with prizes
Your app is not an app store
Your app is not a simple browser window onto a website
Watch apps do more than tell the time
Your app does not facilitate binary options trading
Your app does not visualise activity data similar to the Activity Rings
If relevant, official rules for sweepstakes and contests are presented in your app
If relevant, your app makes it clear that Apple is not a sponsor or involved with any sweepstakes, contests or their prizes
If your app requires signing in, you have provided a test account
Any references to Apple's products or apps are spelled correctly
Copyright, trademark, ownership
You can prove you own (or have permission to use) all the code in your app
You can prove you own (or have permission to use) all the artwork in your app
You can prove you have permission to use any brand names, names of public figures or other trademarked material
e.g. Images and icons are not framed with a "polaroid" style (thicker at the bottom) border
e.g. Images and icons do not include iPhones or other Apple products
You can prove you own (or have permission to use) any videos, music or lyrics in your app
If relevant, you can prove you have permission to download music or video from third party sources
If relevant, you can prove you have permission to download music or video from third party sources
If relevant, you can prove you have permission to download music or video from third party sources

Subscribe to receive pragmatic strategies and starter templates straight to your inbox