Chapters

Hide chapters

Real-World iOS by Tutorials

First Edition · iOS 15 · Swift 5.5 · Xcode 13

Before You Begin

Section 0: 4 chapters
Show chapters Hide chapters

14. Deploying to the App Store
Written by Renan Benatti Dias

You’ve arrived at the last chapter of this book. It’s finally the time you’ve been working for: sending your app to the App Store. This will be the sum of all your hard work. After your time creating, developing, improving and debugging your code, your job will finally pay off.

In this chapter, you’ll learn how to submit your app to the App Store and all the steps required to release your app. You’ll also learn how to distribute your app to Beta Testers and get feedback from them.

More specifically, you’ll learn how to:

  • Create an Apple ID and enroll in Apple’s Developer Program.

  • Archive and upload a build of your app to Apple.

  • Create your app’s Product page in the App Store.

  • Use TestFlight to beta test your app and get feedback from testers.

Additionally, you’ll learn about the App Store Review Guidelines and how to submit your app for review.

Getting Started

Apple has high criteria for apps it allows in the App Store. You’re not allowed to have an app in the App Store unless you follow many guidelines Apple created to ensure the quality of software in the App Store. Not only that, but Apple also requires you to be a part of their developer program.

Before you start uploading your apps to the App Store, there are a couple of things you’ll need to do and have to continue. The first one is an Apple ID.

Note: If you want to follow along with this chapter, you’ll have to have these requirements. Otherwise, you may not be able to generate the necessary certificates and profiles or even access App Store Connect. Make sure you have all the requirements to follow along with this chapter.

Understanding the Apple ID

The Apple ID is your main account in Apple’s ecosystem. It’s how Apple identifies developers and customers. You use it to access the App Store, Apples Services and every other Apple portal. Developers also use an Apple ID to access Apple’s developer portal, App Store Connect.

If you already use any of Apple’s products, you most likely have an Apple ID.

This section will teach you how to set up an Apple ID. Even if you already have an Apple ID, it’s common practice to create one for your app. That way, it’s easier to scale if you end up founding a company for it.

If you already have an Apple ID and want to use it here, you can skip this section.

Creating an Apple ID

You can create a new Apple ID using an iOS, iPadOS or macOS device by opening the Settings app or when you set up your device. Here, you’ll use Apple’s Apple ID portal to create a new Apple ID.

First, open Apple’s Apple ID portal in Safari.

Next, click Create Your Apple ID at the top right corner.

Fill out the form with your first name, last name, region and all required information. Pay attention to the email you use here because it’ll be your new Apple ID.

Follow the steps onscreen to verify your information.

If you have any trouble, take a look at Apple’s page How to create a new Apple ID.

Activating Two-factor authentication

Two-factor authentication is an extra layer of security on top of your account’s password. It provides a secure way to have trusted devices that allow you to sign in to your account through a verification code.

You have to activate two-factor authentication to use your Apple ID to upload your apps. You can activate two-factor authentication on iOS, iPadOS or macOS or use the Apple ID portal.

Go to Apple ID portal and sign in. The page will prompt you to upgrade your account security with two-factor authentication. Click upgrade and enter the phone number you want to receive verification codes when you sign in. Click Continue and enter the verification code to verify your phone number and turn on two-factor authentication.

It’s highly recommended that you set up your Apple device with two-factor authentication. That way, you have a trusted device to sign in with your account.

Check out Apple’s Two-factor authentication for Apple ID page to learn more about two-factor authentication and how to activate it with a device.

Note: The video course Publishing to the App Store on raywenderlich.com also walks through the process of creating a new Apple ID.

Apple’s Developer Program

Just having an Apple ID isn’t enough. Apple is very strict about who and what goes into the App Store. It tries to create the most secure place for its customers. To that end, Apple requires that every developer that wants to publish their app in the App Store enrolls in the Apple Developer Program.

