How to upload a new app to the App Store
How to submit an app on the App Store? If you’re looking for an answer to this question, you’ve come to the right place.
Here’s a complete guide on how to upload an iOS app to the App Store. This is a purely technical article that will guide you step by step through the process to submit a new app successfully.
You’ll also get to know how to upload a new version of an existing app. In fact, the process isn’t very much different. Dig into the details now and submit your app easily.
Contents
1. Uploading a new app to the App Store
1.1. Gather all necessary information
There are many fields you will have to fill in order to upload your iOS app to the Apple’s App Store. The best way is to collect all the necessary information and files beforehand and have everything ready when you decide to release your app. You will need:
Name
Name of your application that will appear on the App Store. It must be at least 2 characters long and no longer than 30 characters. Keep in mind that Apple will review the name of your app so you can’t put anything you want here (no expletive words allowed, for example).
Primary Language
You can have your application store listing in multiple languages; however, you must choose one primary language. Whenever a user enters the store page for your app and his language isn’t among the languages you chose, the contents of the store page will be displayed to them in the primary language.
Bundle ID
If you’re creating an App Store record after your application is at least somewhat developed, then you probably already have a bundle ID for it. Otherwise you will have to create it before you can register your application on the App Store. You can do it using the Apple developer console here, under Account → Certificates, IDs & Profiles → Identifiers.
SKU
SKU is an unique ID for your application that isn’t visible on the App Store. You can set this value to whatever you want. One approach is to set it to the same value as Bundle ID.
Other languages
You can have your App Store Page in as many languages as you want. However, the way to add new ones isn’t very obvious. You need to press the button with your primary language in the top right corner of the page and select a new language. Once you do so you will be able to enter a new set of screenshots and descriptions localized in that language.
Previews and screenshots
Every application on the App Store needs to have promotional media attached. These come as images and videos depicting your app. You can have at most 3 video previews and 10 screenshots and must upload at least 1 screenshot (previews are optional). A great care must be taken when creating these. They must depict the application exactly as it looks when used and they must cover its every vital function. Including images and videos that are insufficient or not true to the app may cause the rejection of your app during the review process.
While not mandatory, it’s a good practice to have a separate, localized set of screenshots and previews for each language you add to your store page.
There are also technical specifications regarding images and videos uploaded. They tend to change every couple of years but at the moment these are:
- 6.5” screenshots — required if you release for iPhones (1284x2778 or 1242x2688 pixels for portrait and 2778x1284 or 2688x1242 pixels for horizontal)
- 5.5” screenshots — required if you release for iPhones (1242x2208 pixels for portrait and 2208x1242 pixels for landscape)
- 12.9” in frameless model (like in iPad Pro 4th gen) screenshots — required if your release for iPads (2048x2732 pixels for portrait and 2732x2048 pixels for landscape)
- 12.9” in model with frame (like in iPad Pro 2nd gen) screenshots — required if you release for iPads (2048x2732 pixels for portrait and 2732x2048 pixels for landscape)
- One of the following, with a 16:10 aspect ratio if you release for Mac
- 1280x800 pixels
- 1440x900 pixels
- 2560x1600 pixels
- 2880x1800 pixels
- One of the following if you release for Apple TV
- 1920x1080 pixels
- 3840x2160 pixels
- One of the following if you release for Apple Watch
- 396x484 pixels (Series 7)
- 368x448 pixels (Series SE, 4, 5 and 6)
- 312x390 pixels (Series 3)
For full and up to date requirements check Apple Screenshot specifications.
Promotional Text (Optional)
A short text describing your application's main features that will appear above the main description. It will be displayed for customers using devices with at least iOS 11 or macOS 10.13. At most 170 characters.
Description
A long description of all features of your app. At most 4000 characters.
Keywords
A set of words and phrases that will be used to find your application on the App Store when a user enters a text into the search bar. You should separate these with a comma without adding a space between them, as the number of characters is limited and you should add as many of these as you can to improve the visibility of your application. Do not put the name of the app or the name of your company here as the search engine is looking for these values by default. You’re not allowed to use the names of other applications or companies as keywords. At most 140 characters.
Support URL
A URL with support information for your application that will be visible on the App Store to the customers that purchased your app. This web page should contain contact information that would allow them to reach help if needed.
Marketing URL (Optional)
A URL with marketing information about your application that will be visible on the App Store. This web page should contain further information about your app that did not fit into the Store listing.
Other Apps
Your iOS application can include an App Clip, an iMessage App and an Apple Watch app. Adding these goes beyond the scope of this tutorial and will be described in more detail in another one.
Build
At the moment of uploading your app you should know which build you want to release and have it ready in the App Store Connect. You will learn how to upload a finished build to the App Store Connect in section 1.2 of this tutorial.
Version
For initial release builds the recommended version is 1.0.0.
Copyright
You have to be able to enter the full information about the holder of the exclusive rights to your application, proceed by the year the rights were obtained (for example "2008 Acme Inc.”).
Routing App Coverage File (Optional)
You can add a file in .geojson format that covers the geographical regions that your app supports. This file can have only one MultiPolygon element. You can read more about how such file can be used here.
Sign-in data (Conditionally optional)
If you have to log in to a registered account in order to use any features of your application, then you must prepare one such account in advance and pass its credentials to the Apple review team. Make sure that this account is not “blank” (i.e. does have some data to display on screens that fetch data from a remote server), otherwise your app may be rejected during the review. If you do not need an account to use the app, then filling these fields is optional.
Review contact information
You must include contact information for the review team, including First and Last name, phone number and email address of a person that can be contacted regarding the application. These will be used only if the internal communication system with Apple's review team, built into the App Store Connect, is not sufficient for whatever reason.
Review notes and attachments (Optional)
If you want, you can provide some information to the review team via text or attachment files. They will read it before they start reviewing your app.
Release Options
You must pick one of the following release options:
- Manually release this version — after your app is reviewed positively, it is assigned Pending developer release status. Once it’s in this status you can manually press the release button which publishes your application to the App Store,
- Automatically release this version — after your application is reviewed positively it is released to the App Store automatically, without the need for manual confirmation,
- Automatically release this version after App Review, no earlier than — after your app is reviewed positively it is released to the App Store automatically, without the need for manual confirmation after the date you have set during the release.
Subtitle (Optional)
Brief summary of your application that will be displayed right below its name. At most 30 characters.
Content rights information (Conditionally optional)
If you’re not the owner of everything contained in your application and it displays some third party content, then you must possess and enter either all the necessary rights to that content or a permission to use it under the laws of every country that your application will be available in.
Age Rating Information — categories
Every application on the App Store has an age rating. This is set automatically based on your answers to a set of questions. First you must select a level of frequency of occurrence for all the categories below. For each of them you must choose None, Infrequent/mild, or Frequent/intense. Keep in mind that selecting Frequent/intense for some categories may make your app unavailable in some countries, or in some cases, such as with Prolonged Graphic or Sadistic Realistic Violence, will make it unable to be released to the App Store altogether. These categories are:
- Cartoon or Fantasy Violence,
- Realistic Violence,
- Prolonged Graphic or Sadistic Realistic Violence,
- Profanity or Crude Humor,
- Mature/Suggestive Themes,
- Horror/Fear Themes,
- Medical/Treatment Information,
- Alcohol, Tobacco, or Drug Use or References,
- Simulated Gambling,
- Sexual Content or Nudity,
- Graphic Sexual Content or Nudity,
- Contests.
Age Rating Information — additional questions
After you have assigned a frequency to each category, then you will have 2 more questions to answer. First is Does your app contain unrestricted web access, such as with an embedded browser?, and the second is Does your app contain instances of gambling?. Answering yes to any of these questions will set your age rating to the highest possible value of 17+, regardless of what you selected in the previous step.
Age Rating Information — final options
In the final step you will have up to two more choices to make:
- If the rating for your application has the lowest value of 4+, then you have an option to distinctively mark it as Made for Kids. This will make it easier to find your app for people who search for app for their children,
- If you think that it would fit your application better, you always have an option to manually set the age rating to the highest value of 17+, if the algorithm has selected a lower value.
Categories
You must choose a primary category for your app. You may also choose a secondary category if you want. You can choose from the following list of categories:
- Books — applications that provide an interactive experience for content that would normally be offered in printed form,
- Business — applications that assist with running a business,
- Developer Tools — applications that provide tools for creating, managing and distributing other applications,
- Education — applications that provide interactive learning experience,
- Entertainment — applications that entertain the user with audio, visual or other interactive content,
- Finance — applications that perform financial transactions or help users manage their professional or personal financial matters,
- Food & Drink — applications that help users either find a place to eat or to prepare meals themselves,
- Games — a separate category for all games, both single and multiplayer,
- Graphics & Design — applications that provide tools for creating digital art and other graphics,
- Health & Fitness — applications that help users live a healthier life by giving advice and instructions related to healthy lifestyle, stress management, diet, fitness etc.,
- Lifestyle — applications that contain information and content relating to a general-interest subject matter or service,
- Kids — applications that are designed specifically for children younger than 11 years old,
- Magazines & Newspapers — applications that offer subscription to magazine or newspaper content,
- Medical — applications that contain information regarding medical education or health reference for patients and healthcare workers,
- Music — applications that allow the user to interactively discover, listen to, perform or compose music,
- Navigation — applications that provide information that helps user get to a physical location,
- News — applications that provide live information about current events,
- Photo & Video — applications that assist in capturing, editing and managing photos and videos,
- Productivity — applications that help users organize their choirs or make some specific process more efficient,
- Shopping — applications that allow users to purchase consumer goods,
- Social Networking — applications that allow users to communicate with each other through text, voice, photo or video and contribute to community development,
- Sports — applications that are related to all kinds of sporting activities, both amateur and professional,
- Travel — applications that help users with planning, purchasing and any other aspects of travel,
- Utilities — applications that help users with solving a specific problem or completing a specific task,
- Weather — applications that provide forecasts, alerts and information related to weather conditions.
License Agreement (Optional)
Apple provides a standard EULA you can use that’s valid in all supported countries. You can provide your own if you want either for all regions or a few selected. For more details regarding creating custom EULA see here.
Price
You have to decide whether you want your app to be free or not. If not then you must select a price. Once you select a price in one chosen currency the App Store will automatically calculate the price for all other currencies in all supported regions. You cannot manually adjust them.
Tax Category (Conditionally optional)
If your app is free and doesn’t have any In-App Purchases, you can omit this step. Otherwise you have to select an accurate tax category for your app. Selected category will impact Apple’s tax calculation service and, as a result, your sales. Here are the categories available at the moment:
- App Store software — a default category assigned to your application. You should keep it if none of the categories below match your app better,
- Artwork — applications that sell digital artwork, excluding photographic images,
- Audiobooks — applications that sell individual audiobooks or offer a subscription to access a library,
- Books — applications that sell electronic versions of printed books, or digital only content that is published once, under a single title,
- Cloud media player — applications that sell access to audio or visual streams through the cloud,
- Cloud storage — applications that sell access to storage space on remote servers that can be accessed through the cloud,
- Dating — applications that help users in forming new interpersonal relationships by means of text, voice or video sharing,
- Fitness and health — applications that provide on-demand or live streaming of fitness classes. Applications that focus on broader healthy living should select the “App Store software” category,
- Games — all kinds of games, both single and multiplayer,
- Greeting cards — applications that allow users to purchase or create and send electronic versions of decorative cards to express good wishes for an occasion,
- Magazines and other periodicals — applications that deliver their content using an issue-base strategy or provide electronic versions of printed periodicals,
- Music and other audio — applications that allow to purchase both individual pieces and subscription access to music, podcasts, meditations, radio and ringtones,
- News publications — applications that provide information about current events with regular content updates. This includes digital first or electronic versions of printed newspapers. If the information provided by your application focuses on one narrow sector you should consider “Magazines and other periodicals” category instead,
- Photography — applications that sell photos or assist in their capturing, editing and management,
- Software training material — applications that deliver trainings, tutorials and manuals to specific software existing on the market,
- Video — applications that sell individual pieces, pay-per-view, or subscription based access to video content.
Pre-order availability
You have an option to make your app available to be pre-ordered. It will allow the customers to see your app on the App Store and order it before it’s released for download. You can learn more about pre orders in the App Store here.
Geographic availability
By default, your application will be available in all the regions supported by the App Store. You can change that and make it only available in selected countries.
Mac availability
iOS apps can be downloaded and used in Apple Silicon Mac computers that run at least the Big Sur version of macOS. You can disable this option.
Distribution method
You have to select one of two available distribution methods:
- Public — this will make your application visible to all users of the App Store in regions selected earlier. If you choose this option, you are also offered a choice to include a reduced price offer on the Apple School Manager for volume purchases. Selecting this option will grant a 50% discount to educational institutions when they purchase at least 20 copies of your app through the Apple School Manager,
- Private — this will make your app visible only on Apple Business Manager and Apple School Manager, regular users of the App Store will not be able to find and download it. If you choose this option, you will have to provide Organization ID and Organization Name as well.
Privacy Policy URL
A URL with the privacy policy of your company that will be visible on the App Store. It must lead to a valid web page, otherwise your app may be rejected during review.
User Privacy Choices URL (Optional)
A publicly accessible URL where users can learn more about their privacy choices for your app and how to manage them. This site should, for example, allow users to access their data, change them, or request for them to be deleted.
Types of data collected
Apple requires you to fill a form regarding how you’re collecting and using personal data of your users. This is a very broad topic, in short you must be aware of every kind of data that your app collects from its users and how exactly this data is processed and stored. You can read more about it here.
Conclusion
That’s a lot of information to prepare without a doubt; however you should not feel scared by it. Please note that some points mentioned above are optional and nothing bad will happen if you omit them. Many others require you only to select an option or to fill a form. So, as menacing as it may seem, filling the App Store Connect page for your app is not that difficult.
You should also keep in mind that Apple frequently changes the requirements and adds new fields to fill for applications to be released. This section will be extended in the future when necessary, however I cannot guarantee that it will always be up to date. If you see a field not described above while creating your app or some of the points I had written changed, then please refer to the official documentation here.
1.2. Releasing your application to App Store Connect
At this point I assume that you have developed your app to a point where it is ready to be released and it builds properly.
If so, then you can follow steps below to upload the build of your application to the App Store Connect:
1. Set build and version number
In the Project Navigator on the left side of the screen select the top-most file. You now have access to the main configuration file of your project. Make sure that you have selected the target for release, select the first tab — “General” — and at the very top of it you can assign build and version numbers. The rules for setting these values are as follows:
a. Version number must be greater than the version number of your previous release of this app,
b. Build number must be greater than the last build number you submitted under the given version number. Once you assign a new version number you can decide whether to continue iterating the previous build number or to start anew.
2. Set Bundle Identifier
In the configuration file in the same section as the Version and Build number you can set the Bundle Identifier. Make sure that it’s set to the value you created in the Apple Developer Console as instructed in section 1.1.
3. Set deployment info
In the configuration file in the section below the version and build number you can set various options regarding how your app should be released, such as:
a. Minimal version of supported iOS.
Keep in mind that some features of the Swift programming language as well as some of the libraries provided by Apple may not work if you set this value too low. It’s best to know what you’re going to support and set this value at the very beginning of development process to avoid unfortunate surprises later on,
b. Supported devices.
You can decide whether you want your application to be only for iPhones, only for iPads, only for Macs or for any combination of these three. Please remember that you will have to prepare a separate set of screenshots and previews for each device you select here, as described in section 1.1 of this tutorial,
c. Orientation.
You can choose any combination of orientations presented on the attached screenshot. Adding more orientations may allow your app to display its content in more interesting ways, however it requires more testing to make sure that all screens and transitions between them work as intended.
4. App icons
In the Project Navigator find and open Assets.xcassets file. Among the assets listed on the left side of this file find the one called “AppIcon”. Once you open it you will see all icons you need to add and their exact dimensions. You need to add all icons required for devices that you release for. If you only have one image file of your app icon that has the highest required resolution (or higher) then you have to either manually copy and resize them or use an online tool that will do that for you.
If there is no “AppIcon” asset then return to the main configuration file, open the General tab and in the “App Icons and Launch Images” section check the name of the asset you should be looking for.
If the field is blank, or the text in it is red, and after selecting it there is nothing to choose from, then it means that there is no asset for icons and you need to create one. Return to the Assets.xcassets file and press the “+” button at the bottom left of the file. On the list that appears select “iOS → iOS App Icon”. A new asset file will appear. You can name it however you want, just remember to return the main configuration file and assign it in the “App Icons and Launch Images”. If you do not see the asset you’ve just created, try cleaning (cmd+shift+k) and rebuilding (cmd+b) your application (On a side note, cleaning and rebuilding your app fixes most of the errors that you’ll encounter while using Xcode). You can also try navigating to a different file in your project and then returning to the main configuration file. After trying these solutions your new asset should be visible and ready to assign.
5. Signing & Capabilities
By default the signing of your application is managed automatically. If you want to change the default behaviour (by, for example, using your custom Provisioning Profiles and Signing Certificates) you should navigate to the main configuration file, open the Signing & Capabilities tab and fill the fields you find there as needed.
6. Scheme and target device
At the top left part of the screen, next to Build and Run and Stop buttons, you will find your currently selected scheme and target device:
If you only have one scheme then there is nothing to be done in that regard for you. If you have multiple schemes (for example for development and production environments, or for different versions of your app for different clients or devices) you should make sure that the correct scheme is selected. It is also usually a good idea to take one final look at the scheme settings, just to verify whether everything is set up as it should be. To open the scheme settings window press the currently selected scheme and then press “Edit scheme…”.
You also have to select the proper target device. If you select any simulator, the button to archive your project will be grayed out. You have to select either a physical device connected to your computer or “Any iOS Device” option.
7. Archive your application
In the top bar of Xcode press on “Product” and then select the “Archive” option. The archiving process will take some time and will not succeed if your application fails to be built. Should any errors in your code arise, fix them and try again. Once you have successfully archived your application an Organizer window will appear, where you will see your newly archived build. If you close this window by mistake you can reopen it by pressing “cmd+option+shift+o”.
8. Create an App Store Connect record for your application
While you don't have to fill out all the data described in section 1.1 yet, you have to create an App Store Connect record. For this you need the name, primary language, bundle identifier and SKU as you cannot create the record without them.
9. Upload your application
Once the App Store Connect record is made and your app is archived you can upload the build to the App Store Connect. In the Organizer window select the build you want to upload and press the “Distribute App” button. A series of windows will appear that will guide you through the uploading process.
When the upload finishes successfully you will have to wait for around 5 to 10 minutes, before the build appears on the App Store Connect. To find it, open your application’s page and navigate to the TestFlight tab.
Congratulations! You have successfully uploaded a build to the App Store Connect. Now you are ready for the final steps that must be taken before your application can be released and made available for its intended public.
1.3. The review process and final release
Now it’s time to fill all the fields in the App Store Connect page of your application with information you gathered in step 1.1. Remember to provide appropriate translations for each language you selected.
1.3.1. Export Compliance Information
There is one more thing to do before you can send your app to be evaluated by the Apple review team. Enter the “TestFlight” tab and take a look at your build. If it is in “processing” state, then you have to wait until it is finished. It usually takes around 30 minutes. If it is in “Missing Compliance” state, then you have to add Export Compliance Information. You can do it by pressing the “manage” button next to the “Missing Compliance”. If you see no such button, then your assigned role does not have access to it. Request a higher role or ask someone who has access to it to do it.
Once you press the “manage” button a new window will appear. You have to select whether or not your application uses encryption. If not, then there is nothing more to worry about. However, in this particular case, Apple has a very broad definition of encryption usage. If you, for example, send any requests over HTTPS, then you’re using encryption and have to select the “yes” option.
After selecting the “yes” option another window will appear. This time you’re asked whether your application qualifies for any of the exemptions provided in Category 5, Part 2 of the U.S. Export Administration Regulations. The text you will find under the question briefly explains when you can select “yes”. Most standard applications will qualify for these exemptions, unless they use custom encryption.
What does it all mean? Why do you have to answer these questions and what consequences does it have? This information is required by the law of the USA. In short, if you answer “yes” to the first question, then you are obligated to annually submit a year-end self classification report to the US government. Describing this process in detail goes beyond the scope of this tutorial, for now please refer to Apple's official documentation here. When creating the self classification report you may use an online generator, such as this one.
1.3.2. The Review Process
With the Export Compliance Information sent and all the necessary fields in the App Store Connect filled you’re finally ready to send your app for review. On App Store Connect enter the “App Store” tab, then on the menu on the left side of the screen select the version of the application you want to upload. Then, on the top right side of the screen you will see the “Submit for Review” button. Press it. If there are any errors in any fields you filled you will be informed of them now. Fix anything that appears at this stage, press the “Save” button and press the “Submit for Review” button again.
On the panel on the left side of the screen you will see that the status of your application changed from “Prepare for Submission” to “Waiting for Review”. It is now the last chance to edit some of your application’s information before the review starts. If you’re lucky, your application will remain in this state for a day or two. However, much longer waiting times sometimes happen. There is no upper limit that I’m aware of. If your app remains in this state for more than two weeks, it is recommended that you remove it from review and then submit it again immediately. I don’t know how the inner algorithms of Apple work exactly, but this usually seems to reduce the waiting time.
The next state your app is going to be in is “In Review”. During this time the Apple review team will see if your application complies with all their review guidelines. They are usually pretty strict, so it’s good to know what to expect in advance. You can read the rules here. The file is quite long, and it gets longer each year as new guidelines are being released, but still it will take you less time to read it thoroughly than to rewrite a potentially large portion of your app to comply with a rule you didn’t know existed. But what if you thought your app complies with all the guidelines but it gets rejected anyway?
1.3.3. Negative Review
If the current status of your application is “Rejected” or “Metadata Rejected”, it means that it did not pass the review. The detailed reason why will be sent to you in a text message by an Apple employee. You can access this message through the App Store Connect. It will point out which point of the Apple review guidelines exactly is broken and what exactly broke it. Let’s consider the possible situations.
“Metadata Rejected”
This status means that your application didn’t necessarily break any of Apple’s guidelines but the information you gathered in step 1.1 and provided in the App Store Connect page is either lacking or invalid. Read the reviewer’s message carefully and adjust the metadata accordingly. Luckily, you do not have to prepare another build for your app, you can send the same one again.
“Rejected”
It’s the worst of the two. It means that the build you uploaded directly breaks one of the guidelines and you will most likely have to prepare a new one. Most likely, because you have a chance to defend yourself against Apple’s accusations (after all, the people working in their review team are just humans and tend to make mistakes). Once you read the reviewer’s message you have an ability to respond to them. If a written message is not enough to solve your case you can schedule a phone call.
While possible to successfully defend your build that way it is a very rare occurrence. That’s why you must be prepared to make necessary changes to your app, according to the message received from the reviewer. When all issues are fixed, prepare and upload a new build using information from section 1.2 of this document. Once it’s finished processing and you have filled the Export Compliance Information for it (unfortunately you have to do it for each new build you upload) you can submit your app for review again.
1.3.4. Positive Review
When your application is reviewed positively one of three things happens, depending on which release option you selected while filling out the metadata.
- If you selected “Manually release this version”, the status of your application would change to “Pending Developer Release”. You can now, at any time, release your application to the App Store. Keep in mind that after you press the release button, your app will need about an hour before it’s available to be downloaded by the App Store users,
- If you selected “Automatically release this version”, the status of your app would change to “Ready for Sale” and it would be already available on the App Store,
- If you selected “Automatically release this version after App Review, no earlier than X”, then it is very similar to the previous option, but the release would only happen after the “X” date.
That is the end of the process, if everything went well, your application is on the App Store and ready to be downloaded.
2. Uploading a new version of an existing application
This isn’t much different from uploading a first version of your application. The archivization process is exactly the same as described in point 1.2. Just remember to increment the build and version numbers properly. You can leave all the metadata you collected during step 1.1 unchanged if no change is required. The only difference is that, there is going to be a couple more fields to fill:
1. What’s New in This Version?
A new text field appears above the App Previews and Screenshots. You should write what new features, bug-fixes and changes the users may expect after downloading the update. You can keep it as brief or as verbose as you want. At most 4000 characters.
2. iOS Summary Rating
When uploading a new version of an existing app, you must make a decision whether you want to keep your existing rating, given by your users, or make a fresh start and erase them all.
That’s it, except for these two points, the process goes exactly the same as in case you create a new app.
Hope this guide was helpful for you and submitting an app on the App Store is no longer a problem. Good luck implementing something new!
Last update: 27.10.2021