TestFlight: je iPhone-app testen vóór het indienen
Door Mehdi Azizi
Bijgewerkt op , 8 min
Interne of externe testers, bètareview, openbare link, builds die 90 dagen geldig zijn: TestFlight simpel uitgelegd, met de checklist vóór Apple.
Wat is TestFlight en waar dient het voor?
TestFlight is de dienst van Apple waarmee je je app op echte iPhones installeert voordat hij in de App Store verschijnt. Je uploadt een build naar App Store Connect, je nodigt testers uit en zij installeren hem met de TestFlight-app, gratis in de App Store. Er zijn twee soorten testers: interne, tot 100 leden van je team, zonder review door Apple; en externe, tot 10.000 mensen, uitgenodigd per e-mail of via een openbare link, na een bètareview van je eerste build. Elke build blijft 90 dagen testbaar.
| Criterium | Interne testers | Externe testers |
|---|---|---|
| Maximum aantal | 100 | 10.000 |
| Toegang tot je account | Ja, met een rol | Nee |
| Uitnodiging | Toevoegen aan de interne groep | E-mail of openbare link |
| Bètareview van Apple | Geen | Op de eerste build |
| Voor wie | Jijzelf, een compagnon, naasten | Vrienden, eerste gebruikers |
Om TestFlight te gebruiken heb je een betaald Apple Developer-account nodig: met een gratis account heb je geen toegang tot de dienst. De rest van deze gids gaat ervan uit dat je er een hebt, binnen het standaardprogramma: het Enterprise-programma van Apple geeft geen toegang tot TestFlight.
Bij mijn apps gaat elke build die ik via EAS Submit verstuur eerst door TestFlight en over mijn iPhone voordat hij in review gaat. Daar vind ik de problemen die je tijdens het ontwikkelen niet ziet.
Een build naar TestFlight sturen
Een build is een gecompileerde en ondertekende versie van je app: is hij verkeerd ondertekend, dan weigert Apple hem bij het uploaden met ITMS-90034. Om hem in TestFlight te zien, moet je hem naar App Store Connect sturen. Met Expo is dat eas build --platform ios en daarna eas submit --platform ios, met een build-image die recent genoeg is om ITMS-90725 te vermijden. Volgens de documentatie van Expo verschijnt de build in TestFlight nadat Apple hem heeft verwerkt, meestal binnen 10 tot 15 minuten. Dit kan allemaal vanaf een pc: de gids een iOS-app publiceren zonder Mac beschrijft de complete keten.
Twee details lopen de eerste keer vaak vast:
- Het buildnummer moet bij elke upload veranderen. Apple weigert twee builds met hetzelfde nummer voor dezelfde versie. Zet bij EAS het automatisch ophogen aan en je hoeft er niet meer aan te denken.
- De vraag over encryptie. Zolang je de vraag over het gebruik van encryptie niet hebt beantwoord, blijft de build hangen met de status Missing Compliance. Je kunt hem elke keer in App Store Connect beantwoorden, of het één keer vastleggen in de configuratie van je app.
Interne testers: je team, zonder wachten
Interne testers zijn gebruikers van je App Store Connect-account met een toegewezen rol. Apple staat er tot 100 toe, en ieder van hen kan de app op meerdere apparaten installeren, tot 30.
Hun grote voordeel: geen bètareview. Zodra de build klaar is met verwerken, zonder automatische fout zoals ITMS-90717, voeg je hem toe aan je interne groep en is hij beschikbaar. Dit is de juiste groep voor jezelf, en voor een compagnon of iemand dichtbij aan wie je toegang tot je account geeft.
Hun beperking: je moet ze toevoegen als gebruikers van je App Store Connect-account. Niet geschikt voor onbekenden.
Externe testers en bètareview
Externe testers hebben geen toegang tot je account nodig. Je kunt er tot 10.000 uitnodigen, per e-mail of via een openbare link. Dit is de juiste groep voor vrienden, eerste gebruikers, een community.
Daar staat tegenover dat Apple de build controleert voordat zij erbij kunnen. Als je de eerste build van een versie aan een externe groep toevoegt, gaat hij in bètareview. Volgende builds van dezelfde versie hebben niet per se een volledige review nodig.
Voor die indiening vraagt App Store Connect om testinformatie:
- een beschrijving van de bèta, die testers vertelt waar ze naar moeten kijken;
- een e-mailadres voor feedback;
- je contactgegevens, zodat Apple je kan bereiken.
De bètareview is niet de App Store-review. Een build die in TestFlight is goedgekeurd, kan bij publicatie alsnog worden afgewezen.
De bètareview controleert of de build zich aan de regels houdt, maar de uiteindelijke review kijkt ook naar je productpagina, je abonnementen, je juridische teksten en de volledige ervaring. Houd de klassieke afwijzingsredenen in gedachten, beschreven in waarom Apple een app afwijst.
Testers uitnodigen via een openbare link
De openbare link is de eenvoudigste manier om je app te laten testen door mensen die je nog niet kent. Dit is het stappenplan van Apple, met de Engelse labels van de interface:
- Open in App Store Connect je app en dan het tabblad TestFlight.
- Selecteer onder External Testing je externe groep.
- Klik op Create Public Link.
- Kies Open to Anyone om de link voor iedereen open te zetten, of Filter by Criteria om hem te beperken tot bepaalde apparaten en iOS-versies.
- Stel eventueel een maximum aantal testers in met Set Limit.
Daarna deel je de link waar je wilt: bericht, social media, e-mail. De persoon installeert de TestFlight-app, opent de link en accepteert de uitnodiging.
Twee dingen om te weten voordat je hem breed verspreidt:
- Stel een limiet in. Als je link verder rondgaat dan gepland, houd je controle over het aantal testers.
- Testers via een openbare link zijn anoniem. App Store Connect toont voor hen alleen de installatiedatum, de sessies en de crashes. Wil je weten wie wat heeft getest, nodig dan liever per e-mail uit.
Hoe lang blijft een TestFlight-build geldig?
Een build blijft 90 dagen beschikbaar voor testers. Daarna verloopt hij en kunnen je testers hem niet meer openen. Duurt je bèta langer, stuur dan gewoon een nieuwe build vóór de vervaldatum.
In de praktijk stuur je veel vaker nieuwe builds: bij elke belangrijke fix. Elke nieuwe build die aan de groep wordt toegevoegd, wordt aan je testers aangeboden, en zij halen hem op in de TestFlight-app.
Feedback van testers verzamelen
TestFlight heeft een ingebouwd feedbacksysteem: de tester maakt een screenshot in je app, kan er aantekeningen op zetten en stuurt hem naar je. Crasht de app, dan krijg je een crashrapport en kan de tester context toevoegen. Je vindt alles terug in App Store Connect.
Handig, maar niet genoeg om een specifieke crash te begrijpen. In mijn apps voeg ik Sentry toe, dat de fout met de betreffende regel code doorgeeft, en PostHog, dat laat zien waar gebruikers afhaken. Beide werken in een TestFlight-build net als in productie.
Abonnementen testen in TestFlight
Verkoopt je app een abonnement, dan is TestFlight de plek om te checken of het echt werkt. Aankopen in een TestFlight-build lopen via de testomgeving van Apple: je testers betalen niets. Verlengingen zijn versneld: elk abonnement verlengt één keer per dag, maximaal zes keer in een week, ongeacht de echte looptijd.
Controleer minstens of de getoonde prijzen kloppen, of de aankoop de app echt ontgrendelt en of de herstelknop het abonnement terugvindt na een herinstallatie. Ik gebruik RevenueCat voor de abonnementen van mijn apps; de hele opzet, van de producten in App Store Connect tot de paywall, staat op de pagina in-app-abonnementen op iOS.
Wat je moet testen voordat je naar Apple stuurt
Dit is de lijst die ik vóór elke indiening voor review afwerk. Elk punt staat voor een afwijzingsreden of een vermijdbare crash.
De eerste keer openen
- Verwijder de app, installeer hem opnieuw via TestFlight en open hem. Dat is wat de reviewer zal doen.
- Doorloop de onboarding helemaal, zonder iets over te slaan.
- Weiger elke toestemming (notificaties, camera, locatie) en controleer of de app blijft werken.
Het geld
- De paywall toont de prijzen, de looptijd en de links naar de gebruiksvoorwaarden en het privacybeleid.
- De aankoop werkt, het herstellen ook.
- Alle geconfigureerde producten zijn zichtbaar voor de reviewer: guideline 2.1 eist dat in-app-aankopen compleet, zichtbaar en werkend zijn.
Lastige omstandigheden
- Vliegtuigmodus en een traag netwerk: een duidelijke melding, geen wit scherm.
- De kleinste en de grootste iPhone die je ondersteunt: niets afgesneden, niets verborgen achter het toetsenbord. Een afgesneden scherm op een kleine iPhone heeft me bij Solys een afwijzing opgeleverd.
- Lange teksten, als je app vertaald is.
Het dossier voor de reviewer
- Vraagt je app om in te loggen, zet dan een demo-account in de reviewnotities, met je backend aan. Guideline 2.1 vraagt dit expliciet.
- Reviewnotities die in twee zinnen uitleggen wat de app doet en waar de hoofdfunctie zit.
Wordt je app toch afgewezen, dan legt de pagina app afgewezen door Apple uit hoe je reageert zonder een week te verliezen. En voor het totaaloverzicht van publiceren, van productpagina tot release, lees een app publiceren in de App Store.
Een testschema om in te vullen voor je build
Download het schema met 16 scenario's als CSV. Het onderscheidt de voorbereiding, de handeling, het verwachte resultaat en het waargenomen bewijs. Importeer het in Numbers, Excel of Google Sheets en vul per test de versie, het apparaat en het resultaat in.
Voor een fictief leeslogboek is "een pagina opslaan" niet genoeg: noteer pagina 24, sluit de app volledig af, start hem opnieuw en vind de waarde terug. Een test die niet is uitgevoerd, blijft op "Te testen" staan. Heeft je app geen abonnement, zet dan "Niet van toepassing" bij de aankoopscenario's, met die reden erbij.
Het schema is een vertrekpunt om aan te passen, geen certificering. Bekijk ook de App Review-notities en de andere gratis templates om de reviewer het pad uit te leggen dat je echt hebt gecontroleerd.
Van TestFlight naar de App Store
TestFlight is de stap waarop je app echt wordt: hij draait op een echte iPhone, in handen van echte mensen. In het traject van de iOS Kit is dit de tweede stap: de kern van de app bouwen en hem op je iPhone testen met TestFlight, voordat je de abonnementen aansluit en de publicatie voorbereidt.
Na TestFlight komt de review van Apple: de Apple Review Kit bundelt mijn checklist vóór het indienen en de notities voor de tester. Op de homepage zie je de vier stappen om je mobiele app te maken met Claude Code.
Niemand kan je garanderen dat Apple je app accepteert: Apple beslist.
Veelgestelde vragen
Hoe test je je iPhone-app met TestFlight?
Upload een build naar App Store Connect en voeg hem toe aan een testersgroep. Met Expo compileer je hem met EAS Build en verstuur je hem met EAS Submit: hij verschijnt in TestFlight nadat Apple hem heeft verwerkt, volgens Expo meestal binnen 10 tot 15 minuten. Je testers installeren hem met de TestFlight-app, gratis in de App Store. Je hebt een betaald Apple Developer-account nodig.
Hoe maak je een TestFlight-link om testers uit te nodigen?
Open in App Store Connect het tabblad TestFlight van je app, selecteer je groep onder External Testing en klik op Create Public Link. Kies Open to Anyone of Filter by Criteria en stel daarna een limiet in met Set Limit. Testers via een openbare link blijven anoniem: wil je weten wie wat heeft getest, nodig ze dan liever per e-mail uit.
Vervangt de bètareview van TestFlight de App Store-review?
Nee. De bètareview controleert of de build zich aan de regels houdt, maar de uiteindelijke review kijkt ook naar je productpagina, je age rating, je abonnementen, je juridische teksten en de volledige ervaring. Een build die in TestFlight is goedgekeurd, kan bij publicatie dus nog worden afgewezen. Alleen externe testers leiden tot een bètareview, op de eerste build van een versie: interne testers gaan door geen enkele review.
Hoeveel testers kun je uitnodigen op TestFlight?
Je kunt tot 100 interne testers en tot 10.000 externe testers uitnodigen. Interne testers zijn leden van je App Store Connect-account, zonder bètareview, en ieder van hen kan de app op maximaal 30 apparaten installeren. Externe testers worden per e-mail of via een openbare link uitgenodigd, na een bètareview van de eerste build. Elke build blijft 90 dagen testbaar.
Kun je een abonnement testen in TestFlight zonder te betalen?
Ja, aankopen in een TestFlight-build lopen via de testomgeving van Apple: je testers betalen niets. Verlengingen zijn versneld: elk abonnement verlengt één keer per dag, maximaal zes keer in een week, ongeacht de echte looptijd. Controleer minstens de getoonde prijzen, het ontgrendelen van de app en het herstellen na een herinstallatie. De complete opzet staat op in-app-abonnementen op iOS.
Wat moet je in TestFlight controleren voordat je de app naar Apple stuurt?
Installeer de app opnieuw via TestFlight, zoals de reviewer zal doen, en doorloop de onboarding helemaal. Weiger elke toestemming, test de aankoop en het herstellen, en probeer daarna de vliegtuigmodus en de kleinste en grootste iPhone die je ondersteunt. Vraagt de app om in te loggen, zet dan een demo-account klaar in de reviewnotities, met je backend aan.