This program gives developers access to Apple developer tools like Xcode, CloudKit, TestFlight and App Analytics, to name a few. As a member of the developer program, you also have access to beta software like iOS and iPadOS beta versions.

The Apple Developer Program costs $99 per year and you enroll it using an Apple ID.

To enroll in the Apple Developer Program, open the Developer Portal and sign in to your account.

Apple has two types of enrollments: one for individuals and one for organizations. Each has different legal, tax and financial implications, but both have the same access to developer tools.

If you’re using your Apple ID, it’s ok to enroll as an individual. However, if you’re publishing an app in the name of a company, you’ll have to enroll as an organization.

Follow the onscreen instructions and fill out the information to enroll in the program. Check out Apple’s Enrolling and Verifying Your Identity with the Apple Developer App page to read detailed steps on how to do this.

Setting up Xcode

When creating a new project in Xcode, you have to choose a few options, including the Organization identifier. With it, Xcode also generates the Bundle Identifier. Apple uses these to identify the team and app in their system.

PetSave already comes with a Bundle Identifier, in this case, com.raywenderlich.PetSave. You’ll have to change this identifier to one of your own.

Changing the Bundle Identifier

A Bundle Identifier is an app’s unique identifier inside Apple’s system. You can’t change it later, so think carefully about the identifier you want to use.

It’s common practice to use the reverse DNS notation of the app’s website, and since this is a unique identifier, you can’t use identifiers that other apps already use. That’s why you can’t use com.raywenderlich.PetSave.

Open the starter project for this chapter and select your target in the project navigator. In the General tab, change the Bundle Identifier to your identifier.

Code Signing

In the same target, open Signing and Capabilities. Make sure to check the box for Automatically manage signing.

This makes Xcode responsible for managing the app’s certificates and profiles, removing a rather complex and tedious task from your hands.

Note: If you wish to learn more about app certificates and profiles, check out Chapter 4, Code Signing & Provisioning of our book iOS App Distribution & Best Practices.

A warning may appear in the status section. That’s because you have to sign into Xcode with your Apple ID and select the team for your app.

Click Xcode ▸ Preferences… and select the Accounts tab.

Click the + at the bottom left of the view to add an account.

Select Apple ID and enter the Apple ID you enrolled in the Apple Developer Program. You must use the Apple ID you enrolled in the Apple Developer Program. Otherwise, Xcode won’t be able to upload your app to Apple.

Next, you’ll receive a verification code for two-factor authentication. Type the code in the field.

Success! You configured Xcode with your Apple ID account.

Go back to the project navigator and select your team. This will remove the warning in Signing and Capabilities.

You’re done setting up Xcode. Now, you’ll create your app in Apple’s portal to upload and send it to review.

Understanding the App Store app page

It’s not enough to just upload your app to Apple. You also have to create your app’s page so that Apple can display it in the App Store. Your App page is the face of your app when people browse or search the App Store for apps related to pets.

Page Structure

In the page, you’ll find the app’s name, icon, subtitle, app reviews, screenshots, description and much more.

This page is the face of your app to any App Store customer. A good and informative page will engage people and get them to download your app, making it more popular over time.

Note: To learn more about App Store app pages, check out Apple’s Creating Your Product Page.

Next, you’ll learn how to set up your app page and good practices to make your app stand out.

Creating a new App ID

Before creating your app inside Apple’s portal, you must create a new App ID. Apple uses the App ID to identify your app in its system.

In Safari, open Apple’s developer portal. Click Account and enter your Apple ID and password. Next, select Certificates, Identifiers & Profiles and click Identifiers.

Here, you’ll find and manage all the identifiers for your apps.

Click the blue + next to Identifiers and select App IDs from the list.

Click Continue. On the next page, leave App selected and click Continue again.

Now, fill out the form with a description and the Bundle ID. The description can be anything you wish to use to identify your app, and you can edit it later if you want. The Bundle ID must be the one you used in Xcode for your app, and you can’t change this later.

