Unlisted app vs Ad Hoc vs install link: which to use
· 6 min read
There are more ways to get an app to "only the people with the link" than most developers realise, and they behave very differently. Apple's unlisted distribution is a real App Store listing that nobody can find without the URL. A TestFlight public link is a beta. An Ad Hoc build is a file that only installs on devices you registered. On Android, Play has three testing routes plus internal app sharing, and you can always just send the APK.
This guide explains each option, the process and the catches, and ends with a table you can use to choose.
Apple unlisted app distribution
An unlisted app is a normal App Store app with one difference: it does not appear in search, charts, categories or recommendations. People reach it only through its direct link. It is meant for limited audiences such as partner sales tools, employee resources, research studies, franchisees, students or conference attendees.
How to request it
- The app must already be on the App Store, or be finished and ready for release. Apple does not accept beta or prerelease apps for unlisted distribution.
- When you submit for review, say in the Review Notes that you intend to distribute it unlisted.
- Submit Apple's unlisted app request form for that app.
Once approved, the unlisted status applies to all future versions. An app that is already live keeps its current link. One catch: if the app is currently distributed privately through Apple Business or Apple School Manager, you need a new app record set to public availability before requesting unlisted status.
What to know
- App Review still applies, to the first version and every update. Unlisted is a visibility setting, not a way around review.
- Anyone with the link can install it. The link is not a lock. Apple suggests adding your own in-app sign-in or access check if the audience must be limited.
- It is a release, not a test. Because the app must be ready for final distribution, unlisted is the wrong tool for builds that are still changing.
- Installs work on any device in supported regions, managed or not, and the app is also available through Apple Business and Apple School Manager.
iOS Ad Hoc distribution
An Ad Hoc build is signed with a provisioning profile that lists specific device UDIDs. It installs only on those devices, over the air from a link or through a computer, with no App Review and no App Store account. The build works until the profile or the distribution certificate expires.
- Device limit: 100 devices per product family (iPhone, iPad, and so on) per membership year. Removing a device does not give the slot back until renewal.
- Every new device means a rebuild: add the UDID in the Apple Developer portal, regenerate the profile, export again.
- Best for: QA, clients and a known group of testers who need a build today.
If a tester sees "Unable to install" or "This app cannot be installed because its integrity could not be verified", the device is usually missing from the profile. The guide to Ad Hoc device registration goes through the fix.
TestFlight public link
A public link lets anyone join an external TestFlight group, up to the 10,000 external tester limit, and you can set criteria such as device type and OS version to limit who joins. Testers install the TestFlight app and use their Apple Account. The first build for external testers goes through beta review, and each build expires 90 days after upload.
It is the right tool for an open beta of an app that is heading to the App Store. It is not useful for a build you do not want Apple to review yet, or for something you need to keep working past 90 days. More on that in TestFlight alternatives.
Android equivalents
Google Play internal testing
Up to 100 testers, added by email. Builds are available quickly and internal tests might not go through the standard Play policy and security reviews. Each tester needs a Google account and opts in through a link.
Google Play closed and open testing
Closed testing uses email lists or Google Groups, and builds are reviewed like production releases. Open testing makes the beta joinable by anyone from the Play listing. Personal developer accounts created after November 13, 2023 must run a closed test that meets Google's tester and duration requirements before they can publish to production, so many new developers use closed testing anyway.
Internal app sharing
Upload an APK or app bundle and get a link, with no review, and version codes can be reused. Links expire 60 days after upload and each link allows up to 100 downloads. The catch is on the tester side: they have to turn on internal app sharing in the Play Store app by opening Settings and tapping the Play Store version seven times to reveal the toggle. That is fine for developers, less fine for a client.
Direct APK
Send the .apk through a link. The tester allows installs from unknown sources for their browser once and installs. No Google account, no Play listing needed. Two caveats: Play only accepts app bundles for new apps, so you need a build step that produces an APK, and Google's developer verification starts blocking apps from unregistered developers on certified devices in Brazil, Indonesia, Singapore and Thailand from September 30, 2026, with a wider rollout from 2027. Register as a developer before sending APKs to testers in those regions. Details in APK and AAB signing for sideloads.
Decision table
| Option | Review | Who can install | Tester needs | Good for |
|---|---|---|---|---|
| Apple unlisted app | Full App Review, every version | Anyone with the link | App Store | Finished apps for a limited audience |
| Apple Ad Hoc + install link | None | Registered devices only, up to 100 per family | Their UDID in your profile | QA, clients, known testers |
| TestFlight public link | Beta review for external testers | Anyone, up to 10,000 external testers | TestFlight app, Apple Account | Open betas before an App Store release |
| Play internal testing | Might not get the standard review | Up to 100 listed testers | Google account, opt-in | Your own team |
| Play closed or open testing | Standard review | Lists, Google Groups, or anyone (open) | Google account | Larger betas, new account testing requirement |
| Play internal app sharing | None | Anyone with the link, or an allowed list | Hidden Play Store setting turned on | Developers testing a specific bundle |
| Direct APK + install link | None | Anyone with the link | Unknown sources allowed once | QA, clients, quick builds |
A simple rule of thumb
- Still changing? Use Ad Hoc and APK install links for the people you know, and TestFlight or Play testing for wider betas.
- Finished, but not for the public? Use Apple unlisted distribution, or a custom or private app through an organization's MDM (see enterprise app store vs testing distribution).
- Finished and public? Publish normally.
Sharing Ad Hoc and APK builds with AppForShare
AppForShare covers the install link rows of the table. Upload an .apk or an Ad Hoc, Development or Enterprise signed .ipa and you get a link and a QR code; testers open it on the phone and install over the air, with no store review. It does not publish unlisted apps, submit to TestFlight or re-sign builds, so App Store and TestFlight builds cannot be installed from it.
- The free UDID finder helps testers send their UDID, and the IPA inspector and APK analyzer check a build in your browser before you share it.
- Free links last 7 days and can be password protected. Pro ($12 a month) keeps links live while subscribed. Team ($39 a month) adds private projects for invited testers only.
See pricing for the full limits, or sign up free and share your next build.


