Deploying the Ionic iOS Application to App Store
Tags: ionic, deployment, ios, appstore
Published: 2022-08-22 09:41:08

---
title: Deploying the Ionic iOS Application to App Store
published: true
date: 2022-07-13 04:02:34 UTC
tags: ionic,deployment,ios,appstore
canonical_url: https://enappd.com/blog/releasing-ionic-app-on-ios-app-store/199/
---

![](https://cdn-images-1.medium.com/max/1024/1*_BN6Jkc0HxGHRK1lgBzhww.png)

Deploying an Ionic iOS application to the App store is easier than deploying an Android application. In the Android application, we have to create an APK/Bundle and sign the APK/Bundle with a Keystore. And in the case of iOS applications, Xcode handles most of the signing and other stuff.

> Note :- App Store is very strict about the app details, correct information, legal use of resources — all info provided should be very clear and true.

There are some Prerequisites to following this tutorial and deploying the app to App Store.

1. You must have [Apple Developers Account](https://developer.apple.com) ([App Store connect](https://appstoreconnect.apple.com/login) Account).
2. You must have [Xcode](https://developer.apple.com/xcode/) installed on your Mac.
3. The Most important:- You should have an Ionic application.

> Now let start, and get your hands dirty into the Code. It’s enough of talking.

![](https://cdn-images-1.medium.com/max/450/1*qtLLXKOJJjKKNbLcTEzWpg.gif)

#### Register into Apple Developers Account

Before Registering you have to enroll in some of the programs. To get all the information about registration. Goto [Enroll Program](https://developer.apple.com/programs/enroll/).

### Adding iOS platform and Building the Ionic application.

As we already assume that you know how to start an Ionic Application. We will not go into details about it, you can check out our other blogs for Ionic app tutorials.

#### Add iOS app platform

Add the iOS platform to your ionic app with these commands (run from project root) :

```
$ npm install [@capacitor/i](http://twitter.com/capacitor/android)os
$ npx cap add ios
```

You can sync the existing installed plugins and web assets using

```
$ npx cap sync ios
```

This will update the corresponding pods for the iOS project and open the project in Xcode using

```
$ npx cap open ios
```

Click on **App** in left menu → **Signing & Capabilities ,** select your development Team, keep **Automatically Manage Signing**  checked.

![](https://cdn-images-1.medium.com/max/800/1*JJ8veDQk2jS38XGxEPZ6Rw.png)

### Archive the iOS Application using Xcode.

To Build the iOS application, Open XCode and Select Any iOS Device from the top of the window.

![](https://cdn-images-1.medium.com/max/1024/1*sGd7usTGMkVN_icy_15XkQ.png)

As we want to deploy App, which can be run on any iOS device. That's why we have to select **Any iOS Device**. Then Click on **Product** and Select “ **Build** ”. This command will build the App code and will check if there is any Error in Plugins or in Code. If there is no error, then we are good to go (Let's Go..!)

But before Archiving and following the further step, you have to create an app in app store connect. To Create it, goto to the home page and click on create app option.

![](https://cdn-images-1.medium.com/max/1024/1*2jc04UKJzcwR8xKpH6O0Sw.png)

It will ask for the **App name** and a few more information, here Bundle ID is handled by the XCode. When you click on Bundle ID, it will show some of the bundle IDs connected to your Apple ID.

![](https://cdn-images-1.medium.com/max/558/1*V7nI_VfcXbfIkw_nG4WvfA.png)

Once the app is created you will see a Dashboard (Now Xcode will check for the App in App Store Connect), where you have to input the information about the Application like _App Screenshots_, _App Logo,_ and _Login_ Information.

![](https://cdn-images-1.medium.com/max/1024/1*q45xcchkSYJj4YpEAyPBMw.png)

> **Note :- If your App has some login mechanism then provide it in the App Access section. As Apple Team will log in to the app and will check the app in detail.**

Now select the **Archive** option in **Product** Options in XCode, This will create a new version of the iOS build for the code. It creates a  **.ipa** file that is equivalent to the  **.apk** in Android.

![](https://cdn-images-1.medium.com/max/1024/1*d4-D52u3fmzYUjitYXzayQ.png)

Once the iOS app is archived, you will get a popup to select Distribution Method. Click on Distribute option, it will ask which way you want to distribute the application.

![](https://cdn-images-1.medium.com/max/1024/1*_ZA8wFfMf2VCGNhSd4DIcg.png)

As we want to distribute the iOS app to the App Store, so select **App Store Connect** and click on “ **Next** ”. After selecting Platform, we have to select the **destination** for the App to be uploaded.

![](https://cdn-images-1.medium.com/max/1024/1*FgiHhI_MINMIJziXb_AoVA.png)

To upload this version of the application, select the “ **Upload** ” option and click on “ **Next** ”. This will take some time to upload the Archive to the App Store.

![](https://cdn-images-1.medium.com/max/1024/1*DWaLUHks69IFn4nKInkzbA.png)

While Uploading the Archive, it will ask for some options. Like App Store Connect Distribution options.

![](https://cdn-images-1.medium.com/max/1024/1*3fF7J429hwRFqz1zxiyDzg.png)

Keep it as it is, as we want to upload the App Symbols and Manage Version automatically by the XCode. Now click on “Next”.

Now the important part comes that makes our work much easier, is managing to sign of Archive. The “Automatically manage to sign” option is auto-selected. Don’t touch it unless you love problematic life 😂, XCode is here to make your life easy.

> **Note :- If you want to Sign the Application manually. Check the later part of the Blog. ⬇️**

![](https://cdn-images-1.medium.com/max/1024/1*hJ2cLEzFG3rEwyJvKjqqcw.png)

Now click on “Next”, Finally this will Process and it will show the summary of the Application. Much awaited option “ **Upload** ” button will come up.

![](https://cdn-images-1.medium.com/max/1024/1*Rl45PACZObi9-cKSwuIKYQ.png)

Finally, it is uploading now….!! 😎. If you see it, it shows uploading **App.ipa** file. This means the Archive contains the **IPA** file. Which is being uploaded to the App store connect.

![](https://cdn-images-1.medium.com/max/1024/1*pWptGVC51k3kIQZi8FTRrg.png)

Yay, our application is being uploaded to the App store connect. Now we will move to the the **App Store Connect** Dashboard. To set up and publish the application.

![](https://cdn-images-1.medium.com/max/1024/1*Qk_jHM7SJnOtAa7WXftqwA.png)

### Checking the App on App Store Connect.

To check App is there in App Store Connect Dashboard. Goto TestFlight Tab — you will see the App uploaded there. From there it can be used for internal testing OR for Deploying the application to the App Store.

![](https://cdn-images-1.medium.com/max/1024/1*jhX4gNMaszhkC_dWM9dt9w.png)

Now to deploy the application, you have added a build on the Dashboard. Scroll a bit and click on the Select a build option.

![](https://cdn-images-1.medium.com/max/1024/1*BXp2HJq720_f-JEOnbZ_qQ.png)

Selecting a Build will show you the apps present in Testflight. You have to select the proper version of the application (currently there’s only 1 version available).

![](https://cdn-images-1.medium.com/max/552/1*JgpfZdF2vqYGm6fvjEcbnw.png)

Now we have filled in all the information and selected the Build. It is the time for submitting it for the Review.

![](https://cdn-images-1.medium.com/max/1024/1*ZLljG-BV1vzGOjG6ZSinvg.png)

Click on Submit for Review and App will be submitted for review to the Apple Team. It can take up to a week to review. But Apple Team will Review it and will contact you if there is some problem OR they will publish the Application🎉.

### Signing the iOS Application Manually

To sign the Application manually — when you want to control the signing steps completely, you have to create a certificate and provisioning profile in the [App Store Connect](https://developer.apple.com). Once you login into App Store connect, Goto [_Certificates, ID and Profiles_](https://developer.apple.com/account/resources/certificates/list) and create a certificate.

![](https://cdn-images-1.medium.com/max/1024/1*X3uzVnd0Xh3NiSdA6RUxpA.png)
Click one **+** and it will ask for “_what type of certificate you want to create_”. We have to select the Apple Distribution option and click on **continue**. Now it will ask for “Certificate Signing Request” which we have to create using Mac.

![](https://cdn-images-1.medium.com/max/1024/1*OTLOPYjxN3NPwse84uRQ-Q.png)

#### Creating Certificate Signing Request

Open **Keychain Access** on your Mac, goto **Certificate Assistance** , and “Request a Certificate from Certificate Authority”. It will open a Certificate Assistance and you have to enter an Email ID (Apple ID) and select the Saved to Disk option. Click on continue to Create and Download the Certificate Signing Request.

![](https://cdn-images-1.medium.com/max/618/1*i7OYAIwTHR7IDsXyemL0aw.png)

Once CertificateSigningRequest (.certSigningRequest) is downloaded. We have to upload that into [Adding Certificates Section](https://developer.apple.com/account/resources/certificates/add).

![](https://cdn-images-1.medium.com/max/1024/1*8832cgYKBEiZunvt_4XL3A.png)

#### Creating Profile

We have created the Certificate, now go to [Profiles Section](https://developer.apple.com/account/resources/profiles/list) and Add a new profile. It will ask for “_which type of profile you want to add_”. Select the App Store option from Distribution Section.

![](https://cdn-images-1.medium.com/max/1024/1*iZloEcfAUUK5ex79GkbJxQ.png)

After clicking on Continue, we have to select the App (using App ID). When you click on the dropdown, it will sync with XCode and suggest the already existing Apps (as Bundle Name). Select the App and click on “Continue”.

![](https://cdn-images-1.medium.com/max/1024/1*BlWW9LluF4DuF26QRn5AJw.png)

Once you click on continue, It can ask for the name of the Profile (Use any name). And you can download the Profile (.mobileprofile) after the process.

Now we have the **Certificate** and **Profile**. It’s time to manually sign the iOS application.

#### Manually Sign the iOS application

After selecting the Manually Signing option. It will ask for a Certificate and Profile.

![](https://cdn-images-1.medium.com/max/749/1*IKjMJ1x_5iKXjhKRyKpcMQ.png)

Click on next after selecting the Downloaded Certificate and Profile. Then XCode will sign the iOS application and Send it to the App store connect (Test Flight). Then you can select the Build Version on the Release Page (Shown Above). And your manual signing process is complete.

### Conclusion

Now our iOS Application is being deployed to the App Store. You can share the link to the app with the users — after the Apple team reviews the App. So they can download the application and use it. Stay tuned to [**_Enappd Blogs_**](https://enappd.com/blog/) for more Awesome Blogs.

### Next Steps

If you liked this blog, you will also find the following blogs interesting and helpful. Feel free to ask any questions in the comment section

### Ionic Capacitor

- **Basic**  — [Geolocation](https://enappd.com/blog/use-geolocation-geocoding-and-reverse-geocoding-in-ionic-capacitor/131) | [Barcode & QR code](https://enappd.com/blog/qr-code-and-barcode-scanning-with-ionic-capacitor/127) | [Facebook Login](https://enappd.com/blog/facebook-login-in-capacitor-apps-with-ionic-angular/128) (Angular) | [Facebook Login (React)](https://enappd.com/blog/facebook-login-in-ionic-react-capacitor-apps/118) | [Icon and Splash](https://enappd.com/blog/icon-splash-in-ionic-react-capacitor-apps/114) | [Camera & Photo Gallery](https://enappd.com/blog/camera-and-gallery-in-ionic-react-app-using-capacitor/110) | [Debugging with browser](https://enappd.com/blog/debugging-ionic-apps-using-chrome-and-safari-developers-tools/167)|Theming in Ionic apps
- **Advanced**  — [AdMob](https://enappd.com/blog/implement-admob-in-ionic-react-capacitor-apps/135) | [Local Notifications](https://enappd.com/blog/local-notifications-in-ionic-5-capacitor/132) | [Google Login](https://enappd.com/blog/google-login-in-ionic-react-capacitor-apps/122) | [Twitter Login](https://enappd.com/blog/twitter-login-in-ionic-react-capacitor-app/121) | [Games using Phaser](https://enappd.com/blog/html5-games-in-ionic-capacitor-using-phaser/115) | [Play music](https://enappd.com/blog/play-music-in-ionic-capacitor-apps/112) | [Push Notifications](https://enappd.com/blog/firebase-push-notification-in-ionic-react-capacitor/111)

### Ionic Cordova

- [Taxi Booking App example with Ionic, Node, Express and MySQL](https://enappd.com/blog/ionic-app-with-nodejs-express-mysql-sequelize-taxi-app/160)
- Ionic Payment Gateways — [Stripe with Firebase](https://enappd.com/blog/integrate-stripe-payment-gateway-in-ionic-5-apps-and-pwa-using-firebase/158) | [Stripe with NodeJS](https://enappd.com/blog/ionic-5-stripe-payment-integration-firebase-cloud-functions-vs-node-express-based-server/159) | [PayPal](https://enappd.com/blog/paypal-integration-in-ionic-apps-and-pwa/142) | [Apple Pay](https://enappd.com/blog/how-to-integrate-apple-pay-in-ionic-4-apps/21) | [RazorPay](https://enappd.com/blog/how-to-integrate-razorpay-in-ionic-4-apps-and-pwa/20)
- Ionic Charts with — [Google Charts](https://enappd.com/blog/ionic-4-charts-using-google-charts/66)| [HighCharts](https://enappd.com/blog/adding-charts-in-ionic-4-apps-and-pwa-part-3/60) | [d3.js](https://enappd.com/blog/adding-charts-in-ionic-4-apps-and-pwa-part-2/54) | [Chart.js](https://enappd.com/blog/charts-in-ionic-4-apps-and-pwa-part-1/52)
- Ionic Authentications — [Via Email](https://enappd.com/blog/firebase-email-authentication-in-ionic-apps/153) | [Anonymous](https://enappd.com/blog/implement-anonymous-login-in-ionic-apps-with-firebase/154) | [Facebook](https://enappd.com/blog/facebook-login-in-ionic-apps-using-firebase/150) | [Google](https://enappd.com/blog/implement-google-login-in-ionic-apps-using-firebase/147) | [Twitter](https://enappd.com/blog/twitter-login-in-ionic-4-apps-using-firebase/24) | [Via Phone](https://enappd.com/blog/firebase-phone-authentication-in-ionic-5-apps/169)
- Ionic Features — [Geolocation](https://enappd.com/blog/ionic-5-complete-guide-on-geolocation/141)| [QR Code reader](https://enappd.com/blog/ionic-complete-guide-barcode-qrcode-scan/140) | [Pedometer](https://enappd.com/blog/best-fitness-plugins-for-ionic-4-how-to-use-pedometer/15)| [Signature](https://enappd.com/blog/implement-signature-pad-in-ionic-apps/145) [Pad](https://enappd.com/blog/implement-signature-pad-in-ionic-apps/145) | [Background Geolocation](https://enappd.com/blog/using-background-geolocation-in-ionic-angular-apps/165)
- Media in Ionic — [Audio](https://enappd.com/blog/spotify-like-music-in-ionic-4-apps/48) | [Video](https://enappd.com/blog/adding-video-player-in-ionic-4-app/64) | [Image Picker](https://enappd.com/blog/camera-and-image-picker-in-ionic-apps/148) | [Image Cropper](https://enappd.com/blog/how-to-add-image-cropper-in-ionic-apps/149)
- Ionic Essentials — [Debugging with browser](https://enappd.com/blog/debugging-ionic-apps-using-chrome-and-safari-developers-tools/167)| [Native Storage](https://enappd.com/blog/ionic-4-save-and-retrieve-data-locally-on-device/59) | [Translations](https://enappd.com/blog/how-to-translate-in-ionic-internationalization-and-localization/143) | [RTL](https://enappd.com/blog/how-to-use-rtl-right-to-left-in-ionic-apps-pwa/152) | [Sentry Error Monitoring](https://enappd.com/blog/using-sentry-error-monitoring-with-ionic-angular-applications/164) | [Social sharing](https://enappd.com/blog/social-sharing-component-in-ionic-5-mobile-web-apps/168)
- Ionic messaging — [Firebase Push](https://enappd.com/blog/how-to-implement-firebase-push-notifications-in-ionic-apps/157) | [Reading SMS](https://enappd.com/blog/automatically-read-sms-in-ionic-4-apps/42) | [Local Notifications](https://enappd.com/blog/local-notifications-in-ionic-5-capacitor/132)
- Ionic with Firebase — [Basics](https://enappd.com/blog/how-to-integrate-firebase-in-ionic-4-apps/23) | [Hosting and DB](https://enappd.com/blog/firebase-with-ionic-4-hosting-auth-and-db-connection/58) | [Cloud functions](https://enappd.com/blog/firebase-cloud-functions-in-ionic-5-complete-guide/166) | [Deploy App to Firebase](https://enappd.com/blog/github-actions-deploying-ionic-angular-app-to-firebase-hosting/146) | [Firebase simulator](https://enappd.com/blog/how-to-use-firebase-emulators-with-ionic-angular-applications/163)
- Unit Testing in Ionic — [Part 1](https://enappd.com/blog/beginners-guide-to-ionic-angular-unit-testing-part-1/151) | [Mocks & Spies](https://enappd.com/blog/beginners-guide-to-ionic-angular-unit-testing-part-2-mocks-and-spies/155)| [Async Testing](https://enappd.com/blog/beginners-guide-to-ionic-angular-unit-testing-async-testing/156)

### Ionic React Full App with Capacitor

If you need a base to start your next Ionic 5 React Capacitor app, you can make your next awesome app using [Ionic 5 React Full App in Capacitor](https://store.enappd.com/product/ionic-react-full-app-capacitor/)

![Ionic 5 React Full App in Capacitor from Enappd](https://cdn-images-1.medium.com/max/760/1*G3yOFVX4oABx9MhUy-3kng.png)

### Ionic Capacitor Full App (Angular)

If you need a base to start your next Angular **Capacitor app** , you can make your next awesome app using [Capacitor Full App](https://store.enappd.com/product/capacitor-full-app-with-ionic-angular/)

![Capacitor Full App with huge number of layouts and features](https://cdn-images-1.medium.com/max/736/0*UwSHcofTMStMnzAX.png)

### Ionic Full App (Angular and Cordova)

If you need a base to start your next Ionic 5 app, you can make your next awesome app using [Ionic 5 Full App](https://store.enappd.com/product/ionic-full-app)

![Ionic Full App with huge number of layouts and features](https://cdn-images-1.medium.com/max/700/0*1ArpKyhiDHZnevwB.jpeg)

* * *