TestFlight — är Apples officiella tjänst för betatestning av iOS-, iPadOS-, watchOS- och tvOS-appar. Genom TestFlight distribuerar utvecklare före release-byggen till upp till 10 000 externa testare, samlar in feedback och crash-rapporter utan att behöva publicera i App Store. Enligt Apple Developer Documentation, 2025 använder över 80 % av apparna i App Store TestFlight i förberedelsefasen av en release.
Huvudpunkter
TestFlight — är det enda officiella och lagliga sättet att distribuera iOS-appar för testning utan publicering i App Store. Tjänsten lanserades av Apple 2014 efter förvärvet av ett företag med samma namn. Före TestFlights ankomst använde utvecklare Ad Hoc-distribution med en begränsning på 100 enheter per säsong — TestFlight tog bort denna begränsning och förenklade processen till några få klick.
iOS har en strikt säkerhetspolicy: en app kan endast installeras på en enhet via App Store eller med speciella certifikat. TestFlight löser problemet med betatestning genom att fungera som en proxy mellan utvecklaren och testaren: Apple kontrollerar bygget mot grundläggande krav, varefter testare får appen via TestFlight-appen från App Store, vilket inte kräver förtroende för osignerade filer.
Det finns tre sätt att distribuera iOS-appar utanför App Store: Ad Hoc (begränsning på 100 enheter, kräver UDID för varje enhet), Enterprise (intern företagsdistribution utan begränsning, kräver ett Apple Enterprise-certifikat för 299 USD/år) och TestFlight (upp till 10 000 testare, gratis, ingen UDID-insamling krävs). TestFlight är det optimala valet för betatestning, Ad Hoc är lämpligt för enhetsspecifika tester, Enterprise — för företagsappar.
Processen att publicera ett bygge via TestFlight består av fem steg: bygga i Xcode, ladda upp till App Store Connect via Archive Organizer, bearbetning av Apple, bjuda in testare, installera appen via TestFlight-appen. Varje steg tar från några minuter till en timme beroende på projektets komplexitet.
Bygget måste byggas med ett distributionscertifikat och en korrekt provisioning profile. Apple kontrollerar: certifikatets giltighet, bundle identifier-överensstämmelse, frånvaro av privata API:er, ikonernas korrekthet (1024×1024) och förekomst av App Store-ikon. Om bygget inte klarar kontrollen — visar TestFlight ett fel med en beskrivning av problemet.
Efter uppladdning går bygget igenom en automatiserad Apple-kontroll: statisk analys av binär kod, kontroll av digital signatur, skanning efter användning av privata API:er och skadlig programvara. Bearbetning tar 15 minuter till 2 timmar för första bygget och vanligtvis 15–30 minuter för efterföljande. Bearbetningsstatus visas i Activity i App Store Connect.
// Konfigurera TestFlight i Swift AppDelegate
import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// Kontroll: om appen har installerats via TestFlight
if Bundle.main.appStoreReceiptURL?.lastPathComponent
== "sandboxReceipt" {
print("Beta version via TestFlight")
}
return true
}
}
TestFlight delar in testare i två grupper: interna (Internal Testers) och externa (External Testers). Skillnaden ligger i antalet deltagare, tillgång till byggen och behovet av Apple-granskning. Rätt val av grupp påskyndar testprocessen och följer App Store-policyerna.
Upp till 100 deltagare från Apple Developer Program-teamet. För att bjuda in en intern testare räcker det att lägga till hans Apple ID i App Store Connect — han får omedelbart tillgång till alla byggen. Ingen Apple-granskning krävs. Idealisk för daglig smoke-testning och kontroll av funktioner i tidiga skeden.
Upp till 10 000 deltagare utanför utvecklingsteamet. Första bygget för externa testare genomgår en grundläggande Apple-granskning (vanligtvis 1–2 dagar). Efterföljande byggen med ändringar som inte påverkar kärnfunktionaliteten kan gå igenom utan omgranskning. Externa testare bjuds in via e-post eller offentlig länk.
| Parameter | Internal Testers | External Testers |
|---|---|---|
| Max. antal | 100 | 10 000 |
| Apple-granskning | Krävs inte | Första bygget — obligatoriskt |
| Inbjudan | Apple ID från team | E-post / offentlig länk |
| Byggets giltighetstid | 90 dagar | 90 dagar |
| Tillgång till byggen | Till alla på en gång | Endast aktiva grupper |
Uppladdning av ett bygge till TestFlight görs via Xcode, Application Loader eller kommandoraden med xcrun. Den vanligaste metoden — via Xcode Archive Organizer efter att ha skapat ett projektarkiv. Alternativ metod — automatisering via Fastlane för CI/CD Pipeline.
Skapa ett arkiv (Product → Archive), öppna Organizer, välj arkivet och klicka på Distribute App. Välj TestFlight som distributionsmetod, ange certifikat och provisioning profile. Xcode laddar upp bygget till App Store Connect, där det visas efter bearbetning. Hela processen tar 10–20 minuter för första uppladdningen.
Fastlane — är det populäraste verktyget för att automatisera uppladdning av byggen till TestFlight. Kommandot fastlane pilot laddar upp bygget och hanterar testare utan att öppna Xcode. Integration av Fastlane med CI/CD-server möjliggör automatisk publicering av byggen i TestFlight efter att alla tester har klarats.
# Fastfile — uppladdning av bygge till TestFlight
default_platform(:ios)
lane :beta do
# Hämta certifikat via match
match(type: "appstore")
# Bygga och signera
build_app(
scheme: "MyApp",
export_method: "app-store",
workspace: "MyApp.xcworkspace"
)
# Ladda upp till TestFlight
pilot(
skip_waiting_for_build: true,
distribute_external: false,
notify_external_testers: false
)
end
Fastlane pilot laddar automatiskt upp IPA till App Store Connect, väntar på bearbetning (om skip_waiting_for_build = false) och tilldelar bygget till valda testargrupper. Kommandot distribute_external: true skickar omedelbart bygget till externa testare efter bearbetning.
Utan Fastlane kan xcrun användas: xcrun altool --upload-app --file path/to/app.ipa --username YOUR_APPLE_ID --password @keychain:AC_PASSWORD. altool stöds av Apple för CI-miljöer och kräver inget grafiskt gränssnitt. Lösenordet skickas via keychain eller app-specific password — använd inte lösenord i klartext.
TestFlight erbjuder flera feedbackmekanismer: inbyggt feedbackformulär, automatisk insamling av crash-loggar, användningsstatistik och skärmbilder. Teamet får all data i App Store Connect utan att behöva implementera tredjeparts-SDK:er för betatestning.
Testaren öppnar TestFlight-appen, väljer ditt bygge och klickar på Send Feedback. Formuläret gör det möjligt att skicka textfeedback, bifoga en skärmbild och ange allvarlighetsgrad. All feedback samlas i App Store Connect i avsnittet TestFlight → Feedback. Utvecklaren kan svara på feedback och testaren får ett meddelande i TestFlight-appen.
När appen kraschar samlar TestFlight automatiskt in en crash-rapport: anropsstack, OS-version, enhetsmodell och kraschens tidpunkt. Crash-loggar finns tillgängliga i Xcode Organizer (Crashes) och App Store Connect (TestFlight → Crashes). För att få symboliserade crash-loggar måste dSYM-filer laddas upp tillsammans med bygget eller separat via Xcode.
TestFlight visar statistik: antal installationer, aktiva testare, sessioner och krascher. Analys uppdateras dagligen och hjälper till att utvärdera testarnas engagemang. Om ingen testare har öppnat appen under en vecka — är det värt att ompröva kommunikationen med gruppen eller byggets kvalitet.
TestFlight är en integrerad del av publiceringsprocessen i App Store. Samma bygge som har genomgått betatestning via TestFlight kan skickas till Apple-granskning utan ombyggnad — det räcker att trycka på en knapp i App Store Connect. Detta eliminerar risken att produktionsbygget skiljer sig från det testade.
I App Store Connect, välj bygget som har testats och klicka på Submit for Review. Apple använder samma bygge från TestFlight — omuppladdning krävs inte. Granskningstiden är vanligtvis 1–3 dagar. Om bygget avvisas — korrigera anmärkningarna, ladda upp ett nytt bygge till TestFlight och upprepa processen.
Det rekommenderas att efter den sista testomgången i TestFlight vänta 24–48 timmar innan du skickar till granskning. Denna tid ger testare möjlighet att upptäcka kritiska buggar som kan slinka igenom automatiska tester. Release candidate (RC)-bygget i TestFlight är standardpraxis för mogna iOS-team.
TestFlight-byggen blir automatiskt otillgängliga för nya installationer efter att releaseversionen har lanserats i App Store. Testare som redan har installerat betaversionen kan fortsätta använda den i 30 dagar efter publicering av releasen, varefter appen slutar att öppnas. Se till att testarna har uppdaterat till App Store-versionen.
Vanliga frågor
TestFlight är helt gratis för deltagare i Apple Developer Program (99 USD/år). För användning av tjänsten tas ingen extra avgift ut, oavsett antal byggen och testare. Du betalar endast för Apple-utvecklarprenumerationen — TestFlight ingår som standard.
Nej, TestFlight är en exklusiv tjänst inom Apples ekosystem. För Android finns ett liknande verktyg i Google Play Console — spåren Internal Testing och Open Testing. För publicering av betaversioner på Android används även Firebase App Distribution och DeployGate.
Bearbetning tar från 15 minuter till 2 timmar för första bygget efter uppladdning. Efterföljande byggen bearbetas snabbare — vanligtvis 15–30 minuter. Bearbetningstiden beror på belastningen av Apples servrar. Statusen kan följas i App Store Connect under Activity.
Varje bygge är tillgängligt för testning i 90 dagar från uppladdningstillfället. Antalet byggen är inte begränsat, men högst 30 byggen kan vara aktiva samtidigt. Äldre byggen tas automatiskt bort efter utgång eller när gränsen nås.
För att delta i testning via TestFlight krävs ett Apple ID. Externa testare bjuds in via en e-postlänk — vid första öppnandet av länken kommer systemet att föreslå att skapa ett Apple ID om det inte redan finns. En offentlig länk finns också tillgänglig för spridning i sociala medier eller blogg.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också