Ad Hoc Distribution is a method of distributing iOS applications for testing on a limited number of devices without publishing to the App Store. Each device must be registered in the Apple Developer Portal by a unique UDID, with a maximum of 100 devices per account. According to Apple Developer Documentation (2025), the method is used for beta testing and demonstrating applications to clients without requiring App Store moderation. The main limitation is the binding to physical devices, which complicates scaling testing.
Key Takeaways
Ad Hoc Distribution is a method of distributing iOS applications available to all Apple Developer Program members ($99/year). It allows installing apps directly on devices without going through App Store moderation. The main purpose is pre-release testing: developers, testers, and clients can install the app on their devices before the official release.
Ad Hoc Distribution uses a Provisioning Profile that includes a list of allowed device UDIDs. When signing the app, Xcode or Fastlane creates an IPA file that can only be installed on devices from this list. Each UDID is added through the Apple Developer Portal, and the total cannot exceed 100 devices per developer account.
According to Apple (2025), Ad Hoc Distribution remains in demand for pre-release testing when the app has not yet passed App Store moderation but already needs to be shown to a client or tested on real devices. However, Apple recommends using TestFlight for large-scale beta testing, leaving Ad Hoc for small groups and special cases.
Ad Hoc distribution works through OTA (Over-The-Air) installation or via iTunes/Finder. The developer creates an Ad Hoc Provisioning Profile with selected UDIDs, signs the app with this profile, and exports the IPA file. The user installs the app through Safari via a link or through Finder on macOS.
Technically, Ad Hoc Distribution involves several stages. First, the administrator collects UDIDs of test devices — each UDID is a unique 40-character identifier for an iOS device. Then the UDIDs are added to the Apple Developer Portal, a Provisioning Profile is created, and a signed IPA is generated. The validity of an Ad Hoc profile is one year, after which the apps stop opening.
# Fastlane — automate Ad Hoc Distribution
lane :adhoc do
match(type: "adhoc")
gym(scheme: "MyApp",
export_method: "ad-hoc")
pilot(
distribute_only: true,
devices_file: "./devices.txt"
)
end
To install an Ad Hoc app, the user must trust the developer's certificate on their device. To do this, in iOS settings go to "General" → "VPN & Device Management" → "Profile" and tap "Trust". Without this step, the app will not launch.
UDID (Unique Device Identifier) is a unique identifier for each iOS device. For Ad Hoc Distribution, you need to collect the UDIDs of all test devices and add them to the Apple Developer Portal. The maximum is 100 devices per developer account per year. This limit applies to all apps of the developer, not to each app individually.
| UDID retrieval method | Difficulty | Note |
|---|---|---|
| Via Safari | Low | Install a configuration profile to extract UDID |
| Via Xcode | Medium | Connect the device to a Mac and copy UDID from Xcode |
| Via MDM | High | MDM solution can collect UDIDs of corporate devices |
| Via iTunes | Medium | Legacy method — iTunes is no longer supported on new macOS |
The 100-device limit resets at the end of the calendar year — the reset occurs on January 1. However, Apple recommends using TestFlight for large-scale testing, which supports up to 10,000 external testers. Ad Hoc Distribution since 2022 remains relevant for cases when the app has not yet passed Beta App Review or when testing requires access to the original IPA file.
Setting up Ad Hoc Distribution is done through the Apple Developer Portal and Xcode. The process includes registering devices, creating a Provisioning Profile, signing the app, and exporting the IPA for distribution. For team development, it is recommended to use Fastlane or automation via CI/CD.
To simplify the process, distribution services are used: Firebase App Distribution, Microsoft App Center, or BuddyBuild. These services automatically manage UDIDs, create Ad Hoc profiles, and send invitations to testers. Firebase App Distribution also integrates with CI/CD pipelines via Gradle or Fastlane.
An important nuance — UDID updates. If you need to add a new device to the profile, you will have to recreate the Provisioning Profile and re-sign the app. Devices that have already installed the app will continue to use it until the profile expires (1 year). After that, reinstallation with a new profile is required.
Ad Hoc Distribution is just one of three ways to distribute iOS apps without the App Store. TestFlight (free, up to 10,000 external testers) and Enterprise Distribution (no device limit, for enterprise apps) solve related tasks with different limitations and requirements.
TestFlight is Apple's preferred method for beta testing. It does not require collecting UDIDs, supports up to 100 internal and 10,000 external testers, automatically manages versions, and provides installation analytics. However, TestFlight requires passing Beta App Review for external testers, which can take 1–2 days. Ad Hoc Distribution requires no moderation at all.
Enterprise Distribution is suitable for enterprise apps with an unlimited number of devices, but requires enrollment in the Apple Developer Enterprise Program ($299/year) with a D-U-N-S number. Ad Hoc is available to all members of the standard program ($99/year) and does not require legal company verification. For small teams and projects, Ad Hoc remains the simplest way to distribute without the App Store.
Frequently Asked Questions
The maximum number of devices for Ad Hoc Distribution is 100 per Apple developer account. The limit is shared across all of the developer's apps, not per individual app. The reset occurs on January 1 each year. For testing on a larger number of devices, use TestFlight or Enterprise Distribution (for enterprise apps).
The device UDID can be obtained through web services like udid.io or install.appcenter.ms. The user opens a link in Safari on iOS, installs a configuration profile, and the UDID is displayed on the screen. Alternatively, the UDID can be copied from Xcode when connecting the device to a Mac: Window → Devices and Simulators → Identifier.
No, Ad Hoc Distribution is intended only for testing. To publish to the App Store, you need to create an App Store Distribution Profile and sign the app accordingly. An Ad Hoc profile will not pass App Store Connect validation. Before submitting to the App Store, make sure to switch the export method to app-store in Xcode or Fastlane.
If the Ad Hoc app won't open, check: that the developer certificate is trusted on the device (Settings → General → VPN & Device Management), that the Provisioning Profile has not expired, that the device UDID is added to the profile, and that the app is signed with the correct certificate. If the problem persists, delete the app and reinstall it with an updated profile.
A Development Profile is intended for running apps directly from Xcode on connected devices. An Ad Hoc Profile is for distributing installable IPA files to devices without Xcode. The main differences: Development requires a connection to Xcode, while Ad Hoc uses OTA installation via Safari or Finder. Both are limited to 100 devices.
Summary
We will develop a mobile application turnkey
IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.
Read also