Publish Your iOS App: TestFlight, App Store, CI/CD and Interviews

iOS App Development with Swift and SwiftUI: Beginner to Job-Ready Projects · Shipping and Career · 7 min read · Updated

From Xcode to a phone

  1. In Xcode you archive the app. It is signed with your team.
  2. You upload the build to App Store Connect, Apple's website for your apps.
  3. TestFlight sends the build to testers, who send feedback and crash reports.
  4. When you are happy, you submit for review. If it is approved, the app goes on the App Store.

You now know the language, the screens, the data and the testing. The last step is the one many learners skip: getting the app to other people. This lesson covers the road to the App Store, the tools you will hear about at work, and how to turn this course into something an employer can see. The rules and prices of Apple's programs change, so for each step we tell you what to look for and where, and not a number that may be out of date.

Before you ship

  • Name, icon and identity. Choose a name. Add an app icon in Assets.xcassets. Check the bundle identifier, a unique name such as com.yourname.expensetracker.
  • Versions. Each release has a *version* (for example 1.0) and a *build number* that must go up with every upload.
  • Quality. Test on a real device if you can, with different text sizes, Dark Mode, no network, and a small screen.
  • Privacy. If your app collects data, you need a privacy policy at a web address and honest answers in App Store Connect about what you collect. Apple also asks for details about some system features your code or libraries use, so read Apple's current privacy requirements before you submit.
  • No hidden secrets. Remove test keys, passwords and debug screens.

The Apple Developer Program

To put an app on the App Store, and to use TestFlight with outside testers, you join the Apple Developer Program. It has a yearly fee, and you pay Apple. Check Apple's developer website for the current price, the list of countries and what a free account can and cannot do. In Xcode, open Settings > Accounts, add your Apple ID, and in your project choose your Team under *Signing & Capabilities*. Xcode can manage the signing certificates for you, which removes a lot of the old pain.

TestFlight: beta testing

  1. In Xcode choose a generic iOS device as the destination, then Product > Archive.
  2. When the archive is ready, open the Organizer, choose Distribute App and send it to App Store Connect.
  3. In App Store Connect, Apple's website for your apps, open the app's TestFlight tab. Your build appears after Apple has processed it.
  4. Add internal testers, people on your own team, who can try the build quickly. For external testers, such as friends or a small group, the first build normally goes through a short beta review by Apple, then you can invite people by email or by a public link.
  5. Testers install the free TestFlight app, try your build and send feedback and crash reports.

The App Store

  • In App Store Connect create the app record: name, subtitle, description, keywords, category, support address and privacy policy address.
  • Add screenshots for the device sizes that Apple asks for. Apple lists the sizes in the tool.
  • Choose the build, answer the age rating and privacy questions, and submit for review.
  • A human and some automated checks review your app against Apple's App Review Guidelines. Read them before you start. Many rejections are about incomplete information, crashes or unclear descriptions, and you can fix them and resubmit. Review times vary.

CI/CD: building automatically

Continuous integration and delivery means that a server builds and tests your app every time you push code, and can even upload builds for you. Names you will see in job posts:

  • Xcode Cloud: Apple's own service, built into Xcode and App Store Connect. Check Apple's current plans for any free allowance.
  • GitHub Actions: workflows in your repository that can run on macOS machines. Our Git course shows how GitHub works.
  • Bitrise and similar services: hosted build services made for mobile apps.
  • Fastlane: a tool of scripts that automates screenshots, signing, builds and uploads. It often runs inside the services above.

As a beginner it is enough to set up one workflow that builds the app and runs your tests on every push. That is a strong thing to show.

Instruments and debugging

Instruments is a profiler that comes with Xcode. Use it when an app is slow or uses too much memory. The *Time Profiler* shows where the time goes, and *Leaks* shows memory that was never released. Also learn Xcode's debugger: set a breakpoint by clicking the line number, run, and look at the values when the code stops. It is faster than printing.

UIKit: the older toolkit you will still meet

Many established companies have apps built with UIKit, with screens called *view controllers*, often laid out with Auto Layout rules or in Interface Builder (storyboards). You do not need it to start, but job posts often ask for it. The two toolkits mix. You can show a SwiftUI view inside UIKit with UIHostingController, and a UIKit view inside SwiftUI with UIViewRepresentable. A good plan is: after this course, build one small app in UIKit so you understand view controllers, the life cycle and table views, which are the ancestors of List.

import UIKit
import SwiftUI

final class HostingExample: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let host = UIHostingController(rootView: WeatherScreen())
        addChild(host)
        host.view.frame = view.bounds
        host.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        view.addSubview(host.view)
        host.didMove(toParent: self)
    }
}

Turn this course into a portfolio

  • Expense Tracker: SwiftUI, SwiftData, a chart (Apple's Charts framework), tests. You built the base in this course.
  • Weather app: REST API, Core Location, loading and error states.
  • E-commerce app: list and detail screens, a cart, sign-in. Use a free fake store API or your own server.
  • AI chat app: call your own server that calls a language model, stream the answer into SwiftUI. Never put the model key in the app.
  • Put each project on GitHub with a clear README, screenshots and notes on what you decided and why. Anything you can put on TestFlight or the App Store is stronger still.

When you are ready to apply, build your resume with our resume builder and check it with the ATS checker. Practise questions on the interview questions page. Look at the roadmaps for what to add next, and use our Git and GitHub course for the version-control habits that every team expects.

What to learn next, in order

  1. Keep building: one more app each month, a little bigger each time.
  2. Add what job posts ask for: UIKit basics, Combine or more Swift Concurrency, Core Location and Maps, notifications, StoreKit for in-app purchases.
  3. Learn to read other people's code, and contribute a small fix to an open-source app.
  4. Practise explaining your choices aloud: why a struct, why MVVM, why this data layer.

The next step on this site is the Advanced iOS Development course. It covers generics, concurrency in depth, memory, Combine, UIKit, secure networking, SwiftData migrations, StoreKit, modular architecture, CI/CD and senior interview preparation.

No course can promise a job. What helps is steady practice, a few finished and published projects, and being able to explain them. You have the base for all three.

Your task

  1. Give your Expense Tracker a name, an icon and a bundle identifier. Write a short privacy note that states what data the app keeps (for example, only on the device).
  2. Join the Apple Developer Program if you want to publish, or skip this step if you only want to learn. Then archive the app and upload it to App Store Connect.
  3. Invite one friend as a TestFlight tester, or install on your own device. Write down two things they found.
  4. Push the project to GitHub with a README and screenshots, and write the three things you would improve next.

How to check it worked

  • Your project builds from a clean checkout.
  • You can list the steps from Archive to TestFlight to App Review in your own words.
  • You can explain, in a minute, what your app does and one hard decision you made.

Frequently asked questions

Do I need to pay to publish an iOS app?

Yes, publishing on the App Store needs the paid Apple Developer Program. Check Apple's developer website for the current fee and what a free account can do, because they change.

What is TestFlight?

Apple's tool for sending beta builds of your app to testers, who install it through the TestFlight app and send feedback and crash reports.

Do I need to learn UIKit as well as SwiftUI?

Not at the start, but many companies still have UIKit apps, so it is worth learning after SwiftUI. The two can be mixed in one app.