On this page
Test devices
Ad-hoc and Development distribution install builds straight onto specific iPhones and iPads without going through the App Store or TestFlight. Ad-hoc is for demoing to clients and QA on real devices. Development is for debug builds on your own devices, and it's the fastest way to get a NativePHP app onto an iPhone from Windows or Linux.
What Apple requires
- A paid Apple Developer Program membership.
- Every device registered in your Apple Developer account before the build is signed.
- At most 100 devices per device type per membership year. Slots free up only when the membership renews, so register only what you need.
Builds expire with their provisioning profile, at most a year, and only run on devices in that profile.
Set up the credential
Create an iOS credential with Ad-hoc or Development as the distribution type. Managed credentials work for both, but Apple won't issue a profile with no devices on it, so with no devices registered yet the credential starts without a profile and you mint it after registering the first device. If you upload your own, use an Ad Hoc profile for Ad-hoc, or an Apple Development certificate and iOS App Development profile for Development. Bifrost uses your team's App Store Connect key to register devices and regenerate profiles.
Register devices
On the credential page, under Test Devices:
- Invite a Device gives you a link, valid for 7 days. A tester opens it on their iPhone or iPad and a one-tap flow captures the device's UDID, model and iOS version, nothing more. The temporary profile it uses is not kept and grants no access to the device.
- Captured devices show as Pending. Nothing reaches Apple until you click Register with Apple, since each registration uses one of your yearly slots.
- Add Manually if you already know a UDID, or Sync from Apple to pull in devices already in your account.
After registering devices click Regenerate Profile. Bifrost first refreshes the list from your Apple account, so devices you registered elsewhere are picked up and devices disabled at Apple are marked as such and left out. It then issues a fresh profile containing every registered device, stores it on the credential, and removes the one it created before. The next build uses it.
Install on a device
When the build finishes, open it and choose Install on Device for a QR code and an install link valid for 7 days. Testers open the link in Safari on a registered device and tap Install on this device.
The first time a Development build opens, iOS may say Untrusted Developer. Trust the certificate once under Settings → General → VPN & Device Management.
If an app won't install, the device usually wasn't in the profile when the build was made. Register it, regenerate the profile and ship a new build.
Good to know
- In-app purchases only work in sandbox on these builds, and there's no TestFlight crash reporting.
- Development builds use Apple's sandbox push environment; TestFlight and App Store builds use production.
- Anyone with a valid install link can download the build, so share links only with testers.