Upgrade path for iTunes Connect TestFlight external testers after release to App Store

app-store-connect

When releasing to the App Store after using iTunes Connect Testflight beta testing, what's a good way to ensure that external testers get cleanly upgraded to the official App Store version? Specifically:

  • Will external testers get a notification on the device that a new app version is
    available? Will this be a regular iOS notification, a notification
    from the Testflight app, or both?
  • On the home screen, will the beta app's icon show any indication that
    it's been superseded by a non-beta app?
  • If the user has automatic app updates enabled, will the app store app
    download and install automatically, replacing the beta app? Or will
    the user have to upgrade manually even if auto-upgrades are enabled?
  • If the user opens the Apple Testflight app, will they see any
    indication that the build they were testing has been superseded by a
    released build?
  • [worst case scenario] If auto-update isn't enabled or doesn't work for beta apps, then what happens when the user tries to open the app after our app store release? Will the app simply crash with no indication to the user what's happened or how to fix it?

If the answers to some of the above questions are "maybe" then what configuration or settings should we use to ensure that app updates work as expected? (where "expected" means that when we release the app to the app store, then all testers should be updated with that new version of the app).

Googling on this topic hasn't been very helpful, perhaps because Apple's TestFlight support is only a few months old so Google is dominated by non-technical news links instead of technical blogs and other places that may offer more details. I've been unable to find any programmer blogs which talk about the "upgrade from external tester to app store version" workflow.

Apple's documentation is clear about what happens from the perspective of the iTunes Connect web application (see excerpts below, coalesced for clarity) but not very clear about the external testers' user experience, which is what I'm trying to figure out. Here's excerpts from Apple's Docs illustrating this:

Finish Testing an App. To stop testing a prerelease version of an app that is actively being
tested in TestFlight beta testing, set the Testing switch into the Off
(white) position.

Submit to the App Store When you are done using TestFlight beta testing, you can submit the
app for final review. Before you submit it, make sure you no longer
want to test it or any builds you uploaded earlier than it. When the
app becomes Ready for Sale in the App Store, testing automatically
stops on earlier builds, and you will be unable to view or test them.
See When builds become unavailable for more details. If you want to
resume testing of an earlier build, you can upload it as a new build
associated with a new prerelease version.

When builds become unavailable
Before your app becomes Ready for Sale, the Prerelease pane lists all builds for all prerelease versions
you have uploaded. After the app becomes Ready for Sale, some of the
builds will be removed from the pane:

The build used in the app is removed from Prerelease, as are all other
builds in the same prerelease version. All builds in earlier
prerelease versions are also removed from Prerelease. On the
Prerelease page, the sections for those prerelease versions will be
removed.

BTW, I previously asked this question on Stack Overflow where it was deleted for lack of answers, and it looks like a better home for this may be Ask Different where iTunes Connect questions are apparently encouraged.

Best Answer

The pragmatic way to ensure all testers are off the app is to wait the 30 days for the build to expire and have them manually grab the store version.

You could also upload a new beta build instructing them to do the same. That way they get an email from Apple with the news you want to convey to them and a limited duration to get them all off that build.