Clients want to see their app on their own iPhone, not in a screen recording. But TestFlight asks them to install another app and accept an invitation, and ad hoc builds usually start with "please send me your UDID".
The usual options
| Option | What the client does | What you do |
|---|---|---|
| TestFlight | Installs TestFlight, accepts an invite | Uploads to App Store Connect, waits for review for external testers |
| Ad hoc by hand | Finds and emails their UDID | Registers it, updates the profile, rebuilds, sends a link |
| BuildFerry | Opens a link in Safari and taps Install | Uploads the .ipa once and approves their iPhone |
Sending a build with BuildFerry
- Upload the .ipa you'd normally export for testing.
- Copy the app's share link. On Solo and Pro, add a PIN or an expiry date for client work.
- Send it to your client with the message below.
- Approve their iPhone when the request appears. They see Install a moment later.
When you upload the next build, the same link serves it. The client doesn't need a new invite.
A message you can send
Here's the latest build. Open this link in Safari on your iPhone: [link]. Tap Allow to download a small profile, then open Settings and tap Profile Downloaded to install it. Once I approve your iPhone, tap Install on the page.
Tips for client builds
- Point it at staging. Ad hoc builds never go through App Review, so debug menus and test servers are fine.
- Name each request so you know whose iPhone you're approving.
- Watch the device count. Each client's iPhone uses one of your 100 slots for the year, so approve only the people who need it.
Questions
How do I send an iOS app to a client without TestFlight?
Use ad hoc distribution. With BuildFerry, the client opens a link in Safari, allows a one-time profile, and installs after you approve their iPhone. There's no app to install and no review.
Does my client need an Apple Developer account?
No. Only you need a paid Apple Developer membership. Your client only needs an iPhone and Safari.