Episode ini membahas distribusi aplikasi: upload aplikasi iOS ke App Store, beta testing dengan TestFlight, deployment untuk macOS, watchOS, dan tvOS, serta proses code signing, notarization, dan release management yang benar dari archive hingga produksi.

Semua kerja keras kalian bermuara di sini: aplikasi sampai ke tangan pengguna. Episode 20 membahas deployment dan app distribution — dari archive, beta testing dengan TestFlight, sampai upload ke App Store dan distribusi ke macOS, watchOS, serta tvOS.
Distribusi yang rapi bukan hanya soal menekan tombol Upload. Di baliknya ada code signing yang benar, notarization untuk keamanan pengguna, dan release management yang membuat rollback dan rilis bertahap menjadi mudah.
Artefak distribusi dibuat lewat archive (episode 18). Sebelum archive, pastikan nomor versi dan build number diperbarui — keduanya harus naik setiap rilis:
xcodebuild archive \
-scheme Aplikasi \
-archivePath ./build/Aplikasi.xcarchive \
-configuration Release \
-allowProvisioningUpdatesxcodebuild archive ... -allowProvisioningUpdates menghasilkan .xcarchive yang berisi app beserta metadata dan symbol. Archive ini menjadi titik awal seluruh alur distribusi — App Store, TestFlight, atau ad-hoc.
Dari archive, aplikasi di-export ke format distribusi lalu diupload:
xcodebuild -exportArchive \
-archivePath ./build/Aplikasi.xcarchive \
-exportPath ./export \
-exportOptionsPlist exportOptions.plistxcodebuild -exportArchive -exportOptionsPlist ... mengubah archive menjadi .ipa sesuai pilihan di exportOptions.plist — misalnya uploadBitcode dan method bernilai app-store. Upload ke App Store Connect dilakukan lewat Xcode Organizer atau Fastlane.
TestFlight adalah layanan beta testing Apple. Build yang sudah di-upload bisa disebarkan ke tester eksternal maupun internal:
Build TestFlight juga menyediakan data crash dan feedback dari tester. Gunakan fase ini untuk validasi di perangkat nyata sebelum rilis umum.
Fastlane menyederhanakan langkah ini — episode 18 memperkenalkan lane beta:
bundle exec fastlane betabundle exec fastlane beta menjalankan lane yang membangun, menandatangani, dan mengunggah build ke TestFlight. Otomasi ini membuat setiap commit di branch tertentu menghasilkan build beta baru tanpa campur tangan manual.
Untuk aplikasi macOS, Apple mewajibkan notarization: app harus diperiksa Apple sebelum dijalankan pengguna di luar App Store. Prosesnya dijalankan dengan notarytool:
xcrun notarytool submit Aplikasi.dmg \
--keychain-profile "notary-profile" \
--waitxcrun notarytool submit Aplikasi.dmg --wait mengirim app untuk pemeriksaan keamanan otomatis Apple dan menunggu hasilnya. Setelah disetujui, stapler menempelkan tanda terima sehingga app berjalan tanpa peringatan "app tak dikenal".
Deployment ke watchOS dan tvOS mengikuti jalur yang sama — App Store Connect menerima build untuk ketiga platform, dengan perbedaan:
Rancang pipeline yang menangani beberapa target sekaligus sejak awal — misalnya satu lane Fastlane per platform, atau satu lane dengan parameter.
Praktik release yang sehat mencakup:
Setiap build yang dikirim ke App Store melewati review. Untuk memperlancar:
Warning
Gunakan rilis bertahap (phased release) untuk build baru. Jika crash atau komplain muncul di gelombang pertama, kalian bisa menangguhkan rilis sebelum dampak meluas — kontrol yang tidak dimiliki rilis serentak.
Inti yang harus dibawa pulang:
Di episode 21 selanjutnya kita akan membahas observability dan production support — crash reporting dan analytics di aplikasi Swift, logging, telemetry, dan performance monitoring, health checks dan feedback loop pengguna, serta incident response dan release rollback. Aplikasi kalian akan terlihat jelas di produksi!