App Thinning adalah teknologi Apple yang mengurangi ukuran aplikasi yang diinstal dengan hanya mengirimkan sumber daya yang diperlukan untuk perangkat spesifik pengguna. Menurut Apple Developer Documentation, 2026, App Thinning mencakup tiga mekanisme: Slicing, Bitcode, dan On-Demand Resources. Mari kita bahas setiap komponen dan pengaruhnya terhadap ukuran distribusi.
Poin Utama
App Thinning adalah teknologi optimasi distribusi aplikasi iOS yang komprehensif, diperkenalkan oleh Apple bersama iOS 9 (September 2015). Tujuan App Thinning adalah meminimalkan ukuran aplikasi yang diunduh pengguna ke perangkatnya, tanpa mengubah kode sumber dan fungsionalitas. Teknologi ini bekerja pada tiga tingkat: pada tahap pembangunan (kompilasi), di sisi App Store (pengiriman), dan di perangkat (manajemen sumber daya).
Sebelum munculnya App Thinning, pengembang menyertakan sumber daya untuk semua kemungkinan perangkat dalam file biner — gambar @2x dan @3x, kode 32-bit dan 64-bit, shader Metal untuk GPU yang berbeda. Ini menyebabkan pembengkakan ukuran aplikasi: pengguna iPhone 6 Plus dengan layar Retina HD menerima sumber daya vektor untuk iPad Pro yang tidak pernah digunakan. Apple memecahkan masalah ini dengan memindahkan sebagian pekerjaan pembangunan ke server App Store.
Menurut penelitian Apple (WWDC 2015, Sesi 412), aplikasi tipikal dengan dukungan untuk beberapa arsitektur dan resolusi dapat berkurang 30-50% setelah menerapkan App Thinning. Untuk game dengan banyak tekstur sangat detail, penghematan bisa mencapai 70-80%. Apple terus meningkatkan teknologi: di iOS 17, optimasi untuk ARM64e ditambahkan dan kerja dengan On-Demand Resources untuk aplikasi yang menggunakan Swift Package Manager ditingkatkan.
Ukuran aplikasi mobile terus bertambah. Menurut data Sensor Tower (2025), ukuran rata-rata aplikasi iOS telah meningkat 45% dalam 5 tahun terakhir. Bagi pengguna dengan paket data terbatas atau internet lambat, setiap megabyte berarti. App Thinning memecahkan masalah ini tanpa partisipasi pengembang — cukup aktifkan dukungan di pengaturan proyek dan unggah build ke App Store Connect.
Proses App Thinning dimulai setelah mengunggah arsip aplikasi ke App Store Connect. App Store menganalisis file biner dan membaginya menjadi segmen berdasarkan arsitektur (armv7, arm64, arm64e), resolusi layar (iPhone, iPad), dan versi iOS. Untuk setiap kombinasi, varian terpisah dibuat. Ketika pengguna mengklik “Unduh”, App Store menentukan model perangkat, versi iOS, dan jenis koneksi (Wi-Fi / jaringan seluler) dan hanya mengirim varian yang sesuai.
Bagi pengguna, prosesnya transparan — tidak ada pilihan “versi ringan” atau dialog dengan pengaturan. App Store secara otomatis memilih varian yang paling sesuai berdasarkan metadata perangkat yang dikirim ke server saat permintaan unduhan. Jika perangkat menggunakan Wi-Fi, App Store dapat mengirim varian dengan sumber daya kualitas lebih tinggi (misalnya, video ProRes untuk iPhone 16 Pro). Saat mengunduh melalui jaringan seluler, set minimum yang mungkin digunakan.
Tingkat optimasi kedua — Bitcode. Dengan opsi ENABLE_BITCODE diaktifkan, Xcode mengkompilasi aplikasi bukan ke kode mesin, tetapi ke representasi perantara LLVM. App Store mengkompilasi ulang Bitcode untuk arsitektur prosesor spesifik pengguna, memungkinkan Apple menerapkan optimalisasi kompiler untuk generasi chip baru (A17, M4) tanpa memperbarui aplikasi oleh pengembang. Bitcode wajib untuk watchOS dan tvOS, tetapi opsional untuk iOS.
App Thinning terdiri dari tiga mekanisme independen, masing-masing bertanggung jawab atas aspek optimalisasinya sendiri. Slicing (pemotongan) membagi file biner menjadi varian berdasarkan arsitektur dan resolusi layar. Pengembang mengonfigurasi Slicing melalui Asset Catalogs — Xcode secara otomatis menyertakan dalam potongan hanya sumber daya yang sesuai dengan perangkat target. Misalnya, iPhone SE (generasi ketiga) hanya akan menerima gambar @2x dan kode arm64, sedangkan iPad Pro M4 — gambar @3x dan kode arm64e.
Bitcode adalah LLVM IR (Intermediate Representation) — representasi program yang independen dari mesin. Saat Bitcode diaktifkan, Xcode tidak menghasilkan kode mesin akhir, tetapi menyimpan representasi perantara. App Store Connect saat mengunggah build menerima Bitcode dan mengkompilasi ulang untuk arsitektur semua perangkat yang didukung. Bitcode memungkinkan Apple menerapkan optimalisasi yang tidak tersedia pada tahap kompilasi oleh pengembang — misalnya, penggunaan instruksi prosesor baru (SME, SVE) pada chip M4.
On-Demand Resources (ODR) — mekanisme ketiga, yang memungkinkan pembongkaran sumber daya aplikasi setelah digunakan. Pengembang menandai sumber daya (level game, gambar onboarding, video) dengan tag ODR. iOS memuat sumber daya yang ditandai sesuai permintaan di latar belakang dan membongkarnya saat kekurangan memori atau setelah digunakan. ODR sangat efektif untuk game dengan banyak konten — level pertama dapat dikirim dalam aplikasi, dan sisanya dimuat saat pemain maju.
Pemilihan mekanisme App Thinning tergantung pada jenis aplikasi dan audiens targetnya. Slicing disarankan untuk selalu diaktifkan — tidak memerlukan tindakan tambahan dari pengembang selain organisasi Asset Catalogs yang benar dan memberikan pengurangan ukuran stabil 20-30%. Bitcode layak diaktifkan jika aplikasi menggunakan shader Metal kustom atau berencana mendukung arsitektur Apple baru tanpa pembangunan ulang. ODR dibenarkan untuk aplikasi dengan volume konten besar — game, editor foto, aplikasi streaming.
Untuk aplikasi bisnis tipikal (feed data, formulir, REST API), Slicing dan konfigurasi ODR minimal untuk gambar onboarding sudah cukup. Game dengan grafis 3D mendapat manfaat dari ketiga mekanisme: Slicing menghapus shader yang tidak perlu, Bitcode mengoptimalkan rendering untuk GPU, dan ODR membongkar level yang selesai. Menurut Apple (WWDC 2024), kombinasi ketiga mekanisme mengurangi ukuran instalasi awal rata-rata 45-55% dibandingkan dengan biner universal.
| Mekanisme | Apa yang Dilakukan | Di Mana Bekerja | Memerlukan Tindakan Pengembang |
|---|---|---|---|
| Slicing | Menghapus sumber daya untuk perangkat lain | App Store + perangkat | Asset Catalogs |
| Bitcode | Kompilasi ulang untuk arsitektur | App Store | ENABLE_BITCODE=YES |
| ODR | Memuat sumber daya sesuai permintaan | Perangkat | Tag ODR di proyek |
Untuk mengaktifkan App Thinning di proyek Xcode, perlu dilakukan beberapa langkah. Slicing dikonfigurasi melalui App Thinning di pengaturan build: Build Settings → App Thinning. Tersedia tiga nilai: None (tanpa optimalisasi), Automatic (konfigurasi otomatis default), dan Manual dengan pemilihan varian spesifik untuk pengujian. Apple merekomendasikan Automatic untuk sebagian besar proyek.
Untuk Asset Catalogs, pengorganisasian sumber daya yang benar penting: gambar ditempatkan di katalog universal dengan menentukan lebar/tinggi, dan Xcode secara otomatis membuat varian @1x, @2x, dan @3x. Xcode saat membangun hanya menyertakan resolusi yang digunakan dalam proyek. Shader Metal dikompilasi secara terpisah untuk setiap keluarga GPU — Apple GPU, PowerVR, Mali, yang juga dikelola melalui Asset Catalogs.
Bitcode diaktifkan dengan flag ENABLE_BITCODE = YES di Build Settings. Untuk iOS, flag ini opsional (dinonaktifkan secara default sejak Xcode 14), tetapi untuk watchOS dan tvOS wajib. Saat mengaktifkan Bitcode di proyek yang menggunakan pustaka pihak ketiga, semuanya juga harus dibangun dengan Bitcode, jika tidak, pembangunan akan gagal dengan kesalahan. Bitcode meningkatkan waktu kompilasi sebesar 20-30%, tetapi memberikan kompatibilitas penuh dengan arsitektur masa depan.
Setelah mengunggah ke App Store Connect, Anda dapat memeriksa ukuran potongan di bagian Activity → Build Metric. App Store Connect menampilkan Estimated App Store Size untuk berbagai perangkat. Untuk pemeriksaan lokal, Xcode menyediakan perintah xcodebuild dengan flag -exportArchive dan opsi thinning untuk membuat potongan di mesin lokal. Hasil Slicing dapat dilihat di Organizer (Window → Organizer) setelah pengarsipan — tab App Thinning Profiles menunjukkan ukuran untuk berbagai perangkat.
# Pemeriksaan lokal Slicing
xcodebuild -exportArchive \
-archivePath "App.xcarchive" \
-exportPath "export/" \
-exportOptionsPlist "export.plist" \
-thinning "<thin-for-all-variants>"
Xcodebuild dengan flag -thinning membuat file .app untuk setiap kombinasi arsitektur, bit, dan GPU. Parameter <thin-for-all-variants> membuat semua varian yang mungkin — berguna untuk pemeriksaan. Untuk pipeline CI, kombinasi spesifik digunakan, misalnya iPhone14,4 (iPhone SE 3). File .app yang dihasilkan dapat dianalisis dengan utilitas app-size.
Keuntungan utama App Thinning adalah pengurangan ukuran unduhan untuk pengguna akhir. Menurut Apple (WWDC 2024), aplikasi tipikal yang menggunakan ketiga mekanisme App Thinning diunduh rata-rata 40% lebih cepat melalui jaringan seluler dan memakan 35% lebih sedikit ruang disk. Ini secara langsung mempengaruhi konversi instalasi: menurut Sensor Tower, setiap 10 MB ukuran aplikasi mengurangi konversi sebesar 1%.
Keuntungan kedua — optimalisasi untuk perangkat masa depan berkat Bitcode. Apple dapat mengkompilasi ulang aplikasi Bitcode untuk arsitektur baru tanpa partisipasi pengembang. Misalnya, dalam transisi dari Intel ke Apple Silicon (M1), aplikasi Bitcode berfungsi di macOS melalui Rosetta 2 tanpa kompilasi tambahan. Pengembang yang tidak mengaktifkan Bitcode terpaksa membangun ulang aplikasi untuk arm64.
Keuntungan ketiga — ODR (On-Demand Resources) mengurangi beban pada penyimpanan perangkat. Game dengan puluhan level, seperti Asphalt 8: Airborne, menggunakan ODR untuk memuat trek baru saat pemain maju. Pengembang dapat mengatur Initial Install Tags untuk sumber daya yang dimuat bersama aplikasi dan Prefetch Tags untuk konten yang dimuat di latar belakang setelah instalasi. Apple mengontrol batas ODR: hingga 512 MB per permintaan dan hingga 20 GB total cache di perangkat.
App Thinning memiliki beberapa keterbatasan penting yang harus dipertimbangkan saat merancang aplikasi. Pertama, Slicing tidak diterapkan pada aplikasi yang didistribusikan melalui Enterprise (in-house) atau Ad Hoc — build ini berisi semua varian dan tidak melalui App Store. Untuk pengujian Slicing, pengembang dapat menggunakan TestFlight, yang juga memproses Slicing di sisi server Apple.
Kedua, Bitcode meningkatkan waktu pembangunan dan ukuran arsip .xcarchive sekitar 30-50%. Tidak semua pustaka pihak ketiga mendukung Bitcode — jika setidaknya satu dependensi dibangun tanpa Bitcode, pembangunan proyek dengan ENABLE_BITCODE akan gagal. Apple merekomendasikan memeriksa kompatibilitas pustaka sebelum mengaktifkan Bitcode. Selain itu, Bitcode tidak mendukung Swift Package Manager sepenuhnya — beberapa paket Swift dapat merusak pembangunan Bitcode.
Ketiga, On-Demand Resources tidak menjamin ketersediaan konten segera — pemuatan ODR terjadi di latar belakang dan dapat ditunda jika perangkat dalam mode baterai rendah atau sinyal jaringan lemah. Pengembang harus mengimplementasikan penanganan status pemuatan ODR melalui NSBundleResourceRequest dan menampilkan indikator kemajuan kepada pengguna. Kegagalan pemuatan ODR tidak boleh memblokir fungsionalitas aplikasi — graceful fallback diperlukan.
Pertanyaan yang Sering Diajukan
Tidak, App Thinning tidak wajib. Aplikasi tanpa App Thinning akan dimuat ke App Store sebagai satu biner universal yang berisi semua varian sumber daya. Namun, Apple sangat merekomendasikan mengaktifkan App Thinning karena meningkatkan pengalaman pengguna dan mengurangi beban pada server App Store.
Xcode Organizer menampilkan Estimated App Store Size untuk berbagai perangkat setelah pengarsipan. App Store Connect di bagian Activity menampilkan ukuran potongan yang tepat setelah mengunggah build. Untuk pemeriksaan lokal, gunakan xcodebuild dengan flag -thinning.
Ya, App Thinning sepenuhnya kompatibel dengan SwiftUI. Slicing bekerja dengan Asset Catalogs yang digunakan SwiftUI melalui Image dan Color. Bitcode mendukung proyek SwiftUI dengan syarat semua dependensi juga dibangun dengan Bitcode. ODR dikelola melalui NSBundleResourceRequest terlepas dari framework.
Slicing tidak mempengaruhi waktu startup — sumber daya yang dihapus tidak dimuat. Bitcode dapat sedikit meningkatkan waktu startup pada peluncuran pertama karena kompilasi JIT. ODR dapat meningkatkan waktu startup jika sumber daya dengan tag Initial Install Tags belum dimuat. Apple merekomendasikan hanya menandai sumber daya yang sangat penting sebagai Initial Install.
Jika proyek memerlukan Bitcode tetapi pustaka tidak mendukungnya — ada dua jalan: keluarkan pustaka dari proyek dan temukan alternatif yang kompatibel dengan Bitcode, atau nonaktifkan Bitcode untuk target tertentu melalui ENABLE_BITCODE di Build Settings. Apple mengizinkan penonaktifan Bitcode untuk iOS, tetapi watchOS dan tvOS memerlukan dukungan wajib.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga