LimitedRound 2 is open. Get your first month free, no extra charge.Join the waitlist ›
iOS, defined

What is a provisioning profile?

TL;DR. A provisioning profile is a file from Apple that ties together your signing certificate, your App ID, and either a list of allowed devices or a distribution method, authorizing an app to install and run. iOS checks it before letting a signed app launch.

A provisioning profile is a file issued by Apple that authorizes an iOS app to install and run, by tying together your signing certificate, your App ID, and either a list of approved devices or a distribution method. When a signed app launches, iOS checks the provisioning profile to confirm the app is allowed to run as configured.

What a provisioning profile contains

A provisioning profile bundles several pieces of identity into one file. It references the App ID, which is linked to the app's bundle identifier. It includes the signing certificate that must match the one used to sign the app. It lists the app's entitlements, which are the special capabilities the app is permitted to use, such as push notifications or iCloud. And for development profiles, it carries the list of specific device identifiers allowed to install the app. iOS reads all of this and only runs the app if everything lines up.

Development versus distribution profiles

There are two main kinds, matching two stages of an app's life. A development provisioning profile lets the app run on a set of registered test devices while you are building it, which is how you install onto your own iPhone during development. A distribution provisioning profile authorizes the app for wider release, either through TestFlight or the App Store, and is not tied to a fixed device list. Using the wrong type for the stage you are in is a common cause of build and install errors.

Why provisioning profiles matter and where they go wrong

Provisioning profiles are part of how Apple controls what runs on iOS devices and how apps reach users. They are also a frequent source of friction. Profiles expire and need renewal, they must match the certificate and bundle identifier exactly, and adding a new test device means updating the profile. A mismatch or an expired profile produces errors that can be hard to diagnose, which is why this is one of the more painful corners of iOS development.

Provisioning in AppFlight

AppFlight manages the signing and provisioning steps as part of its path from a prompt to the App Store, alongside building native Swift, uploading to TestFlight, and submitting for review. Handling profiles automatically removes a common class of setup errors so you do not assemble certificates, App IDs, and profiles by hand. The app still goes through Apple's review, so a submitted app is not the same as an approved one.

FAQ

What is the difference between a development and a distribution provisioning profile?

A development profile lets an app run on specific registered test devices during development. A distribution profile authorizes the app for TestFlight or the App Store. They serve different stages of the same app.

What does a provisioning profile contain?

It bundles your App ID, the signing certificate, the app entitlements, and, for development, the list of allowed device identifiers. iOS reads it to confirm the app is authorized to run as configured.

Do provisioning profiles expire?

Yes. Provisioning profiles have an expiration date and must be renewed. An expired profile is a common cause of an app that suddenly will not install or build.

Sources

Build this app without opening Xcode.

AppFlight turns a plain-English prompt into a real native iOS app and ships it to the App Store. Round 2 is open: free for your first month.

Join the waitlist