Leave the options under Capabilities and App Services unchecked because PetSave doesn’t use any of those.

Click Continue. Review everything and click Register to finish.

Fantastic! You’ve created your new app identifier. Now, off to create your new app page.

App Store Connect

Still in Safari, open Apple’s developer portal again. Next, select App Store Connect and click Go to App Store Connect.

Note: You can also access App Store Connect by using the following link https://appstoreconnect.apple.com in Safari.

This is the App Store Connect page. It gives you access to multiple tools like App Analytics, Sales and Trends and Payments and Financial Reports for growing and managing your apps inside the App Store.

Next click My Apps. This page lists all the apps you create under your account and lets you track the status of your apps.

On this page, click the blue + at the top left of the page. Then click New App to open a form with the information needed to create your new app.

Under Platforms, check the box for iOS. Type PetSave-Test for the name and select English (US) as the primary language. The name you choose here will be the name of your app in the App Store.

Next, select the Bundle ID you just created under Identifiers on the Certificates, Identifiers & Profiles page. Also, type the same Bundle ID under SKU. SKU stands for Stock-keeping Unit. This is an internal-facing identifier to match your app to your team.

Your form will look similar to this:

Note: The name you choose has to be unique. If another app already uses your app’s name, you can either try to file a claim or change your app’s name. Your Bundle ID and SKU should also be different from the image.

Click Create to finish.

Great job! You created your app in App Store Connect.

Notice that your app has a yellow status on the left.

That means your app has yet to go through Apple’s review process before going to the App Store. You have to fill out some information about your app so that Apple can review it.

But before you do that, you’ll upload a build of your app to the App Store Connect.

Uploading a build

Now that you have your app record set up in App Store Connect, it’s time to archive and upload a build of your app.

An archive of your app is a build that has all your app’s symbols and debug information. With it, you can send your app to Apple and distribute it in the App Store.

You’ll use Xcode to archive and upload this build to App Store Connect.

Build Numbers and semantic versioning

Before you archive your app, it’s essential to understand how Apple and developers track software versions.

Open the project navigator and click General. Inside the Identity section, notice the Version and Build fields.

The Version field is a number that represents a version of your app. Usually, developers adopt semantic versioning, with a three-component number. The first number represents a major version, when the developer adds new features to the app. The second number represents a minor version. You change this number when you enhance an existing feature. The last number represents a patch or bug fix.

The Build field is a number that uniquely represents a build of a version. One version can have any number of builds, as long as they have different build numbers.

If you’re working on your first version of the app, you might want to upload different builds to the App Store Connect. To do this, bump the build number in the project navigator and upload another archive.

Since you want to upload the first version of PetSave, leave the version number 1.0 and the build number 1.

Archiving your App

In Xcode, set the build destination to Any iOS Device (arm 64).

This generic target tells Xcode to build your app without a specific device in mind.

Next, click Product ▸ Archive.

This will trigger a build of PetSave and create an archive of it. After Xcode compiles your code, you’ll see the Organizer window with your archived app.

Note: If you don’t see this window but notice the archive operation has finished, you can open the Organizer window by clicking Window in the toolbar, then clicking Organizer or by pressing Command-Option-Shift-O.

Here, you’ll find all the archives of your apps. Select your latest archive, and click Distribute App.

Xcode lets you choose how you want to distribute your app. You can select:

  1. App Store Connect to distribute your app through TestFlight and the App Store.

  2. Ad Hoc to distribute your app to selected devices.

  3. Enterprise if you want to distribute your app to an organization.

  4. Development for distributing your app to the development team.

Select App Store Connect and click Next.

Note: If you want to learn more about other ways that you can distribute apps, check out Chapter 5, Internal Distribution of our book iOS App Distribution & Best Practices.

Leave Upload checked to send the app to App Store Connect and click Next.

Leave the App Store Connect distribution options checked and click Next. You want to upload the debug information of your app as well.

