Everything from here requires an Apple Developer Account ($99/year). If you're not ready to invest in that, you can skip Part 5 entirely — your app runs great in the Simulator and that's a complete achievement on its own. Come back to this section whenever you're ready.
Chapter 14: Apple Developer Account
Apple's developer tooling is confusing. This chapter explains it in plain English.
To ship an app to TestFlight (and eventually the App Store), you need an Apple Developer Program membership. This chapter walks through enrollment and explains the concepts — certificates, provisioning profiles, App IDs — that trip up every new developer.
What You'll Learn
- Enrolling in the Apple Developer Program ($99/year)
- Certificates: Development vs Distribution
- Provisioning profiles — what they are and why they exist
- App IDs and Bundle IDs
- Automatic signing vs manual signing
- All of this explained without jargon
Step 1: Enroll in the Apple Developer Program
What it costs
The Apple Developer Program costs $99/year. This gives you:
- TestFlight access (beta testing with up to 10,000 users)
- App Store distribution
- Advanced app services (push notifications, Sign in with Apple, etc.)
- Access to beta OS releases
How to enroll
- Go to developer.apple.com/programs
- Click Enroll
- Sign in with your Apple ID (use the same one you use for Xcode)
- Choose Individual enrollment (not Organization — that requires a D-U-N-S number)
- Fill in your legal name and address
- Pay the $99 fee
- Wait for Apple to process your enrollment (usually 24-48 hours)
Apple reviews enrollments manually. Most are approved within 48 hours, but it can take up to a week. Start this process before you need it — don't wait until you're ready to upload.
Can I use a free account?
A free Apple Developer account lets you:
- Run apps on your own device via Xcode
- Use the Simulator
- Build and test locally
But you cannot:
- Upload to TestFlight
- Submit to the App Store
- Use push notifications
- Use certain entitlements (Sign in with Apple, iCloud, etc.)
For this tutorial, you need the paid account to reach TestFlight.
Step 2: Understand Certificates (in Plain English)
What is a certificate?
A certificate is Apple's way of saying: "We verified that this person is a real developer." It's a digital identity card.
Think of it like a passport:
- Your Development certificate lets you build and test on your own devices
- Your Distribution certificate lets you submit apps to the App Store and TestFlight
How certificates work
You create a certificate request on your Mac
↓
Apple signs it (verifying your identity)
↓
The signed certificate is installed in your Keychain
↓
Xcode uses it to sign your app
↓
iOS checks the signature before allowing the app to run
Do I need to create certificates manually?
No. Xcode's Automatic Signing handles certificate creation for you. When you enable automatic signing (which we did in Chapter 10), Xcode:
- Generates a certificate signing request
- Sends it to Apple
- Downloads the signed certificate
- Installs it in your Keychain
- Uses it automatically when building
You don't need to touch the Keychain or the developer portal for certificates.
Step 3: Understand Provisioning Profiles (in Plain English)
What is a provisioning profile?
A provisioning profile is a file that answers three questions:
- Who is allowed to build this app? (certificate)
- What app is this? (App ID)
- Where can it run? (device list or "any device" for App Store)
Provisioning Profile = Certificate + App ID + Device List
Types of profiles
| Profile Type | Used For | Devices |
|---|---|---|
| Development | Testing on your own devices | Specific devices you register |
| Ad Hoc | Testing on a limited set of devices | Up to 100 registered devices |
| App Store | TestFlight + App Store | Any device (Apple handles distribution) |
Do I need to create profiles manually?
No. Automatic Signing in Xcode creates and manages profiles for you. This is another thing you don't need to touch.
Step 4: Understand App IDs and Bundle IDs
Bundle ID
Your Bundle ID is the unique identifier for your app. We set this in Chapter 10:
com.yourname.gratitudetree
This must be globally unique across all apps on the App Store. The convention is reverse domain notation: com.yourcompany.appname.
App ID
An App ID is registered in the Apple Developer Portal and links your Bundle ID to your developer account. It's what Apple uses to track your app.
Automatic Signing creates the App ID for you the first time you build with a matching Bundle ID. No manual steps needed.
The relationship
Apple Developer Account
└── App ID (com.yourname.gratitudetree)
└── Provisioning Profile
└── Certificate
└── Your signed .ipa file
Step 5: Verify Automatic Signing
Let's make sure everything is configured correctly in Xcode:
- Open your project:
npx cap open ios - Select the App target in the left sidebar
- Go to the Signing & Capabilities tab
- Ensure Automatically manage signing is checked
- Select your Team from the dropdown (your Apple Developer account)
- The Bundle Identifier should be
com.yourname.gratitudetree
If you see a green checkmark next to "Signing Certificate" and "Provisioning Profile" — you're good. Xcode has created everything automatically.
$ claude "I'm setting up my Apple Developer account for the first time and I see a lot of ..."Step 6: Common Gotchas
"Your account already has a valid iOS Distribution certificate"
This means you (or another app) already has a distribution certificate. Xcode handles this automatically — it reuses the existing one. No action needed.
"No profiles for 'com.yourname.gratitudetree' were found"
This usually means:
- Your Bundle ID in Xcode doesn't match what's registered
- Your team isn't selected
- Automatic signing is disabled
Fix: Check that Automatically manage signing is enabled and your Team is selected.
"The app ID cannot be registered to your development team"
Someone else has already registered this exact Bundle ID. Choose a different one:
com.yourname.gratitudetree2com.youractualname.gratitudetreeio.github.yourusername.gratitudetree
Checkpoint
Your app should now:
- You have an active Apple Developer Program membership ($99/year)
- You understand what certificates, provisioning profiles, and App IDs are
- Automatic signing is enabled in Xcode with your team selected
- Xcode shows green checkmarks for signing certificate and provisioning profile
- Your Bundle ID is unique and matches
capacitor.config.ts
What's Next
Your developer account is set up and signing is configured. In the next chapter, we'll build, archive, and upload the app to TestFlight — then invite testers to try it on their iPhones.
Follow @parvsondhi for build threads, tips, and updates on this tutorial.