# iOS Ad Hoc Distribution Explained: How It Works and Its Limits

> What iOS ad hoc distribution is, how it differs from development, App Store and enterprise signing, how over-the-air install works, and the 100-device limit.

Last updated: 2026-11-05
Canonical: https://buildferry.app/ad-hoc-distribution

Ad hoc distribution is Apple's way to install a test build on specific, registered devices without the App Store or TestFlight. In Xcode it's now called **Release Testing**.

## The four ways to sign an iOS app

| Profile type | Who can install | Review | Typical use |
| --- | --- | --- | --- |
| Development | Registered devices of your team | None | Running from Xcode while you build |
| Ad hoc | Up to 100 registered devices per product family | None | Test builds for clients, QA and colleagues |
| App Store | Anyone, through the App Store or TestFlight | App Review | Release and TestFlight betas |
| Enterprise | Employees of your organisation | None | Internal company apps, with an Enterprise membership |

## How ad hoc works

1. **Register each device.** Its UDID is added to your Apple Developer account.
2. **Create an ad hoc provisioning profile** that lists those devices.
3. **Sign the app** with your distribution certificate and that profile, and export an .ipa.
4. **Host the .ipa** with a small manifest file, over HTTPS.
5. **Install over the air.** A link like `itms-services://?action=download-manifest&url=https://…/manifest.plist` tells iOS to download and install the app.

If the iPhone isn't in the profile, iOS refuses to install it. That's why adding a tester usually means steps 1 to 5 again.

## The limits

- **100 devices per product family, per membership year.** iPhones and iPads each have their own 100. [How the device limit works](https://buildferry.app/apple-device-limit).
- **Profiles expire** after a year, and builds stop opening when the profile or certificate expires.
- **A paid membership** is required. Free Apple accounts can't create ad hoc profiles.

## Making ad hoc painless

The hard part is the loop of collecting UDIDs, updating the profile and rebuilding. [BuildFerry](https://buildferry.app/) automates it: the tester opens a link, you approve, and the iPhone is registered and the build re-signed in the cloud, with your own Apple account.
