Why this happens
An .ipa is an export of a signed iOS app, not a special kind of build that runs on every iPhone. Xcode first creates an archive for a device platform. You then export that archive with a distribution method and signing assets appropriate to the intended use. The available export choices depend on your Xcode version, account, team, and signing setup.
A frequent snag is archiving for a simulator instead of a physical device. Simulator builds use a different platform and cannot be installed on an iPhone. Another is expecting an App Store Connect export to work as a file you can open on any phone: that export is for App Store Connect distribution, such as TestFlight or App Store submission, not unrestricted sideloading.
How to fix it
1. Set up the app for device signing
Open the project in Xcode and select the app target. Check that it has a bundle identifier and a valid team selected under Signing & Capabilities. If you use automatic signing, leave Automatically manage signing enabled unless your team has a specific manual-signing setup.
If you plan to test directly on a connected iPhone, connect and unlock it, and accept any trust or developer prompts. On iOS versions that require Developer Mode for development-signed apps, enable it when prompted on the device. You do not need to export an IPA just to run the app from Xcode.
2. Create an archive for a real iOS device
In Xcode’s run-destination menu, select a generic iOS device destination, not a named simulator. Depending on Xcode, it may be labeled Any iOS Device or Any iOS Device (arm64).
Then choose Product > Archive. Wait for the build to finish; Xcode opens Organizer with the resulting archive. If Archive is unavailable, check that the selected scheme has an Archive action and that the run destination is a device destination rather than a simulator.
An archive is the input for the export step. It does not itself install the app on a phone or determine who can install the exported file.
3. Export the IPA from Organizer
In Organizer, select the app’s archive and choose Distribute App. Select the distribution method that matches your goal, then follow Xcode’s signing and export prompts. Labels and options vary across Xcode versions and account types. For a file saved locally, choose the export option offered for the selected method and pick a destination folder when prompted.
Xcode may ask you to select a team, certificate, or provisioning profile, or may manage signing automatically. Resolve any signing errors before exporting. When export completes, look for the .ipa in the folder you selected. If Xcode produces a different output or offers no local export for your chosen method, return to the distribution-method selection and confirm that it fits your use case.
4. Choose an export method that fits the iPhone
The right choice depends on how the phone will receive the app:
- Development testing: Use a development-signed build for testing on devices covered by the development provisioning setup. For one connected phone, selecting that phone in Xcode and pressing Run is often the most direct route.
- Ad Hoc distribution: Use this for installing a build on specifically registered devices. The device identifiers must be included in the provisioning setup used to sign the app. An IPA exported this way is not intended for arbitrary iPhones.
- TestFlight or App Store distribution: Choose the App Store Connect route to upload the archive. Once processing is complete, distribute the build through TestFlight or the App Store workflow. This is not the same as exporting a file for direct installation.
- Organization-managed distribution: Enterprise distribution is available only to organizations that qualify for and use Apple’s enterprise program. It is not a general substitute for Ad Hoc or TestFlight.
Do not choose a method merely because it creates an IPA. Signing and provisioning determine which devices or distribution channels can use that build.
5. Install or test the app on a real iPhone
For a quick personal test, connect the iPhone to the Mac, select it as Xcode’s run destination, and press Run. Xcode builds, signs, and installs the app using the project’s development configuration. This avoids exporting and then finding a separate installation route for an IPA.
If you need to distribute an exported IPA, use the channel that matches its signing method. For example, use TestFlight for an App Store Connect build, or install an Ad Hoc build only on devices included in its provisioning setup. A file exported for App Store Connect is not a general-purpose package to tap open on any iPhone. Follow any device prompts required by the signing method and iOS version.
6. Troubleshoot common export failures
If Xcode reports a signing or provisioning error, verify the selected team, bundle identifier, and signing settings on the app target. For Ad Hoc exports, confirm the intended iPhone is registered and included in the profile. For a device that does not appear as a run destination, unlock it, reconnect it, and accept the trust prompt.
If the archive is missing from Organizer, confirm that the Archive action completed successfully and that you did not build for a simulator. If export succeeds but installation fails, check that the IPA’s distribution method supports that phone and that the phone is included where required. Re-exporting with a different method will not make an incompatible signing setup valid.
How to prevent it
- Select a generic iOS device destination before archiving; do not archive a simulator build for iPhone distribution.
- Check the app target’s bundle identifier, team, and signing configuration before creating the archive.
- Decide whether you need direct development testing, Ad Hoc installation, or TestFlight before choosing an export method.
- Keep device registration and provisioning profiles current when using Ad Hoc distribution.
- Use Xcode’s Run command for quick tests on a connected iPhone instead of creating an IPA unnecessarily.
FAQ
Can I install an IPA on any iPhone?
No. The app must be signed for a distribution method that permits installation on that device. Ad Hoc builds are limited to registered devices, while App Store Connect builds are distributed through TestFlight or the App Store workflow.
Do I need an IPA to test my app on my own iPhone?
Usually not. Connect the phone, select it as the run destination in Xcode, and press Run. Xcode installs a development-signed build directly.
Why can’t I choose Product > Archive?
A common cause is a simulator selected as the run destination. Choose a generic iOS device destination and make sure the selected scheme has an Archive action configured.
Parts of this guide are adapted from content licensed under CC BY-SA 4.0; this article is shared under the same license.