Finally, your app needs to be re-signed for distribution. Leave Automatically manage signing checked to let Xcode handle this for you and click Next.

Finally, Xcode shows a review screen for you to review your upload.

Review the information and click Upload. Xcode will start uploading your app to App Store Connect.

Wait for Xcode to finish uploading your build. This might take a while, depending on your internet connection.

Success! You managed to upload the first build of PetSave.

With that done, it’s time to finish filling out information about your app to submit it for review.

Submitting your app for review

Now you’re in the last phase of getting your app to the App Store: submitting it for Apple’s review.

Apple reviews every app before it goes to the App Store. Every version you upload has to go for review before your customers can download it. Apple takes its review process seriously and is strict about what it allows in the App Store.

App Store Review

When you submit your app for review, an Apple employee beta tests your app to make sure it follows the App Store Review Guidelines and Apple Developer Program License Agreement. They also look for any crashes or issues with your app.

If they find a problem, Apple rejects your app and gives you feedback on what they found. They might find a problem that violates their policies or even a crash.

If Apple rejects your build because of a guideline, you can still plead your case inside the Resolution Center. Apple gives you feedback and even screenshots about why they rejected your app. If you disagree with the feedback, you can send a message pleading your case.

Note: To learn more about Apple’s App Store Review Guidelines, check out the official documentation.

Setting up Metadata

On App Store Connect, select PetSave and click 1.0 Prepare for Submission. Here, you’ll set up information to build your app page in the App Store. You can update this information every time you upload a new version to App Store Connect.

You’ve already provided some information, like the app’s name. Now, you’ll set up the screenshots and description of PetSave.

Adding screenshots

Find the folder named App Store Screenshots inside the materials folder. Open it and drag and drop the screenshots in the screenshot field.

Customers will see those screenshots when they open your app’s page in the App Store. Apple requires you to upload screenshots for devices with 6.5” and 5.5” displays. If your app also runs on iPad, you must upload screenshots for the iPad Pro (3rd Gen), the one with a notch, and the iPad Pro (2nd Gen).

You must take good screenshots of the app’s features. Most customers go straight to the screenshots section to see if your app does what they think it does.

Below the screenshots, you’ll find a couple of empty fields. Fill out each with:

  1. Description: A description of PetSave, with its features and functionality. This is where you convince users that PetSave is the best app for finding pets.

  2. Keywords: Keywords are words that make an App Store search more accurate and help find your app. Use words that people would search when looking for an app to adopt a pet.

  3. Support URL: This is an URL people can use to get help with anything regarding your app.

  4. Marketing URL: This URL is for people who want to learn more about your app and its features.

Submitting your app for review

Next, you must select the correct build to submit for review.

Scroll down to the Build section and click the blue +. Then select your most recently uploaded build and click Done.

If this is your first time uploading a build, you might face a popup about app encryption.

Apple requires you to disclose if your app uses any kind of encryption so that they can review it properly. Since PetSave does not use any particular encryption besides the standard one, simply select No and click Done.

With that, version 1.0 uses build number 1, and App Store Connect is already smart enough to fill the app’s icon.

App metadata

Before you move on, fill out the Copyright field. This field should be the name of a person or organization that owns the app. If you’re releasing an app yourself, you can use your name here. However, if you’re releasing an app on behalf of a company, you must use their legal name. For example, the Ray Wenderlich app uses Razeware 2022.

Next, scroll down to App Review Information and uncheck Sign-in required.

PetSave doesn’t require users to sign in, but you’d have to provide Apple with an account to review your app if it did. You can also fill out the notes field with information about your app the reviewer might find helpful.

Scroll to the top and click Save to save all the information you’ve changed so far.

Finally, it’s time to submit to Apple. If you’re working on your app, this is when you’d click Submit for Review, next to the Save. Your app status would then change to Waiting for Review.

After Apple approves your build, the status of your app changes to Ready for Sale, indicating you can release your app in the App Store. If they find a problem, the status will change to Rejected, and you’d have to either respond to the issue in the Resolution Center or upload a new build.

