Wednesday, October 27, 2010

iOS & Mac App Betas Should Be Distributed by the App Store

David Chartier strongly suggested on Twitter that every iOS developer drop what they are doing and sign up for TestFlight, which allows beta testers to download builds of your app over the air.

I had heard of and registered for TestFlight a few weeks ago, but the apps in private beta and I haven't got passed the velvet rope.

After seeing the FaceTime for Mac registration process, it hit me that signing up beta testers should be that easy and handled by Apple. I mean no offense or disruption to the people at TestFlight who sound like they have done amazing work, but this is a job for the App Store itself.

The current Ad Hoc distribution system, which iOS developers use for beta testing, is a huge source of friction. To manage this process, developers have to:

  1. Educate users about what UUIDs are, how to get them, and send them in.
  2. Register a finite number of devices per year on the app store to use for Ad Hoc distribution.
  3. Manage the Ad Hoc provisioning profile to include beta tester devices.
  4. Keep the Ad Hoc profile current on all developer machines.
  5. Distribute the beta build, profile, and instructions on how to get the build into iTunes.
  6. Support strange or busted configurations for testers when things go wrong.
  7. Repeat 1-6 whenever a tester gets a new device or replaces an existing device.

If the App Store handled beta build distribution, here's how it would work:

  1. Tester gives developer their beta tester handle (think like Game Center)
  2. Developer adds that handle to the beta tester tab in iTunes Connect.
  3. Developer uploads beta builds to iTunes Connect.
  4. Tester is notified they've been asked to be a tester for App X. Tester agrees and gets builds through the App Store on device or in iTunes.

This proposal brings the following benefits:

  • Tester devices are managed by the App Store, developers never have to know many there are or when they change.
  • Registering testers for a developers app is a one time process. Of course, either the tester or developer could opt out.
  • Testers get installation and app updates just as they expect with production apps. (Beta's could be badged by the OS).
  • Developers could get crash logs and perhaps console output of their apps through iTunes Connect.
  • Apple could add a crash reporter panel to iOS that only appears to when a beta crashes.

The overall result though would be an increase in quality of apps since more builds would be tested by more people since the process gets so much easier. I hope something like this comes in iOS 5.