How to Distribute Your iOS App Without the App Store
The App Store is the default path for distributing iOS apps. But it is far from the only one. If you are testing internally, running a beta with external users, or shipping to enterprise teams, Apple provides several alternatives. Each comes with different trade-offs around speed, device limits, review requirements, and cost.
This guide breaks down the four main ways to distribute an iOS app outside the App Store, compares them side by side, and walks through the fastest option for teams that need to get builds into testers' hands quickly.
Why Distribute Outside the App Store?
There are plenty of legitimate reasons to skip the App Store entirely:
- Internal testing. Your QA team needs builds daily, not after a multi-day review cycle.
- Beta programs. You want real users testing pre-release features before the public launch.
- Enterprise tools. Your company builds apps for employees that will never be listed publicly.
- Speed. You need testers installing a new build within minutes of a CI/CD pipeline completing, not days.
Whatever the reason, you have options. Let's walk through each one.
1. Ad Hoc Distribution
Ad Hoc distribution lets you install an IPA directly on specific devices. It requires a standard Apple Developer Program membership ($99/year) and works by embedding a list of approved device UDIDs into the provisioning profile at build time.
How It Works
- Collect the UDID of each tester's device.
- Register those UDIDs in your Apple Developer account.
- Create an Ad Hoc provisioning profile that includes those devices.
- Build and sign your IPA with that profile.
- Distribute the IPA file to your testers (via a hosting service, email, or a platform like TestApp.io).
Limits and Trade-offs
- 100 devices per device family per year. You get 100 iPhones, 100 iPads, etc. This limit resets annually when you renew your membership, but you cannot remove a device and free up a slot mid-year.
- Manual UDID management. Every new tester means collecting their UDID, adding it to the portal, regenerating the profile, and rebuilding.
- No App Review required. Builds go directly to devices with zero wait time.
Ad Hoc is a solid choice for small teams with a fixed group of testers. It breaks down once your team grows beyond a few dozen devices or you need to onboard testers quickly.
2. Apple Enterprise Program
The Apple Developer Enterprise Program is designed for large organizations that need to distribute proprietary apps to their employees. It costs $299/year and removes the 100-device limit entirely.
Requirements
- Your organization must have 100 or more employees.
- You need a D-U-N-S Number (a unique business identifier from Dun & Bradstreet).
- Apple requires a publicly available website with a domain associated with your organization.
- Apple conducts a verification process to confirm your organization's identity and intended use.
- You must demonstrate that the App Store, TestFlight, and Ad Hoc distribution do not meet your needs.
Limits and Trade-offs
- No device limit. Any employee can install the app.
- Strict approval process. Apple manually reviews Enterprise applications and can reject or revoke your membership if you misuse it (for example, distributing to users outside your organization).
- Annual re-verification. Apple re-verifies your organization each year at renewal.
- Not for public beta testing. Enterprise certificates are explicitly for internal-only distribution to your employees.
Enterprise distribution makes sense for large companies shipping internal tools. It is not an option for indie developers, small startups, or anyone running a public beta.
3. TestFlight
TestFlight is Apple's official beta testing service. It is free, built into App Store Connect, and handles the entire invite-and-install flow for you.
How It Works
- Upload your build to App Store Connect (via Xcode or
altool/xcrun notarytool). - Add testers as internal (App Store Connect users) or external (anyone with an email address).
- Testers receive an invite, install the TestFlight app, and can install your build from there.
Limits and Trade-offs
- 100 internal testers. These are members of your App Store Connect team. No review required for internal builds.
- 10,000 external testers. Anyone with an email address. The first build of each new version sent to external testers requires Beta App Review, which can take anywhere from a few hours to a couple of days.
- Builds expire after 90 days. Testers lose access unless you upload a new build.
- Up to 30 devices per tester. Each tester can install on up to 30 of their devices.
- iOS only. TestFlight does not cover Android, so cross-platform teams still need a separate solution for their APK builds.
TestFlight is the right choice when you want a polished beta experience and don't mind the review process. For teams that need instant distribution or support for both iOS and Android, it falls short. For a deeper comparison, see our TestFlight alternatives breakdown.
4. Direct Distribution via TestApp.io
TestApp.io lets you upload an IPA and share an install link with your team. There is no App Review, no 90-day expiration, and no waiting. Testers click the link, install the build, and start testing.
How It Works
- Upload your IPA to portal.testapp.io (drag-and-drop) or push it from your CI/CD pipeline using ta-cli.
- Share the install link with your team. Testers open the link on their device and tap Install. For a full walkthrough, see how to share your app.
- Collect feedback. Testers can report issues directly from the app, and your team gets notifications via Slack, Microsoft Teams, or project management tools (such as Jira and Linear).
What You Need
TestApp.io works with Ad Hoc, Development, and Enterprise-signed IPAs. The signing type determines who can install the build:
- Ad Hoc: Only devices whose UDIDs are included in the provisioning profile.
- Development: Only devices registered for development in your Apple Developer account.
- Enterprise: Any device, no UDID registration needed.
Limits and Trade-offs
- No device limit from TestApp.io. Your Apple signing profile determines which and how many devices can install.
- No review process. Builds are available to testers within minutes of uploading.
- No build expiration. Builds stay available until you archive them.
- iOS and Android. Upload APK files for Android alongside your IPA files for iOS, all in one place.
Decision Matrix: Which Method Should You Use?
Here is a side-by-side comparison of all four methods to help you pick the right one for your situation.
| Ad Hoc | Enterprise | TestFlight | TestApp.io | |
|---|---|---|---|---|
| Cost | $99/yr (Dev Program) | $299/yr | Free (with Dev Program) | Free tier available |
| Device limit | 100 per device family/yr | Unlimited | 100 internal + 10,000 external | Based on Apple signing |
| App Review | None | None | Beta Review (external, first build per version) | None |
| UDID required | Yes | No | No | Depends on signing type |
| Build expiration | When profile expires | When certificate expires | 90 days | None (until archived) |
| Android support | No | No | No | Yes (APK) |
| CI/CD integration | Manual | Manual | Xcode / altool | ta-cli + 10 CI/CD platforms |
| Feedback collection | No | No | Screenshots + text | In-app + integrations |
| Best for | Small fixed teams | Large enterprise (100+ employees) | Public betas, polished experience | Fast iteration, cross-platform teams |
Step-by-Step: Distribute with TestApp.io
If you want builds in testers' hands within minutes, here is how to set it up.
Option A: Upload via the Portal
- Sign up at portal.testapp.io and create an app.
- Drag and drop your IPA file onto the release page.
- Add your team members. They will receive an email with the install link.
- Testers open the link on their iOS device and tap Install.
That is it. No provisioning profile dance, no waiting for review, no 90-day countdown.
Option B: Upload via ta-cli (for CI/CD)
For automated pipelines, use ta-cli to push builds directly from your CI/CD system. Here is a basic example:
ta-cli publish \
--api_token="your_api_token" \
--app_id="your_app_id" \
--release="ios" \
--ipa="/path/to/app.ipa" \
--release_notes="Bug fixes and performance improvements" \
--notify=true \
--git_release_notes=true \
--git_commit_id=true
The --notify flag sends install notifications to your team automatically. The --git_release_notes and --git_commit_id flags pull context from your latest commit so testers know exactly what changed.
Option C: Integrate with Your CI/CD Platform
TestApp.io has setup guides for the most popular CI/CD platforms. Pick yours and follow the step-by-step instructions:
Every platform follows the same pattern: build your IPA, then call ta-cli publish with your API token and app ID. The setup guides cover the platform-specific details like where to store secrets and how to trigger the upload step.
Which Method Is Right for Your Team?
Here is a quick way to decide:
- Fewer than 10 testers, all internal? Ad Hoc works fine. Just be ready to manage UDIDs manually.
- Large company, employees-only app? Enterprise is the right call if you meet Apple's requirements (100+ employees, D-U-N-S Number, verification).
- Running a public beta with thousands of testers? TestFlight gives you the most polished experience, as long as you are comfortable with the review process and 90-day build expiration.
- Shipping fast, iterating daily, or supporting both iOS and Android? TestApp.io removes the friction. Upload a build, share a link, get feedback. No review gates, no platform lock-in.
Most teams end up combining methods. You might use TestFlight for a public beta while using TestApp.io for daily internal builds, where speed matters more than formality.
Ship Mobile Apps Faster with TestApp.io
TestApp.io helps mobile teams distribute builds to testers, collect feedback, and manage releases, all in one place. Support for iOS (IPA) and Android (APK), with integrations for Slack, Microsoft Teams, Jira, Linear, and 10+ CI/CD platforms.
👉 Get started free or explore the Help Center to learn more.