AppForShare

Navigating Ad Hoc Distribution Challenges in iOS Development: A Comprehensive Guide

By Zakir Umair · · 5 min read

Ad Hoc Distribution Challenges in iOS Development - appforshare.io

Ad Hoc distribution lets you install an iOS app on a limited set of registered devices without the App Store or TestFlight. Its main challenges are collecting and registering device UDIDs, Apple's limit of 100 devices per device type per year, rebuilding every time a device is added, expiring certificates and profiles, and getting the build onto testers' phones. This guide explains how Ad Hoc works, the problems teams run into, and how to handle each one.

What is Ad Hoc distribution?

An Ad Hoc build is an iOS app signed with an Ad Hoc provisioning profile. That profile lists the UDIDs of the devices allowed to run the app. iOS checks the list at install time and refuses any device that is not on it.

It is used for:

  • QA and internal testing on the team's own devices.
  • Client previews, so a client can try a build before it is submitted.
  • Small, fast beta rounds without waiting for TestFlight beta review.

Ad Hoc requires a paid Apple Developer Program membership. It is not a way to distribute to the public.

The Ad Hoc process, step by step

  1. Collect UDIDs. Each tester sends their device UDID. The free AppForShare UDID finder does this from the iPhone itself, with no cable or computer.
  2. Register devices. Add each UDID under Devices in Certificates, Identifiers and Profiles in your Apple Developer account.
  3. Create or update the Ad Hoc profile. Select the app ID, your distribution certificate and the devices. Regenerate the profile whenever you add devices.
  4. Archive and export. In Xcode, archive the app and export it with the Ad Hoc (Release Testing) method, or do the same in CI. The result is an .ipa.
  5. Distribute. Upload the .ipa to a service that supports over the air install, such as AppForShare, and share the link or QR code.
  6. Install. The tester opens the link in Safari on the registered device and taps install. Apple Configurator or Finder on a Mac can also install an .ipa over a cable.

Note that Ad Hoc builds are not installed through TestFlight. TestFlight is a separate path that uses builds uploaded to App Store Connect.

Common challenges and how to solve them

1. Collecting UDIDs

Asking non-technical testers for a UDID used to mean connecting the phone to a computer. Today the simplest way is a configuration profile based finder: the tester opens /udid, installs the profile, and gets the UDID on screen to email or save. See how to find the UDID on an iPhone.

2. The device limit

Apple allows 100 registered devices per device type (iPhone, iPad and so on) per membership year. Removing a device does not free the slot until the membership renews. Register only devices that will really test, and move larger groups to TestFlight.

3. "Unable to install" after adding a device

Registering a UDID does not update builds you already made. The profile must be regenerated with the new device, and the app rebuilt and re-exported. AppForShare does not re-sign apps, so upload the new build and send the new link. More fixes are in can't install an app on an iOS device.

4. Expiring certificates and profiles

Distribution certificates and provisioning profiles have expiry dates. When the profile or certificate behind a build expires, that build stops launching on testers' devices. Track the dates, renew before a test round, and rebuild.

5. Developer Mode and trust prompts

On iOS 16 and later, development signed builds need Developer Mode turned on in Settings. Enterprise signed builds ask the user to trust the developer in Settings under VPN and Device Management. Tell testers in advance what they will see. See enable Developer Mode on iPhone.

6. Sharing the file safely

Emailing an .ipa or putting it on a shared drive does not let testers install it on the phone, and it spreads copies you cannot withdraw. An install link is better: on AppForShare, downloads are served over HTTPS through signed, short lived links, and each build can have a password. On Team, private projects only open for invited testers.

7. Keeping testers on the right build

When builds arrive every day, testers end up on old versions. On AppForShare each upload is a new build with its own link. Pro adds release notes and webhooks to Slack or Discord when a new build is uploaded, and Team emails invited testers about new builds and shows who installed.

8. Collecting feedback

Ad Hoc itself has no feedback channel, and AppForShare has no in-app feedback or crash reporting. Agree on one place for reports (an issue tracker, a shared channel or a form) and ask testers to include the build number, device and iOS version.

Ad Hoc vs other iOS testing paths

Ad HocTestFlightEnterprise
Device registrationYes, by UDIDNoNo
Apple reviewNoFor external testersNo
Install methodLink (OTA) or cableTestFlight appLink (OTA) or MDM
AudienceUp to 100 devices per typeInternal team and invited external testersThe organization's employees only

A practical Ad Hoc checklist

  • Collect all UDIDs for the round first, then register and build once.
  • Check certificate and profile expiry dates before you build.
  • Automate export and upload from CI (see CI uploads) so every build gets a link.
  • Put a password on builds for clients or unreleased features.
  • Write short release notes so testers know what to check.

Frequently asked questions

What is Ad Hoc distribution in iOS?

It is a way to install an iOS app on specific registered devices without the App Store or TestFlight. The app is signed with an Ad Hoc provisioning profile that lists the allowed device UDIDs.

How many devices can I use for Ad Hoc testing?

Apple allows up to 100 registered devices per device type, such as iPhone or iPad, per membership year. Removed devices only free their slot when the membership renews.

Why can a tester not install my Ad Hoc build?

Usually the device UDID is not in the provisioning profile used to sign that build. Register the device, regenerate the profile, rebuild the app and share the new build.

Can testers install an Ad Hoc build through TestFlight?

No. TestFlight uses builds uploaded to App Store Connect. Ad Hoc builds are installed from an over the air link, such as an AppForShare install link, or over a cable from a Mac.

Does AppForShare re-sign Ad Hoc builds when I add a device?

No. AppForShare does not sign or re-sign builds. Rebuild the app with the updated profile in Xcode or CI and upload the new .ipa.

Keep reading

· 9 min read

AppForShare.io vs Competitors - A Comparative Analysis

For small teams and startups, selecting a mobile app testing platform is a critical crossroad. This choice is more than a mere selection: it’s a strategic decision that directly impacts the...