# Missing Compliance TestFlight: cara mengatasinya permanen

> Missing Compliance berarti Apple menunggu deklarasi enkripsimu. Buka blokir build ini di App Store Connect, lalu pasang kuncinya agar tidak muncul lagi.

Halaman asli: [Missing Compliance TestFlight: cara mengatasinya permanen](https://devoria.fr/id/blog/missing-compliance-testflight-cara-mengatasi)
Penulis: [Mehdi Azizi](https://devoria.fr/id/mehdi-azizi)
Terbit: 2026-11-06
Revisi konten terakhir: 2026-11-06


**Missing Compliance bukan error: ini build yang sedang menunggu jawabanmu soal enkripsi.** Selama kamu belum menjawab, build tetap terblokir untuk para tester. Untuk build ini, kamu menjawab pertanyaannya di tab TestFlight App Store Connect. Untuk build berikutnya, kamu pasang kunci ITSAppUsesNonExemptEncryption di Info.plist, atau `ios.config.usesNonExemptEncryption` di app.json kalau pakai Expo, dan status itu tidak akan muncul lagi.

Aplikasi iOS saya dibuat dengan Expo. Di app.json Solys, kunci ini bernilai `false`, dipasang dua kali: di `ios.config` dan di `ios.infoPlist`. Panduan ini mengikuti halaman Apple tentang [status build](https://developer.apple.com/help/app-store-connect/reference/app-uploads/app-build-statuses/) dan tentang [kepatuhan ekspor untuk build beta](https://developer.apple.com/help/app-store-connect/test-a-beta-version/provide-export-compliance-information-for-beta-builds/), yang saya baca ulang pada 6 November 2026.

## Arti Missing Compliance

Daftar status build Apple mendefinisikannya dalam satu kalimat: dokumentasi kepatuhan ekspor belum ada, dan kamu perlu melakukan sesuatu. Apple menampilkannya dengan warna kuning, warna untuk proses yang sedang berjalan dan bergantung padamu atau pada Apple, dan deskripsinya menegaskan bahwa kamu perlu mengambil tindakan.

Kenapa Apple menanyakan ini? [Halaman tentang aturan ekspor enkripsi](https://developer.apple.com/documentation/security/complying-with-encryption-export-regulations) menjelaskannya: saat kamu mengirim build ke TestFlight atau App Store, kamu mengirimnya ke server di Amerika Serikat. Kalau aplikasimu didistribusikan di luar Amerika Serikat dan Kanada, aplikasimu tunduk pada hukum ekspor Amerika, apa pun negara asal perusahaanmu. Dan begitu sebuah aplikasi memakai, berisi, atau menyertakan enkripsi, Apple menganggapnya sebagai ekspor perangkat lunak enkripsi.

**Akibatnya: di setiap versi baru, App Store Connect akan menanyakan soal kepatuhan, kecuali Info.plist kamu sudah menjawabnya.** Itulah kenapa build Expo pertama hampir selalu masuk status Missing Compliance.

## Membuka blokir build yang sedang menunggu

Langkah-langkah ini berasal dari halaman Apple tentang kepatuhan ekspor untuk build beta. Kamu butuh peran Account Holder, Admin, atau App Manager.

1. Di Apps, buka aplikasimu, lalu tab TestFlight.
2. Di sidebar, di bawah Builds, pilih platformnya.
3. Di kolom Build, klik ikon atau nomor build yang bersangkutan.
4. Klik Provide Export Compliance Information, lalu jawab pertanyaannya.
5. Kalau Apple meminta dokumentasi, klik Go to App Encryption Page untuk mengirimnya. Kalau tidak, klik Save.

Apple juga menjelaskan jalan pintasnya: di samping build, tautan Manage membuka pertanyaan yang sama, dan Choose File memungkinkan kamu melampirkan dokumentasi yang sudah disetujui. Setelah disimpan, build berubah menjadi Ready to Submit, atau langsung Testing kalau dikirim ke grup internal. Ready to Test baru muncul setelah beta review untuk tester eksternal.

**Tautan Manage tidak bisa diklik?** Pertama, cek peranmu di tim: Apple hanya mengizinkan peran Account Holder, Admin, dan App Manager untuk menjawab, akun Developer atau Marketing tidak bisa. Apple tidak mendokumentasikan penyebab lain. Kalau build baru saja dikirim, tunggu email selesai diproses, yang dijelaskan di panduan tentang [nomor build dan versi](https://devoria.fr/id/blog/build-number-app-store-connect-versi-nomor-build), lalu muat ulang halamannya.

## Tidak perlu menjawab lagi: pasang kuncinya di proyekmu

Apple menyebutkannya di halaman build beta: kamu bisa menyatakan di Info.plist bahwa aplikasimu tidak memakai enkripsi, atau dikecualikan, sehingga kamu tidak perlu menjawab lagi di setiap pengiriman. Kuncinya bernama [ITSAppUsesNonExemptEncryption](https://developer.apple.com/documentation/bundleresources/information-property-list/itsappusesnonexemptencryption). Xcode menampilkannya dengan nama App Uses Non-Exempt Encryption.

| Tool kamu          | File         | Lokasi                         | Nilai |
| ------------------ | ------------ | ------------------------------ | ----- |
| Expo (EAS Build)   | `app.json`   | `expo.ios.config`              | false |
| Expo, cara lain    | `app.json`   | `expo.ios.infoPlist`           | false |
| React Native murni | `Info.plist` | App Uses Non-Exempt Encryption | NO    |
| Xcode, Swift       | `Info.plist` | App Uses Non-Exempt Encryption | NO    |

Dengan Expo, kuncinya bernama `usesNonExemptEncryption`, dan [referensi konfigurasinya](https://docs.expo.dev/versions/latest/config/app/) menjelaskan bahwa kunci ini menulis kunci Apple ke Info.plist build, dan bahwa `ios.config` hanya dipakai saat build: tidak muncul di manifest produksi.

```json
{
  "expo": {
    "ios": {
      "config": {
        "usesNonExemptEncryption": false
      }
    }
  }
}
```

Dengan Expo, `ios.infoPlist` juga menerima kunci dengan nama Apple-nya, dengan nilai yang sama: itulah baris kedua di app.json Solys. Di proyek native, deklarasi yang sama cukup satu baris di Info.plist: kunci App Uses Non-Exempt Encryption, nama yang ditampilkan Xcode, dengan nilai NO. Nilainya boolean, bukan string.

**Kunci ini berlaku mulai build berikutnya.** Build yang sudah dikirim tetap berstatus Missing Compliance selama kamu belum menjawab di App Store Connect: kedua tindakan ini tidak saling menggantikan, tapi saling melengkapi.

## false atau true: cara memutuskannya

Apple mendefinisikan nilai NO seperti ini: aplikasimu, termasuk library pihak ketiga, tidak memakai enkripsi sama sekali, atau hanya memakai enkripsi yang dikecualikan dari kewajiban dokumentasi. Kalau tidak, nilainya YES.

Yang biasanya dikecualikan, menurut halaman aturan ekspor: enkripsi bawaan sistem, seperti koneksi HTTPS lewat URLSession. Yang tidak dikecualikan: enkripsi proprietary, yang kamu tulis sendiri atau sertakan di aplikasi. [Ringkasan kepatuhan ekspor](https://developer.apple.com/help/app-store-connect/manage-app-information/overview-of-export-compliance/) menambahkan pengingat penting: kamulah yang bertanggung jawab atas interpretasinya, dan atas konsekuensinya, kalau kamu mengklaim pengecualian secara keliru.

Untuk aplikasi Expo yang memanggil API lewat HTTPS, menyimpan preferensi, dan menjual langganan, `false` adalah jawaban yang umum. Untuk aplikasi yang mengenkripsi sendiri pesan, file, atau brankas, jawabannya `true`, dan Apple akan meminta dokumentasi.

> Jangan pasang `false` secara refleks. Periksa ulang dependensimu: library enkripsi end-to-end atau penyimpanan terenkripsi buatan sendiri membuatmu masuk ke kategori yang butuh dokumentasi.

## Kalau aplikasimu memakai enkripsi yang tidak dikecualikan

[Halaman tentang dokumentasi enkripsi](https://developer.apple.com/help/app-store-connect/manage-app-information/determine-and-upload-app-encryption-documentation/) menjelaskan alurnya. Di App Information, di samping App Encryption Documentation, tombol tambah membuka pertanyaannya, lalu Choose File untuk dokumennya, lalu Save. Apple meminta kamu mengisi deskripsi aplikasi dan mengatur ketersediaannya lebih dulu, agar bisa menilai apakah dokumentasinya cukup. Apple menargetkan sekitar dua hari kerja kalau berkasnya lengkap.

Setelah dokumentasi disetujui, Apple memberikan nilai yang perlu kamu pasang di kunci `ITSEncryptionExportComplianceCode` di Info.plist. Dengan itu, tidak ada lagi pertanyaan di setiap pengiriman. Selama pemeriksaan, build kamu menampilkan Waiting for Export Compliance Review atau In Compliance Review: kamu tidak perlu melakukan apa pun.

Dua hal yang disebutkan Apple, satu di halaman aturan ekspor, satu lagi di ringkasan kepatuhan:

- **Bahkan dengan enkripsi yang dikecualikan, laporan tahunan self-classification ke pemerintah Amerika bisa diwajibkan.** Laporan ini tidak wajib kalau kamu memakai enkripsi yang tidak dikecualikan dan sudah memberikan dokumentasinya ke Apple.
- **Prancis juga mengontrol impor dan ekspor aplikasi enkripsi.** Ringkasan Apple menyebut penyimpanan aman, komunikasi aman, dan antivirus sebagai bidang yang terdampak, dengan pengecualian untuk aplikasi perbankan dan medis, dan merujuk ke ANSSI.

## Apa yang terjadi selanjutnya di TestFlight

Build yang sudah terbuka blokirnya mengikuti siklus normal build TestFlight, yang dijelaskan di panduan [TestFlight untuk menguji aplikasi iPhone](https://devoria.fr/id/blog/testflight-cara-tes-aplikasi-iphone): tester internal langsung bisa, tester eksternal setelah beta review, dan kedaluwarsa setelah 90 hari, menurut daftar status build. Hambatan lain yang mungkin muncul saat mengirim dari Expo, seperti nomor build yang sudah dipakai atau file yang ditolak, ada di [error pengiriman EAS ke App Store Connect](https://devoria.fr/id/blog/error-eas-submit-ios-cara-memperbaiki), dan alur lengkapnya di [memublikasikan aplikasi Expo ke App Store dengan EAS](https://devoria.fr/id/blog/eas-submit-ios-publikasi-app-expo-app-store).

[iOS & Android Kit](https://devoria.fr/id/kits/ios) berisi kode awal Expo saya, dengan kunci ini sudah terpasang, beserta alur dari build pertama sampai halaman App Store. Kalau kamu ingin tahu apa yang masih menghambat publikasimu, [diagnosis gratis](https://devoria.fr/id/diagnostic) akan menjawabnya lewat beberapa pertanyaan dan mengirimkan checklist anti-penolakan Apple milik saya. Langkah lengkapnya ada di [memublikasikan aplikasi di App Store](https://devoria.fr/id/expertise/publikasi-aplikasi-di-app-store).

## Pertanyaan umum

### Apa arti Missing Compliance di TestFlight?

Build sedang menunggu deklarasi kepatuhan ekspor darimu, yaitu jawabanmu soal penggunaan enkripsi. Apple memasukkannya ke status yang membutuhkan tindakan darimu. Build tidak akan dikirim ke tester selama kamu belum menjawab.

### Kenapa tautan Manage di Missing Compliance tidak bisa diklik?

Cek peranmu: Apple hanya mengizinkan peran Account Holder, Admin, dan App Manager untuk menjawab. Apple tidak mendokumentasikan penyebab lain. Kalau build baru saja masuk, muat ulang halaman setelah email selesai diproses datang.

### Aplikasiku hanya memakai HTTPS, apakah aku harus menjawab ya soal enkripsi?

Apple menyatakan bahwa enkripsi bawaan sistem, seperti koneksi HTTPS lewat URLSession, biasanya dikecualikan dari kewajiban dokumentasi. Dalam kasus ini, kunci ITSAppUsesNonExemptEncryption bernilai NO, asalkan tidak ada library pihak ketiga yang menambahkan enkripsi proprietary.

### Apakah pertanyaan enkripsi harus dijawab di setiap build?

Ya, selama Info.plist kamu belum berisi kunci ITSAppUsesNonExemptEncryption. Dengan kunci itu, App Store Connect tidak lagi menanyakannya. Dengan Expo, kunci ini diatur di app.json lewat `ios.config.usesNonExemptEncryption`.

### Di mana mendeklarasikan enkripsi di app.json dengan Expo?

Di app.json, di bawah `expo.ios.config`, dengan `"usesNonExemptEncryption": false` kalau aplikasimu tidak memakai enkripsi yang tidak dikecualikan. EAS Build menulis kunci ini ke Info.plist build. Kunci ini berlaku mulai build berikutnya, bukan pada build yang sudah dikirim.

### Apakah Missing Compliance juga memblokir pengajuan ke App Store?

Pertanyaan kepatuhan ekspor muncul untuk setiap versi baru, baik beta maupun App Store. Build yang belum menjawabnya tidak bisa didistribusikan. Kunci di Info.plist menyelesaikan kedua kasus sekaligus.

### Apakah aku harus membuat laporan tahunan self-classification?

Apple menyebutkan bahwa penggunaan enkripsi yang dikecualikan tetap bisa mewajibkan laporan tahunan self-classification ke pemerintah Amerika, dan merujuk ke prosedur resminya. Kalau aplikasimu memakai enkripsi yang tidak dikecualikan dan kamu sudah memberikan dokumentasinya ke Apple, laporan ini tidak diperlukan.


## Proyekmu

[Review Kit](https://devoria.fr/id/kits/app-review): Checklist review App Store saya, penolakan Apple yang sudah saya perbaiki, checklist Google Play, dan tiga skill Claude Code. Rp 999.000.

[iOS & Android Kit](https://devoria.fr/id/kits/ios): Bikin app iPhone dan Android kamu dengan Claude Code: kode awal dari app-app saya, langkah demi langkah sampai ke store, dan semua kit. Rp 1.999.000.

[Diagnosis: apa yang memisahkanmu dari app iPhone-mu](https://devoria.fr/id/diagnostic): 7 pertanyaan, 60 detik: kamu tahu apa yang benar-benar menghambatmu merilis app iPhone, jalurmu dalam 4 tahap, dan kit yang cocok untukmu.
