Ad Hoc Distribution — what it is, iOS testing limitations

Author: IT Sectr Published: 2026-06-06 Reading time: 9 min

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 — installing iOS apps on 100 registered devices without the App Store
  • UDID of each device is added to the Apple Developer Portal and included in the profile
  • Validity of the Ad Hoc profile is 1 year, after which apps need reinstallation
  • Difference from Enterprise — Ad Hoc is limited to 100 devices and does not require a D-U-N-S number
  • TestFlight — an alternative to Ad Hoc with no device limit for beta testing

What is Ad Hoc Distribution?

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.

How does Ad Hoc Distribution work?

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.

ruby
# 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 registration and the 100-device limit

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 methodDifficultyNote
Via SafariLowInstall a configuration profile to extract UDID
Via XcodeMediumConnect the device to a Mac and copy UDID from Xcode
Via MDMHighMDM solution can collect UDIDs of corporate devices
Via iTunesMediumLegacy 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

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.

  1. Collect UDIDs of test devices via udid.io or a configuration profile
  2. Add UDIDs to the Apple Developer Portal → Certificates, Identifiers & Profiles → Devices
  3. Create an Ad Hoc Provisioning Profile for the required Bundle ID, including the registered devices
  4. Sign the app with the Ad Hoc profile in Xcode: Product → Archive → Distribute Ad Hoc
  5. Export the IPA file and distribute the link via an OTA server or Firebase App Distribution
  6. For the user: open the link on the device, install the app, trust the certificate in settings

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 vs TestFlight and Enterprise

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

How many devices can be added to Ad Hoc Distribution?

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).

How to find out the UDID of a device for Ad Hoc?

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.

Can Ad Hoc Distribution be used for publishing to the App Store?

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.

What to do if the Ad Hoc app won't open?

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.

How is an Ad Hoc profile different from a Development 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

  • Ad Hoc Distribution — installing iOS apps on 100 devices without the App Store for testing
  • UDID of each device is registered in the Apple Developer Portal and included in the profile
  • Limit of 100 devices resets annually on January 1
  • TestFlight — an alternative with no device limit but with Beta App Review moderation
  • Setup involves creating an Ad Hoc Provisioning Profile and signing the IPA with export method ad-hoc
  • Profile validity — 1 year, after which apps need reinstallation

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.

Discuss the project

Read also