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.

NeedRecommended routeWhy
Test on your own iPhonePersonal Team or MeDo local debugNo paid membership, but short-lived and capability-limited
Test with a few known devices immediatelyAd HocNo TestFlight review; every UDID must be registered before packaging
Test with employees who use App Store ConnectTestFlight internalFast team distribution and centralized updates
Run a customer or public betaTestFlight externalEmail or public-link invitations without collecting UDIDs
Release publiclyPublic App StoreSearchable, reviewable, and maintainable production distribution
Share a production app only by linkUnlisted AppApp Store delivery without search or category visibility
Deliver privately to named organizationsCustom AppManaged through Apple Business Manager or Apple School Manager

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.

Capability groupFree Personal TeamApple Developer Program
On-device developmentYes, with short-lived limitsYes
App Store Connect, TestFlight, App Store distributionNoYes
Ad Hoc distributionNoYes
Basic camera, photo, microphone, location, Bluetooth, local storage, and network APIsGenerally available, subject to permissions and platform rulesAvailable, subject to permissions and platform rules
Push notifications, iCloud, Apple Pay, Sign in with Apple, App Groups, Associated Domains, In-App Purchase, and other managed servicesUnavailable or restrictedAvailable when the App ID, entitlement, and service configuration meet Apple’s requirements
Restricted entitlementsNoRequest and approval may still be required

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.

Official Apple References