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