How it works
The explanation, with examples you can run.
The signing pieces
- Team and App ID: your developer account's team, and the bundle identifier (
com.example.notes) registered with the capabilities the app uses. - Certificates: an Apple Development certificate per developer for running on devices while building, and an Apple Distribution certificate, owned by the team, for TestFlight and the App Store. The private key is what proves you hold the certificate; Xcode can now use cloud-managed certificates so the key never sits on one laptop.
- Provisioning profiles: development (your devices, debugging allowed), ad hoc (a fixed list of registered devices, no store), and App Store Connect (for upload; no device list, because Apple re-signs what it distributes).
- Entitlements: the capabilities baked into the signature. A push entitlement in the app that isn't in the profile is one of the most common signing errors.
For most teams, Xcode's automatic signing creates and renews all of this. CI systems usually use an App Store Connect API key with xcodebuild, or a tool that does the same, so builds don't depend on someone's keychain.
xcodebuild -scheme Notes -configuration Release \ -archivePath build/Notes.xcarchive archivexcodebuild -exportArchive -archivePath build/Notes.xcarchive \ -exportOptionsPlist ExportOptions.plist -exportPath build/exportFrom archive to testers
An archive is a release build plus its debug symbols. From the Organizer (or the commands above) you validate it, then upload it to App Store Connect, where it is processed and becomes a build of a version. Bump the build number on every upload: App Store Connect rejects a duplicate.
TestFlight distributes builds before release:
- Internal testers, people on your App Store Connect team, get builds right away.
- External testers, up to 10,000 by email or public link, need the first build of a group approved by App Review for TestFlight, and a beta description.
- A build stays testable for up to 90 days.
App Review and release
Submitting a version sends the build, metadata, screenshots, privacy answers and age rating to App Review, which checks it against the App Review Guidelines. Apple says it reviews at least half of submissions within 24 hours and 90% within 48. Most rejections come from guideline 2.1 (app completeness): crashes, placeholder content, broken links, or demo accounts that don't work. Privacy issues are close behind: purpose strings that don't explain, data collection that doesn't match the privacy label, or a missing privacy manifest reason.
Apple also raises the floor every year. Since April 28, 2026, uploads must be built with Xcode 26 or later against the iOS 26 SDK, so the newest SDK's behaviour changes reach your app whether or not you planned for them. After approval you choose manual, automatic or phased release; a phased release rolls an update out over seven days to automatic-update users and can be paused if crash reports climb.
Check yourself
3 questions. Get them all right to finish this topic.
0 of 3 right so far. Get all three to finish this topic.