Suppose this was an update to an existing app. Once your new version was marked ready for sale, you’d have the option to distribute it to all users immediately or to have apple distribute it slowly over seven days. This lets you and your team stop the update and fix any regression or breaking changes to existing code caused by the update.

Using TestFlight to beta test your app

Before you finish this chapter, there’s one last thing you should learn about App Store Connect: TestFlight.

TestFlight is Apple’s solution for beta testing your apps. You can use it to distribute builds to developers or internal QA testers. You can even distribute to external testers by creating invite links.

Why beta test?

All software has flaws. No matter how much you code, test and safeguard your code, software is so complex that there’s bound to be a problem somewhere. But that doesn’t mean you can’t track problems and fix them.

Developers have many tools at their disposal to find and mitigate problems in their code. For example, throughout this book, you’ve used unit testing to mitigate problems with your code.

But even so, developers may become too familiar with their code and miss a couple of flaws. With beta testing, you allow a fresh pair of eyes to analyze your app and give crucial feedback. People that aren’t working on the app may find problems with features, UX and much more.

Using beta testing to find problems and bugs

TestFlight is a powerful tool for beta testing your app and getting valuable feedback before releasing it to the general public. Beta testers can use your app before everyone else and find problems or suggest improvements.

You’ll learn how to add people as internal testers to test PetSave.

Signing testers to beta test

Before you release PetSave for testers, you must invite them for beta testing. Back inside App Store Connect, click Users and Access.

Next, click the blue + under the page’s heading. The page will open a form for a new user.

Fill out their first name, last name and email. Then check Developer. When adding people to your account, you have to select what kind of role they’ll have. Each role has different permissions and access to tools inside App Store Connect.

Finally, click Invite at the bottom. Apple sends an email invitation to the people you invite to join your team.

Once the person accepts the invitation, they’ll show up as a user under Users and Access.

Back inside App Store Connect, select your app and click TestFlight at the top of the page.

Under Internal Testing, select App Store Connect Users and click the blue + next to Testers.

Next, select all the users you wish to add to the App Store Connect Users group and click Add.

TestFlight lets you create groups and manage which group gets access to different builds and different apps.

App Store Connect sends an email inviting the selected users to download your app inside the TestFlight app. You can even see which users installed the app.

Adding test Information

Now that beta testers can download your app, you have to let them know what they should focus on when testing the app. TestFlight has a Test Details field that lets you write what’s new for beta testers to test.

Click the build you just released in TestFlight.

On this page, you can let testers know what to look for in this new build. Write about the initial features of PetSave and click Save.

Getting feedback

After adding a description to Test Details, you’ll find the same description in TestFlight under What to Test.

Also, when testers first download and open the app, an overlay view shows them the same text.

It also tells testers how to give feedback by taking screenshots.

Testers can go back to the TestFlight app and tap Send Beta Feedback, where they can write their feedback and attach a screenshot.

You’ll then find this feedback back inside the TestFlight tab under Feedback and Screenshots.

Key points

  • You have to enroll in Apple’s Developer Program to submit your app to the App Store.

  • Code signing can be challenging, but you can let Xcode do most of the work for you.

  • The App Store app page is the face of your app. Build a nice, informative page, and people will be more interested in your app.

  • You use Xcode to create archives of your app and upload them to Apple.

  • Apple reviews all builds you submit to the App Store, approving or rejecting depending on their guidelines.

  • TestFlight is a powerful tool for beta testing your apps.

Where to go from here?

This is the last chapter of this book, but that doesn’t mean there’s nothing left to learn about sending your app to the App Store.

If you’re interested in learning more about this topic and best practices for distributing your app and beta testing, check out our book iOS App Distribution & Best Practices.

Have a technical question? Want to report a bug? You can ask questions and report bugs to the book authors in our official book forum here.
© 2026 Kodeco Inc.