iOS Packaging and Distribution Routes
Choose by Audience, Not Only by Cost
The right route depends on who needs the app, how long they need it, and whether they are known in advance. A build used for development is not a durable production distribution method.
MeDo-Supported Packaging Routes
Each iOS packaging job consumes 500 credits. MeDo returns the credits if you cancel the job while it is queued or if packaging fails.
Local Debug
Use local debug for UI checks, feature verification, and early prototypes on devices you control.
- No Apple Developer Program membership is required.
- A free Personal Team supports up to 10 short-lived App IDs, 3 devices, and 3 installed apps per device.
- App IDs, device registrations, and provisioning profiles expire after 7 days; rebuild and reinstall after expiration.
- The route cannot publish to TestFlight or the App Store.
- Some app services and entitlements require paid membership.
- If MeDo provides only an unsigned IPA, sign and install it locally with Sideloadly or AltStore Classic with AltServer. If you can open the iOS project, prefer Xcode Personal Team.
See Unsigned IPA and Local Device Testing.
Ad Hoc
Use Ad Hoc for a controlled test, demonstration, or acceptance test on a known device list.
- Requires Apple Developer Program membership.
- Requires an explicit App ID, an Apple Distribution certificate, a provisioning profile, and registered device IDs.
- Apple allows up to 100 registered devices per product family per membership year. Disabling a device does not restore the slot until the membership-year reset.
- Adding a device or changing app services requires a new provisioning profile and a newly signed package.
- There is no TestFlight Beta App Review, but this route is not appropriate for unknown or large audiences.
See Ad Hoc Distribution.
TestFlight / App Store
Use this route for managed beta testing and production submission.
- Requires Apple Developer Program membership and an App Store Connect app record.
- MeDo uploads the processed build to App Store Connect.
- Internal testing supports up to 100 eligible App Store Connect users.
- External testing supports up to 10,000 testers and may require Beta App Review.
- Every TestFlight build expires after 90 days.
- The same uploaded build can be selected for App Review after its metadata and compliance information are complete.
See TestFlight / App Store Packaging and App Store Publishing.
Free and Paid Account Differences
Apple determines capability availability from the program membership, App ID configuration, and provisioning profile. Do not assume that a capability works because its framework compiles.
Apple changes capability availability. Use the official supported-capabilities table as the source of truth for the App ID and membership you use.
Signing Assets
Before a paid route can work, these identifiers must agree:
- Bundle ID in the MeDo project and uploaded binary
- Explicit App ID in Certificates, Identifiers & Profiles
- App Store Connect app record for TestFlight or App Store distribution
- Provisioning profile that includes the correct App ID, entitlements, certificate, and—only for Ad Hoc—the permitted devices
Keep App Store Connect API private keys and signing assets restricted to trusted administrators. The .p8 private key is downloadable only once. Revoke a key immediately if it is exposed or no longer needed.
Production Alternatives
Ad Hoc and free provisioning should not be used as permanent distribution mechanisms.
- Unlisted App — Submit a review-ready app and request unlisted distribution. The app is delivered by the App Store but is discoverable only through its direct link.
- Custom App — Choose private distribution before initial approval and specify organization IDs from Apple Business Manager or Apple School Manager.
- Enterprise distribution — Reserved for eligible organizations distributing proprietary apps solely to their employees. It is not a general customer-distribution substitute.
Route Checklist
Before packaging, confirm:
- The Bundle ID is final and consistent.
- The target route matches the intended audience and installation lifetime.
- Required entitlements are enabled for the App ID.
- Privacy permission descriptions are present and explain the real use.
- The account holder has accepted current Apple agreements.
- For Ad Hoc, every target UDID is registered before the build.
- For TestFlight/App Store, the App Store Connect app record exists and its Bundle ID matches.