# Missing Compliance en TestFlight: cómo solucionarlo

> Missing Compliance significa que Apple espera tu declaración de cifrado. Desbloquea el build en App Store Connect y configura la clave para no volver a verlo.

Página original: [Missing Compliance en TestFlight: cómo solucionarlo](https://devoria.fr/es/blog/missing-compliance-testflight-solucion)
Autor: [Mehdi Azizi](https://devoria.fr/es/mehdi-azizi)
Publicación: 2026-11-06
Última revisión del contenido: 2026-11-06


**Missing Compliance no es un error: es un build que espera tu respuesta sobre el cifrado.** Mientras no respondas, el build queda bloqueado para tus testers. Para ese build, respondes las preguntas en la pestaña TestFlight de App Store Connect. Para los siguientes, agregas la clave ITSAppUsesNonExemptEncryption en tu Info.plist, o `ios.config.usesNonExemptEncryption` en tu app.json con Expo, y el estado ya no vuelve a aparecer.

Mis apps iOS están hechas con Expo. En el app.json de Solys, la clave vale `false` y está puesta dos veces: en `ios.config` y en `ios.infoPlist`. Esta guía sigue las páginas de Apple sobre los [estados de build](https://developer.apple.com/help/app-store-connect/reference/app-uploads/app-build-statuses/) y sobre el [cumplimiento de exportación de los builds beta](https://developer.apple.com/help/app-store-connect/test-a-beta-version/provide-export-compliance-information-for-beta-builds/), revisadas el 6 de noviembre de 2026.

## Qué significa Missing Compliance

La lista de estados de build de Apple lo define en una frase: falta la documentación de cumplimiento de exportación y se espera una acción de tu parte. Apple lo muestra en amarillo, el color de un proceso en curso que depende de ti o de Apple, y su descripción precisa que se espera una acción de tu parte.

¿Por qué Apple hace la pregunta? La [página sobre las reglas de exportación del cifrado](https://developer.apple.com/documentation/security/complying-with-encryption-export-regulations) lo explica: cuando envías un build a TestFlight o al App Store, lo envías a un servidor en Estados Unidos. Si tu app se distribuye fuera de Estados Unidos y Canadá, queda sujeta a la ley estadounidense de exportación, sin importar el país de tu empresa. Y en cuanto una app usa, contiene o integra cifrado, Apple considera que se trata de una exportación de software de cifrado.

**Resultado: con cada nueva versión, App Store Connect te hace las preguntas de cumplimiento, salvo que tu Info.plist ya las responda.** Por eso un primer build de Expo casi siempre llega en Missing Compliance.

## Desbloquear el build que está esperando

Los pasos vienen de la página de Apple sobre el cumplimiento de exportación de los builds beta. Necesitas el rol Account Holder, Admin o App Manager.

1. En Apps, abre tu app y luego la pestaña TestFlight.
2. En la barra lateral, en Builds, elige la plataforma.
3. En la columna Build, haz clic en el ícono o el número del build en cuestión.
4. Haz clic en Provide Export Compliance Information y responde las preguntas.
5. Si Apple te pide documentación, haz clic en Go to App Encryption Page para enviarla. Si no, haz clic en Save.

Apple también describe el atajo: junto al build, el enlace Manage abre las mismas preguntas, y Choose File permite adjuntar una documentación ya aprobada. Una vez guardado, el build pasa a Ready to Submit, o directamente a Testing si va a un grupo interno. Ready to Test solo llega después de la revisión beta de los testers externos.

**¿El enlace Manage no se puede hacer clic?** Revisa primero tu rol en el equipo: Apple reserva la respuesta a los roles Account Holder, Admin y App Manager; una cuenta Developer o Marketing no puede responder. Apple no documenta otra causa. Si acabas de enviar el build, espera el correo de fin de procesamiento, explicado en la guía sobre el [número de build y la versión](https://devoria.fr/es/blog/app-store-connect-build-number-version), y luego recarga la página.

## No volver a responder nunca: la clave en tu proyecto

Apple lo dice en la página de los builds beta: puedes indicar en el Info.plist que tu app no usa cifrado, o que está exenta, y ya no tienes que responder en cada envío. La clave se llama [ITSAppUsesNonExemptEncryption](https://developer.apple.com/documentation/bundleresources/information-property-list/itsappusesnonexemptencryption). Xcode la muestra con el nombre App Uses Non-Exempt Encryption.

| Tu herramienta    | Archivo      | Dónde                          | Valor |
| ----------------- | ------------ | ------------------------------ | ----- |
| Expo (EAS Build)  | `app.json`   | `expo.ios.config`              | false |
| Expo, otra vía    | `app.json`   | `expo.ios.infoPlist`           | false |
| React Native puro | `Info.plist` | App Uses Non-Exempt Encryption | NO    |
| Xcode, Swift      | `Info.plist` | App Uses Non-Exempt Encryption | NO    |

Con Expo, la clave se llama `usesNonExemptEncryption`, y la [referencia de configuración](https://docs.expo.dev/versions/latest/config/app/) precisa que escribe la clave de Apple en el Info.plist del build, y que `ios.config` sirve solo para el build: no aparece en el manifiesto de producción.

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

Con Expo, `ios.infoPlist` también acepta la clave con su nombre de Apple y el mismo valor: es la segunda línea del app.json de Solys. En un proyecto nativo, la misma declaración cabe en una línea del Info.plist: la clave App Uses Non-Exempt Encryption, que es el nombre que muestra Xcode, con el valor NO. El valor es un booleano, no una cadena.

**La clave surte efecto en el siguiente build.** El build ya enviado sigue en Missing Compliance mientras no respondas en App Store Connect: las dos acciones no se reemplazan, se complementan.

## false o true: cómo decidir

Apple define el valor NO así: tu app, incluidas las bibliotecas de terceros, no usa ningún cifrado, o solo un cifrado exento de las obligaciones de documentación. Si no, es YES.

Lo que en general está exento, según la página sobre las reglas de exportación: el cifrado integrado en el sistema, como las conexiones HTTPS con URLSession. Lo que no lo está: un cifrado propietario, que hayas escrito o incluido tú. La [visión general del cumplimiento de exportación](https://developer.apple.com/help/app-store-connect/manage-app-information/overview-of-export-compliance/) agrega un recordatorio importante: tú eres responsable de la interpretación, y de sus consecuencias, si reclamas una exención por error.

Para una app de Expo que llama a una API por HTTPS, guarda preferencias y vende una suscripción, `false` es la respuesta habitual. Para una app que cifra por sí misma mensajes, archivos o una bóveda, la respuesta es `true`, y Apple espera documentación.

> No pongas `false` por reflejo. Revisa tus dependencias: una biblioteca de cifrado de extremo a extremo o un almacenamiento cifrado hecho en casa te pasa al lado de la documentación.

## Si tu app usa un cifrado no exento

La [página sobre la documentación de cifrado](https://developer.apple.com/help/app-store-connect/manage-app-information/determine-and-upload-app-encryption-documentation/) describe el proceso. En App Information, junto a App Encryption Documentation, el botón de agregar abre las preguntas, luego Choose File para el documento y después Save. Apple pide haber completado antes la descripción de la app y configurado su disponibilidad, para evaluar si la documentación es suficiente. Apunta a unos dos días hábiles cuando el expediente está completo.

Una vez aprobada la documentación, Apple te da un valor para poner en la clave `ITSEncryptionExportComplianceCode` de tu Info.plist. Con ella, se acaban las preguntas en cada envío. Durante la revisión, tu build muestra Waiting for Export Compliance Review o In Compliance Review: no se espera ninguna acción de tu parte.

Dos puntos que señala Apple, uno en la página de las reglas de exportación y el otro en la visión general del cumplimiento:

- **Incluso con un cifrado exento, se puede exigir un informe anual de autoclasificación ante el gobierno de Estados Unidos.** No se exige si usas un cifrado no exento y entregaste la documentación a Apple.
- **Francia también controla la importación y exportación de apps de cifrado.** La visión general de Apple cita el almacenamiento seguro, las comunicaciones seguras y los antivirus como áreas afectadas, con exenciones para las apps bancarias y médicas, y remite a la ANSSI.

## Qué pasa después en TestFlight

El build desbloqueado sigue la vida normal de un build de TestFlight, descrita en la guía [TestFlight para probar tu app de iPhone](https://devoria.fr/es/blog/testflight-probar-app-iphone-antes-de-enviarla): testers internos de inmediato, testers externos después de la revisión beta, y vencimiento a los 90 días, según la lista de estados de build. Los otros bloqueos posibles de un envío con Expo, como un número de build ya usado o un archivo rechazado, están en [los errores de envío de EAS a App Store Connect](https://devoria.fr/es/blog/errores-eas-submit-ios-solucion), y el proceso completo en [publicar una app de Expo en el App Store con EAS](https://devoria.fr/es/blog/eas-submit-ios-publicar-app-expo-app-store).

El [iOS & Android Kit](https://devoria.fr/es/kits/ios) contiene mi código base de Expo, con esta clave ya configurada, y el recorrido que va del primer build a la ficha del App Store. Si quieres saber qué sigue bloqueando tu publicación, el [diagnóstico gratuito](https://devoria.fr/es/diagnostic) te responde en unas pocas preguntas y te envía mi checklist contra los rechazos de Apple. Los pasos completos están en [publicar una aplicación en el App Store](https://devoria.fr/es/expertise/publicar-una-app-en-app-store).

## Preguntas frecuentes

### ¿Qué significa Missing Compliance en TestFlight?

El build espera tu declaración de cumplimiento de exportación, es decir, tu respuesta sobre el uso de cifrado. Apple lo clasifica entre los estados que requieren una acción de tu parte. El build no llega a los testers mientras no respondas.

### ¿Por qué no puedo hacer clic en el enlace Manage de Missing Compliance?

Revisa tu rol: Apple reserva la respuesta a los roles Account Holder, Admin y App Manager. Apple no documenta otra causa. Si el build acaba de llegar, recarga la página después del correo de fin de procesamiento.

### Mi app solo usa HTTPS, ¿debo responder que sí al cifrado?

Apple indica que el cifrado integrado en el sistema, como las conexiones HTTPS con URLSession, en general está exento de las obligaciones de documentación. En ese caso, la clave ITSAppUsesNonExemptEncryption vale NO, siempre que ninguna biblioteca de terceros agregue un cifrado propietario.

### ¿Hay que responder las preguntas de cifrado en cada build?

Sí, mientras tu Info.plist no contenga la clave ITSAppUsesNonExemptEncryption. Con ella, App Store Connect ya no hace las preguntas. Con Expo, se configura en app.json con `ios.config.usesNonExemptEncryption`.

### ¿Dónde declaro el cifrado en app.json con Expo?

En app.json, dentro de `expo.ios.config`, con `"usesNonExemptEncryption": false` si tu app no usa ningún cifrado no exento. EAS Build escribe la clave en el Info.plist del build. Surte efecto en el siguiente build, no en el que ya enviaste.

### ¿Missing Compliance también bloquea el envío al App Store?

Las preguntas de cumplimiento de exportación aparecen en toda nueva versión, beta o App Store. Un build que no las haya respondido no se puede distribuir. La clave en el Info.plist resuelve los dos casos a la vez.

### ¿Debo hacer un informe anual de autoclasificación?

Apple señala que usar un cifrado exento puede igualmente obligarte a presentar un informe anual de autoclasificación ante el gobierno de Estados Unidos, y remite al procedimiento oficial. Si tu app usa un cifrado no exento y entregaste la documentación a Apple, ese informe no es necesario.


## Tu proyecto

[Review Kit](https://devoria.fr/es/kits/app-review): Mi checklist de revisión de App Store, mis rechazos de Apple corregidos, la de Google Play y tres skills de Claude Code. 49 €.

[iOS & Android Kit](https://devoria.fr/es/kits/ios): Crea tu app para iPhone y Android con Claude Code: el código base de mis apps, el camino hasta las tiendas y todos los kits. 99 €.

[Diagnóstico: lo que te separa de tu app para iPhone](https://devoria.fr/es/diagnostic): 7 preguntas, 60 segundos: descubre qué te frena de verdad para publicar tu app para iPhone, tu ruta en 4 etapas y el kit ideal para ti.
