When you upload an iOS build to TestApp.io, the app must be signed with the right certificate type. Using the wrong one causes upload errors or prevents distribution. This article explains each iOS certificate type, how TestApp.io handles it, and when to use it.

Once your build is uploaded, testers can install it directly from the TestApp.io app on their iPhone or iPad.

The 4 iOS Certificate Types

Ad Hoc — Accepted

An Ad Hoc build is signed for a specific list of registered device UDIDs. TestApp.io accepts Ad Hoc builds, but the provisioning profile must contain at least one UDID.

If you upload an Ad Hoc build with no UDIDs in the provisioning profile, you will see this error:

"no provisioned devices found. Please add the UDIDs of the members who will install this release in your apple developer account and upload it again"

Share Links: Ad Hoc builds cannot be distributed via Share Links. They are limited to internal distribution only.

Best for: Distributing to a known list of testers whose UDIDs are registered in your Apple Developer account.

Development — Accepted

Development builds are accepted by TestApp.io without any plan restriction, and no UDIDs are required in the provisioning profile.

Keep in mind that devices must trust the developer certificate before they can install the app. This is a standard iOS requirement for development-signed apps.

Best for: Developer testing on personal or team devices during active development.

Enterprise (In-House) — Accepted on Pro Plan

Enterprise certificates allow an app to install on any iOS device without registering UDIDs. TestApp.io accepts Enterprise builds, but this capability requires the Pro plan.

If you are on a lower plan and upload an Enterprise-signed build, you will see:

"Distribution using an Enterprise (in-house) certificate is available exclusively with the Pro plan"

Share Links: Enterprise is the only certificate type that can be used in Share Links for distribution to external testers. If you try to add a non-Enterprise iOS build to a Share Link, you will see the following:

"You can only share iOS releases with outside testers if they're made with an Enterprise certificate, due to Apple's rules. If you have questions or need more details, please reach out to us"

Best for: Wide distribution to external testers without UDID management. Requires the Pro plan.

App Store — Not Accepted

App Store builds are intended for submission to Apple, not for direct installation on devices. TestApp.io does not accept App Store-signed builds. Attempting to upload one will produce:

"provisioning profile must be either Development or Ad-Hoc or Enterprise. Please change it and upload it again"

Fix: Re-export from Xcode using Ad Hoc, Development, or Enterprise distribution, then upload the new build.

Provisioning Profile Expired

Regardless of certificate type, if your provisioning profile is expired, the upload will be rejected with the following:

"provisioning profile expired. Please change it and upload it again"

Fix: Generate a new provisioning profile in the Apple Developer Portal, embed it in a fresh build from Xcode, and upload again.

Quick Decision Guide

I want to...Use this certificate
Test on my own deviceDevelopment
Distribute to specific testers (you know their UDIDs)Ad Hoc
Distribute to testers via a Share LinkEnterprise (Pro plan required)
Submit to the App StoreApp Store (not for TestApp.io upload)


Need help? Contact us — we're happy to assist!