# Missing Compliance na TestFlightu: kako to riješiti trajno

> Missing Compliance znači da Apple čeka tvoju izjavu o enkripciji. Odblokiraj build u App Store Connectu, a onda postavi ključ da se više ne vraća.

Izvorna stranica: [Missing Compliance na TestFlightu: kako to riješiti trajno](https://devoria.fr/hr/blog/missing-compliance-testflight-rijesiti)
Autor: [Mehdi Azizi](https://devoria.fr/hr/mehdi-azizi)
Objavljeno: 2026-11-06
Zadnja revizija sadržaja: 2026-11-06


**Missing Compliance nije greška: to je build koji čeka tvoj odgovor o enkripciji.** Dok ne odgovoriš, build ostaje blokiran za tvoje testere. Za taj build odgovaraš na pitanja na kartici TestFlight u App Store Connectu. Za sljedeće postaviš ključ ITSAppUsesNonExemptEncryption u svoj Info.plist, ili `ios.config.usesNonExemptEncryption` u app.json ako koristiš Expo, i status se više ne vraća.

Svoje iOS aplikacije radim s Expom. U app.json Solysa ključ ima vrijednost `false` i postavljen je dvaput: u `ios.config` i u `ios.infoPlist`. Ovaj vodič prati Appleove stranice o [statusima builda](https://developer.apple.com/help/app-store-connect/reference/app-uploads/app-build-statuses/) i o [izvoznoj usklađenosti beta buildova](https://developer.apple.com/help/app-store-connect/test-a-beta-version/provide-export-compliance-information-for-beta-builds/), ponovno pročitane 6. studenoga 2026.

## Što znači Missing Compliance

Appleov popis statusa builda to definira u jednoj rečenici: nedostaje dokumentacija o izvoznoj usklađenosti i od tebe se očekuje radnja. Apple ga prikazuje žutom bojom, bojom procesa u tijeku koji ovisi o tebi ili o Appleu, a opis navodi da se od tebe očekuje radnja.

Zašto Apple to pita? [Stranica o pravilima izvoza enkripcije](https://developer.apple.com/documentation/security/complying-with-encryption-export-regulations) to objašnjava: kad šalješ build na TestFlight ili App Store, šalješ ga na poslužitelj u Sjedinjenim Državama. Ako se tvoja aplikacija distribuira izvan SAD-a i Kanade, podliježe američkom izvoznom pravu, bez obzira na to u kojoj je zemlji tvoja tvrtka. A čim aplikacija koristi, sadrži ili ugrađuje enkripciju, Apple to smatra izvozom softvera za enkripciju.

**Rezultat: pri svakoj novoj verziji App Store Connect ti postavlja pitanja o usklađenosti, osim ako tvoj Info.plist već na njih odgovara.** Zato prvi Expo build gotovo uvijek stigne sa statusom Missing Compliance.

## Odblokiraj build koji čeka

Koraci dolaze s Appleove stranice o izvoznoj usklađenosti beta buildova. Trebaš ulogu Account Holder, Admin ili App Manager.

1. U Apps otvori svoju aplikaciju, zatim karticu TestFlight.
2. U bočnoj traci, pod Builds, odaberi platformu.
3. U stupcu Build klikni na ikonu ili broj odgovarajućeg builda.
4. Klikni na Provide Export Compliance Information, zatim odgovori na pitanja.
5. Ako Apple traži dokumentaciju, klikni na Go to App Encryption Page da je pošalješ. Inače klikni na Save.

Apple opisuje i prečac: pokraj builda poveznica Manage otvara ista pitanja, a Choose File omogućuje da priložiš već odobrenu dokumentaciju. Kad spremiš, build prelazi u Ready to Submit, ili izravno u Testing ako ide internoj grupi. Ready to Test dolazi tek nakon beta pregleda za vanjske testere.

**Poveznica Manage nije klikabilna?** Prvo provjeri svoju ulogu u timu: Apple odgovor ostavlja ulogama Account Holder, Admin i App Manager, račun s ulogom Developer ili Marketing ne može odgovoriti. Apple ne dokumentira drugi uzrok. Ako je build upravo poslan, pričekaj e-mail o završetku obrade, opisan u vodiču o [broju builda i verziji](https://devoria.fr/hr/blog/app-store-connect-build-number-verzija), pa ponovno učitaj stranicu.

## Da više nikad ne odgovaraš: ključ u projektu

Apple to kaže na stranici o beta buildovima: u Info.plist možeš navesti da tvoja aplikacija ne koristi enkripciju, ili da je izuzeta, i više ne moraš odgovarati pri svakom slanju. Ključ se zove [ITSAppUsesNonExemptEncryption](https://developer.apple.com/documentation/bundleresources/information-property-list/itsappusesnonexemptencryption). Xcode ga prikazuje pod imenom App Uses Non-Exempt Encryption.

| Tvoj alat          | Datoteka     | Gdje                           | Vrijednost |
| ------------------ | ------------ | ------------------------------ | ---------- |
| Expo (EAS Build)   | `app.json`   | `expo.ios.config`              | false      |
| Expo, drugi način  | `app.json`   | `expo.ios.infoPlist`           | false      |
| Čisti React Native | `Info.plist` | App Uses Non-Exempt Encryption | NO         |
| Xcode, Swift       | `Info.plist` | App Uses Non-Exempt Encryption | NO         |

U Expu se ključ zove `usesNonExemptEncryption`, a [referenca konfiguracije](https://docs.expo.dev/versions/latest/config/app/) navodi da on upisuje Appleov ključ u Info.plist builda te da `ios.config` služi samo za build: ne pojavljuje se u produkcijskom manifestu.

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

U Expu `ios.infoPlist` prihvaća i ključ pod Appleovim imenom, s istom vrijednošću: to je drugi redak u app.json Solysa. U nativnom projektu ista izjava stane u jedan redak Info.plista: ključ App Uses Non-Exempt Encryption, kako ga Xcode prikazuje, s vrijednošću NO. Vrijednost je boolean, a ne string.

**Ključ djeluje od sljedećeg builda.** Već poslani build ostaje u statusu Missing Compliance dok ne odgovoriš u App Store Connectu: te dvije radnje ne zamjenjuju jedna drugu, nego se nadopunjuju.

## false ili true: kako odlučiti

Apple vrijednost NO definira ovako: tvoja aplikacija, uključujući biblioteke trećih strana, ne koristi nikakvu enkripciju ili koristi samo enkripciju izuzetu od obveze dokumentacije. Inače je YES.

Što je obično izuzeto, prema stranici o pravilima izvoza: enkripcija ugrađena u sustav, poput HTTPS veza preko URLSessiona. Što nije: vlastita enkripcija, koju si napisao ili ugradio. [Pregled izvozne usklađenosti](https://developer.apple.com/help/app-store-connect/manage-app-information/overview-of-export-compliance/) dodaje važan podsjetnik: ti si odgovoran za tumačenje, i za njegove posljedice, ako neopravdano tvrdiš da si izuzet.

Za Expo aplikaciju koja poziva API preko HTTPS-a, sprema postavke i prodaje pretplatu, `false` je uobičajen odgovor. Za aplikaciju koja sama šifrira poruke, datoteke ili trezor, odgovor je `true`, i Apple očekuje dokumentaciju.

> Ne stavljaj `false` po refleksu. Pregledaj svoje ovisnosti: biblioteka za end-to-end enkripciju ili vlastito šifrirano spremište prebacuje te na stranu dokumentacije.

## Ako tvoja aplikacija koristi enkripciju koja nije izuzeta

[Stranica o dokumentaciji enkripcije](https://developer.apple.com/help/app-store-connect/manage-app-information/determine-and-upload-app-encryption-documentation/) opisuje postupak. U App Information, pokraj App Encryption Documentation, gumb za dodavanje otvara pitanja, zatim Choose File za dokument, pa Save. Apple traži da prije toga ispuniš opis aplikacije i postaviš njezinu dostupnost, kako bi procijenio je li dokumentacija dovoljna. Cilja na otprilike dva radna dana kad je dokumentacija potpuna.

Kad se dokumentacija odobri, Apple ti daje vrijednost koju upisuješ u ključ `ITSEncryptionExportComplianceCode` u Info.plistu. S njom nema više pitanja pri svakom slanju. Tijekom pregleda build prikazuje Waiting for Export Compliance Review ili In Compliance Review: od tebe se ne očekuje nikakva radnja.

Dvije stvari koje Apple ističe, jednu na stranici o pravilima izvoza, drugu u pregledu usklađenosti:

- **I s izuzetom enkripcijom može se tražiti godišnje izvješće o samoklasifikaciji američkoj vladi.** Ne traži se ako koristiš enkripciju koja nije izuzeta i dostavio si dokumentaciju Appleu.
- **Francuska također kontrolira uvoz i izvoz aplikacija s enkripcijom.** Appleov pregled navodi sigurnu pohranu, sigurne komunikacije i antiviruse kao obuhvaćena područja, uz izuzeća za bankovne i medicinske aplikacije, i upućuje na ANSSI.

## Što se dalje događa na TestFlightu

Odblokirani build prolazi uobičajen život TestFlight builda, opisan u vodiču [TestFlight za testiranje iPhone aplikacije](https://devoria.fr/hr/blog/testflight-testiranje-iphone-aplikacije): interni testeri odmah, vanjski testeri nakon beta pregleda, i istek nakon 90 dana, prema popisu statusa builda. Ostala moguća zaustavljanja Expo slanja, poput već iskorištenog broja builda ili odbijene datoteke, nalaze se u [greškama pri EAS slanju u App Store Connect](https://devoria.fr/hr/blog/eas-submit-ios-greske-rjesenja), a cijeli lanac u [objavi Expo aplikacije na App Storeu s EAS-om](https://devoria.fr/hr/blog/eas-submit-ios-objava-expo-aplikacije-app-store).

[iOS & Android Kit](https://devoria.fr/hr/kits/ios) sadrži moj početni Expo kod, s već postavljenim ovim ključem, i put od prvog builda do stranice na App Storeu. Ako želiš znati što ti još blokira objavu, [besplatna dijagnostika](https://devoria.fr/hr/diagnostic) odgovara ti u nekoliko pitanja i šalje ti moju checklistu protiv Appleovih odbijanja. Svi koraci su u [objavi aplikacije na App Storeu](https://devoria.fr/hr/expertise/objava-aplikacije-na-app-store).

## Česta pitanja

### Što znači Missing Compliance na TestFlightu?

Build čeka tvoju izjavu o izvoznoj usklađenosti, odnosno tvoj odgovor o korištenju enkripcije. Apple ga svrstava među statuse koji traže radnju s tvoje strane. Build ne ide testerima dok ne odgovoriš.

### Zašto poveznica Manage kod Missing Compliance nije klikabilna?

Provjeri svoju ulogu: Apple odgovor ostavlja ulogama Account Holder, Admin i App Manager. Apple ne dokumentira drugi uzrok. Ako je build upravo stigao, ponovno učitaj stranicu nakon e-maila o završetku obrade.

### Moja aplikacija koristi samo HTTPS, moram li odgovoriti da koristim enkripciju?

Apple navodi da je enkripcija ugrađena u sustav, poput HTTPS veza preko URLSessiona, obično izuzeta od obveze dokumentacije. U tom slučaju ključ ITSAppUsesNonExemptEncryption ima vrijednost NO, pod uvjetom da nijedna biblioteka treće strane ne dodaje vlastitu enkripciju.

### Moram li odgovarati na pitanja o enkripciji za svaki build?

Da, dok tvoj Info.plist ne sadrži ključ ITSAppUsesNonExemptEncryption. S njim App Store Connect više ne postavlja pitanja. U Expu se postavlja u app.json preko `ios.config.usesNonExemptEncryption`.

### Gdje deklarirati enkripciju u app.json s Expom?

U app.json, pod `expo.ios.config`, s `"usesNonExemptEncryption": false` ako tvoja aplikacija ne koristi nikakvu enkripciju koja nije izuzeta. EAS Build upisuje ključ u Info.plist builda. Djeluje od sljedećeg builda, ne na već poslanom.

### Blokira li Missing Compliance i slanje na App Store?

Pitanja o izvoznoj usklađenosti postavljaju se za svaku novu verziju, beta ili App Store. Build koji nije odgovorio ne može se distribuirati. Ključ u Info.plistu rješava oba slučaja odjednom.

### Moram li podnijeti godišnje izvješće o samoklasifikaciji?

Apple upozorava da korištenje izuzete enkripcije ipak može zahtijevati godišnje izvješće o samoklasifikaciji američkoj vladi i upućuje na službeni postupak. Ako tvoja aplikacija koristi enkripciju koja nije izuzeta i dostavio si dokumentaciju Appleu, to izvješće nije potrebno.


## Tvoj projekt

[Review Kit](https://devoria.fr/hr/kits/app-review): Moja checklista za App Store pregled, moja Appleova odbijanja i kako sam ih ispravio, checklista za Google Play i tri Claude Code skilla. 49 €.

[iOS & Android Kit](https://devoria.fr/hr/kits/ios): Napravi svoju iPhone i Android aplikaciju s Claude Codeom: početni kod mojih aplikacija, put do trgovina i svi kitovi. 99 €.

[Dijagnoza: što te dijeli od tvoje iPhone aplikacije](https://devoria.fr/hr/diagnostic): 7 pitanja, 60 sekundi: saznaj što te stvarno koči da objaviš svoju iPhone aplikaciju, dobij svoj put u 4 koraka i kit koji ti odgovara.
