ITMS-90725: corregir “SDK version issue” con Expo
Por Mehdi Azizi
Publicado el , 7 min
ITMS-90725: tu app se compiló con un SDK de iOS viejo. Desde el 28 de abril de 2026, Apple exige Xcode 26: pasa a Expo SDK 54 o más.
ITMS-90725 es un control automático de Apple sobre tu build: indica que la app se compiló con un SDK de iOS más antiguo que el mínimo exigido. Al 15 de octubre de 2026, Apple indica que desde el 28 de abril de 2026 las apps enviadas a App Store Connect deben compilarse con Xcode 26 o posterior y el SDK de iOS 26. Con Expo, todo depende de la imagen de build de EAS: a partir del SDK 54 de Expo, la imagen elegida por defecto incluye Xcode 26.
Mis apps, Solys, TradaZen y Nolera, están en el SDK 57 de Expo, sin imagen forzada en eas.json: EAS elige por sí mismo la versión de Xcode. Aquí te explico cómo revisar la tuya y qué hacer si tu proyecto es más antiguo.
¿Qué significa el error ITMS-90725?
El mensaje se titula "ITMS-90725: SDK version issue". Indica el SDK con el que se compiló tu app, luego el mínimo exigido y la versión de Xcode que lo contiene. En el foro de desarrolladores de Apple, un mensaje de 2024 empezaba por ejemplo así: "This app was built with the iOS 16.2 SDK", seguido de la exigencia de ese momento.
El SDK es el conjunto de bibliotecas de iOS con las que Xcode compila tu app. Cada versión de Xcode trae el suyo: Xcode 26 contiene el SDK de iOS 26. Compilar con un SDK reciente no significa abandonar los iPhone antiguos. La versión mínima de iOS que acepta tu app es un ajuste distinto, el deployment target.
Como los demás errores ITMS, no es el rechazo de un reviewer. El control es automático y se aplica al binario enviado.
¿Qué versión de Xcode exige Apple hoy?
Esto dicen la página de próximos requisitos de Apple y la página de envío al App Store, consultadas el 15 de octubre de 2026:
| Fecha | Requisito |
|---|---|
| 28 de abril de 2026 | Xcode 26, SDK de iOS 26 |
| 9 de septiembre de 2026 | Target mínimo iOS 13 |
| Abril de 2027 | SDK de iOS 27, target iOS 15 |
La regla que dispara ITMS-90725 es la primera. Un build hecho con Xcode 16 y el SDK de iOS 18 ya no se acepta. La segunda trata de la versión mínima objetivo, no del SDK. La tercera está anunciada para abril de 2027, sin día exacto en la página al momento de la consulta. Apple ya invita a compilar y probar con Xcode 27.
Este requisito sube con regularidad, y siempre en primavera. La misma página de Apple conserva el registro de varias fechas límite: Xcode 14.1 el 25 de abril de 2023, Xcode 15 el 29 de abril de 2024, Xcode 26 el 28 de abril de 2026. Antes de cada primavera, vuelve a leerla en lugar de fiarte de un artículo, incluido este.
Advertencia o bloqueo: ¿cómo distinguirlos?
Antes de la fecha límite, ITMS-90725 llega como advertencia. En 2024, en el foro de Apple, el correo precisaba que la entrega se había realizado y aconsejaba corregirlo en el siguiente envío. Después de la fecha límite, Apple escribe que las apps "deben" compilarse con el SDK exigido para poder enviarse: el build ya no se acepta.
| Pista | Advertencia | Bloqueo |
|---|---|---|
| Fecha del envío | Antes de la fecha límite | Después de la fecha límite |
| Envío aceptado | Sí | No |
| Qué haces | Corregir en el siguiente | Nuevo build |
Una advertencia ITMS-90725 es una cuenta regresiva. El build pasa hoy, pero el siguiente, compilado de la misma forma, será rechazado después de la fecha. Corrígelo mientras no tengas la presión de una actualización urgente.
Corregir ITMS-90725 en un proyecto Expo
Con EAS, tu app se compila en las Mac de Expo, como explico en publicar una app iOS sin Mac. La versión de Xcode depende de la imagen de build. Si no especificas image en eas.json, EAS usa el alias auto: elige la imagen según tu versión del SDK de Expo.
Esta es la imagen asociada a cada SDK según la documentación de la infraestructura de EAS, actualizada el 8 de octubre de 2026:
| SDK de Expo | Xcode de la imagen | ITMS-90725 |
|---|---|---|
| 57 | 26.6 | No |
| 56 | 26.4 | No |
| 55 | 26.2 | No |
| 54 | 26.0 | No |
| 53 | 16.4 | Sí |
| 52 | 16.2 | Sí |
- Revisa la imagen que usó tu último build. En la página del build, en expo.dev, la sección "Spin up build environment" de los logs muestra su nombre y su versión de Xcode.
- Si estás en el SDK 54 o superior, busca una imagen forzada. Una línea
imageque apunte a Xcode 16, comomacos-sequoia-15.6-xcode-16.4, basta para provocar el error. La documentación de Expo la presenta como la imagen del SDK 54 para quien no quiere Xcode 26: desde el 28 de abril de 2026, esa elección lleva al rechazo. Elimina la línea: EAS vuelve a la imagen por defecto. - Si estás en el SDK 53 o inferior, sube de SDK. Es la recomendación de Expo en su anuncio del 27 de abril de 2026: pasar como mínimo al SDK 54.
- Haz un nuevo build y vuelve a enviarlo. El SDK queda fijado en el binario: una actualización remota no cambia nada.
La solución provisional para un SDK antiguo
El mismo anuncio de Expo da una opción si no puedes subir de inmediato: forzar una imagen con Xcode 26 en eas.json, en tu perfil de producción.
{
"build": {
"production": {
"ios": {
"image": "macos-sequoia-15.6-xcode-26.2"
}
}
}
}
Expo advierte: no todas las versiones del SDK son compatibles con Xcode 26, y el resultado también depende de tus bibliotecas. Tómala como una prórroga, no como una corrección. Si el build falla al compilar, la única vía sigue siendo subir de SDK.
Subir de SDK, una versión a la vez
La guía de actualización de Expo recomienda subir una versión a la vez, para detectar lo que se rompe en cada paso. Para pasar de un SDK 53 al SDK 54:
npm install expo@^54.0.0
npx expo install --fix
npx expo-doctor
Si tu carpeta ios la genera Expo, bórrala: se volverá a crear en el siguiente build. Luego prueba la app en tu iPhone antes de repetir el proceso para la siguiente versión.
Un punto que debes saber antes de apuntar al último SDK. Según la tabla de versiones de Expo, los SDK 54 y 55 aceptan iOS 15.1 o superior, y los SDK 56 y 57 solo iOS 16.4 o superior. Pasar al SDK 56 deja fuera a los iPhone que se quedaron en iOS 15. El SDK 54 basta para resolver ITMS-90725.
Verificar el SDK de un build antes del envío
Xcode registra en el Info.plist de cada build el SDK y la versión de Xcode utilizados. Descarga el IPA desde la página del build en expo.dev y ejecuta en tu Mac:
unzip -q MonApp.ipa -d ipa
plutil -extract DTSDKName raw ipa/Payload/*.app/Info.plist
plutil -extract DTXcode raw ipa/Payload/*.app/Info.plist
Para un build destinado al App Store, el primer valor debe empezar por iphoneos26. El segundo codifica la versión de Xcode: en un build de Nolera hecho con Xcode 26.2 para el simulador, obtengo 2620. Si lees iphoneos18 o un valor que empieza por 16, el build será rechazado.
Si compilas en tu propia Mac, lo que cuenta es tu Xcode, no la imagen de EAS. xcodebuild -version muestra la versión activa. La misma lógica aplica en integración continua: la versión de Xcode depende de la máquina elegida. En 2024, en el foro de Apple, algunos desarrolladores recibían ITMS-90725 porque su máquina de GitHub Actions corría un macOS demasiado antiguo para Xcode 15.
Una vez enviado el build correcto, pruébalo en TestFlight antes de enviarlo a revisión. Un nuevo build también vuelve a pasar por la revisión, con los plazos que describo en tiempo de revisión del App Store.
Enviar tu build sin sorpresas
ITMS-90725 se previene en un minuto: revisa la imagen y el SDK antes de cada build de producción. Los demás controles automáticos piden el mismo rigor, como ITMS-90683 para los textos de permisos. Los rechazos de un reviewer piden más perspectiva: el proceso está en la página app rechazada por Apple, y los motivos más frecuentes están en por qué Apple rechaza una app.
Para revisar tu proyecto antes del envío, el Review Kit reúne mi checklist y skills de Claude Code que revisan tu proyecto. Si tu envío está bloqueado y quieres una mirada humana, reserva una hora conmigo: revisamos tu proyecto por videollamada, en tu pantalla. Y si preparas tu primer lanzamiento, haz tu diagnóstico gratuito: pone los pasos en orden y te envía mi checklist para evitar rechazos de Apple.
Preguntas frecuentes
¿ITMS-90725 impide publicar mi app?
Después de la fecha límite fijada por Apple, sí: el build ya no se acepta y hay que compilar uno nuevo. Antes de la fecha límite, es una advertencia: el build pasa, pero el siguiente será rechazado si se compila de la misma forma.
¿Hay que abandonar los iPhone antiguos para compilar con el SDK de iOS 26?
No. El SDK de compilación y la versión mínima de iOS son dos ajustes distintos. Con Expo, es tu versión del SDK de Expo la que fija ese mínimo: iOS 15.1 para los SDK 54 y 55, iOS 16.4 para los SDK 56 y 57.
¿Se puede corregir ITMS-90725 con una actualización remota?
No. El SDK queda registrado en el binario al momento de compilar. Una actualización remota solo cambia el JavaScript y los recursos. Hay que hacer un nuevo build con Xcode 26 y volver a enviarlo.
¿Cómo saber qué versión de Xcode usa EAS?
Abre los logs de tu build en expo.dev, sección "Spin up build environment". El nombre de la imagen indica la versión de Xcode, por ejemplo macos-tahoe-26.5-xcode-26.6. La lista completa está en la documentación de la infraestructura de EAS.
¿Qué cambiará el requisito de abril de 2027?
Según la página de envío de Apple, habrá que compilar con el SDK de iOS 27 y tener como target al menos iOS 15. Del lado de EAS, Expo prevé una imagen con Xcode 27 para su futuro SDK 58: revisa la lista de imágenes de build antes de compilar. Vuelve a leer la página de Apple en primavera para conocer el día exacto.

