AppForShare

A UDID list is not enough: how iPhone test devices really get into your build

· 5 min read

A UDID list is not enough: how iPhone test devices really get into your build

A tester sends you their iPhone UDID. You paste it into a list. They open the install link, tap Install, and nothing happens, or the app icon stays grey. The UDID was collected, so why does the build still not install? Because a list of UDIDs is only the first of four steps. This guide explains how an iPhone really gets into an ad hoc build, where each step happens, and which ones can be done for you.

The four steps

An ad hoc or development iOS build installs only on devices that are inside its provisioning profile. Getting a new iPhone there takes four steps, in this order:

  1. Collect the UDID. The tester sends their device identifier. Most people do not know where to find it, so a web page that reads it through a configuration profile is the usual way.
  2. Register the device on Apple. The UDID is added to your Apple Developer account, under Devices. Until then, Apple does not know the device exists.
  3. Make the profile again. A provisioning profile is a snapshot: it lists the devices registered when it was made. A profile made last month does not include a device registered today. It has to be regenerated with the new device in it.
  4. Build or sign again. The app is signed with the profile, so the build you shared still carries the old one. A new build, signed with the new profile, is what the tester installs.

A UDID list covers step 1 only. Some sharing services stop there: they keep a list of devices for you to add to the profile when you sign the next build. That is useful as an address book, but steps 2 to 4 are still yours, and step 3 is the one most often missed.

Why installs fail when a step is skipped

  • Step 2 skipped: the device is not registered, so no profile can include it.
  • Step 3 skipped: the device is registered, but the profile is older than the registration. This is the classic "I added the UDID but it still does not install".
  • Step 4 skipped: the profile is new, but the shared build was signed with the old one.

Two more causes look the same from the tester's side: the iPhone runs an iOS version below the build's minimum, or the profile has expired. A good install page tells the tester which one it is before they tap.

Apple's device limit

Each Apple Developer membership can register up to 100 devices per device type (iPhone, iPad and so on) per membership year. Disabling a device does not free its slot until the membership year renews. So register only the devices that really test, and check how many slots are left before a big test round.

How AppForShare covers each step

StepWhat AppForShare doesPlan
1. CollectFree UDID finder, saved to your account; import an existing UDID list. Testers can tap Remember this device, and every iOS install page then says whether that iPhone is in the build before they tap Install.Every plan
1. Collect, per appAn onboarding link per iOS project that saves the device to your list.Pro and Team
2. RegisterOne click registration on your Apple account with your App Store Connect API key, with Apple's 100 per device type checked first.Pro and Team
3. Make the profile againAd hoc and development profiles missing devices can be made again with every enabled device. Xcode managed profiles are left to Xcode.Pro and Team
4. Build againYou build again, or the GitHub Actions build AppForShare set up in your repository does it.Pro and Team
2 to 4, hands freeAn Admin turns on Hands free per project: devices sent through the onboarding link are registered, the profile is made again, and the project's GitHub iOS build starts. Testers get the install email when the build is uploaded. At most 10 devices a run and 20 a day.Team

AppForShare never re-signs your build. It registers devices and remakes profiles through Apple's API with your key, and the build is made by you or by your own GitHub Actions minutes. See iOS device registration and Hands free device setup.

When TestFlight is the better path

TestFlight does not need UDIDs at all: testers install through the TestFlight app with an email invite or a public link, after Apple's beta review for external testers. If your testers are many and change often, or the 100 device limit is tight, TestFlight is the simpler route. Ad hoc links win when you want installs without the TestFlight app, without beta review, or for a build that is not ready for Apple to see. On Pro and Team, one channel QR code can send iPhones to your TestFlight link and Android phones to the newest APK.

Common questions

I added the UDID. Why does the build still not install?

Most often the profile was made before the device was registered, or the build was signed with the old profile. Make the profile again and build again.

Can a tester find their own UDID?

Yes. The free UDID finder reads it in Safari through a short configuration profile and shows it, with no app and no cable.

Does registering devices need my Apple password?

Not on AppForShare. It uses an App Store Connect API key you create and can revoke, never an Apple ID password.

Is there a limit on devices?

Apple's: 100 per device type per membership year, and disabled devices still count until renewal.

Keep reading

App Distribution Platform · · 5 min read

AppForShare File Size and Upload Limits

AppForShare limits the size of each build you upload by plan: 50 MB without an account, 150 MB on the Free plan, 2 GB on Pro and 4 GB on Team. Accounts also have a storage total, and every plan...