# ITMS-90725 : corriger « SDK version issue » avec Expo

> ITMS-90725 : ton app est compilée avec un SDK iOS trop ancien. Depuis le 28 avril 2026, Apple exige Xcode 26 : passe au SDK Expo 54 ou plus et refais un build.

Page originale : [ITMS-90725 : corriger « SDK version issue » avec Expo](https://devoria.fr/blog/itms-90725-sdk-version-xcode)
Auteur : [Mehdi Azizi](https://devoria.fr/mehdi-azizi)
Publication : 2026-11-04
Dernière révision du contenu : 2026-11-04


ITMS-90725 est un contrôle automatique d'Apple sur ton build : il dit que l'app a été compilée avec un SDK iOS plus ancien que le minimum exigé. Au 15 octobre 2026, Apple indique que depuis le 28 avril 2026, les apps envoyées à App Store Connect doivent être compilées avec Xcode 26 ou plus et le SDK iOS 26. **Avec Expo, tout se joue dans l'image de build EAS : à partir du SDK Expo 54, l'image choisie par défaut embarque Xcode 26.**

Mes apps, Solys, TradaZen et Nolera, sont sur le SDK 57 d'Expo, sans image forcée dans eas.json : EAS choisit lui-même la version de Xcode. Voici comment vérifier la tienne, et quoi faire si ton projet est plus ancien.

## Que veut dire l'erreur ITMS-90725 ?

Le message s'intitule « ITMS-90725: SDK version issue ». Il donne le SDK avec lequel ton app a été compilée, puis le minimum exigé et la version de Xcode qui le contient. Sur le forum des développeurs d'Apple, un message de 2024 commençait par exemple ainsi : « This app was built with the iOS 16.2 SDK », suivi de l'exigence de l'époque.

Le SDK, c'est l'ensemble des bibliothèques d'iOS avec lesquelles Xcode compile ton app. Chaque version de Xcode embarque le sien : Xcode 26 contient le SDK iOS 26. **Compiler avec un SDK récent ne veut pas dire abandonner les anciens iPhone.** La version minimale d'iOS que ton app accepte est un réglage distinct, la cible de déploiement.

Comme les autres erreurs ITMS, ce n'est pas le refus d'un reviewer. Le contrôle est automatique et porte sur le binaire envoyé.

## Quelle version de Xcode Apple exige-t-elle aujourd'hui ?

Voici ce que disent la page des [exigences à venir d'Apple](https://developer.apple.com/news/upcoming-requirements/) et la page de [soumission sur l'App Store](https://developer.apple.com/app-store/submitting/), relevées le 15 octobre 2026 :

| Date             | Exigence                 |
| ---------------- | ------------------------ |
| 28 avril 2026    | Xcode 26, SDK iOS 26     |
| 9 septembre 2026 | Cible iOS 13 minimum     |
| Avril 2027       | SDK iOS 27, cible iOS 15 |

La règle qui déclenche ITMS-90725 est la première. Un build fait avec Xcode 16 et le SDK iOS 18 n'est plus accepté. La deuxième porte sur la version minimale ciblée, pas sur le SDK. La troisième est annoncée pour avril 2027, sans jour précis sur la page au moment du relevé. Apple invite déjà à compiler et tester avec Xcode 27.

**Cette exigence remonte régulièrement, et toujours au printemps.** La même page d'Apple garde la trace de plusieurs échéances : Xcode 14.1 le 25 avril 2023, Xcode 15 le 29 avril 2024, Xcode 26 le 28 avril 2026. Avant chaque printemps, relis-la plutôt que de te fier à un article, celui-ci compris.

## Avertissement ou blocage : comment faire la différence ?

Avant l'échéance, ITMS-90725 arrive comme un avertissement. En 2024, sur le forum d'Apple, l'e-mail précisait que la livraison avait réussi et conseillait de corriger au prochain envoi. Après l'échéance, Apple écrit que les apps « doivent » être compilées avec le SDK exigé pour être envoyées : le build n'est plus accepté.

| Indice          | Avertissement       | Blocage          |
| --------------- | ------------------- | ---------------- |
| Date de l'envoi | Avant l'échéance    | Après l'échéance |
| Envoi accepté   | Oui                 | Non              |
| Ce que tu fais  | Corriger au suivant | Nouveau build    |

**Un avertissement ITMS-90725 est un compte à rebours.** Le build passe aujourd'hui, mais le prochain, compilé de la même façon, sera refusé après la date. Corrige-le tant que tu n'es pas pressé par une mise à jour urgente.

## Corriger ITMS-90725 dans un projet Expo

Avec EAS, ton app est compilée sur les Mac d'Expo, comme je l'explique dans [publier une app iOS sans Mac](https://devoria.fr/blog/publier-une-app-ios-sans-mac). La version de Xcode dépend de l'image de build. Si tu ne précises pas `image` dans eas.json, EAS utilise l'alias `auto` : il choisit l'image selon ta version du SDK Expo.

Voici l'image associée à chaque SDK d'après la [documentation de l'infrastructure EAS](https://docs.expo.dev/build-reference/infrastructure/), mise à jour le 8 octobre 2026 :

| SDK Expo | Xcode de l'image | ITMS-90725 |
| -------- | ---------------- | ---------- |
| 57       | 26.6             | Non        |
| 56       | 26.4             | Non        |
| 55       | 26.2             | Non        |
| 54       | 26.0             | Non        |
| 53       | 16.4             | Oui        |
| 52       | 16.2             | Oui        |

1. **Regarde l'image utilisée par ton dernier build.** Sur la page du build, dans expo.dev, la section « Spin up build environment » des journaux affiche son nom et sa version de Xcode.
2. **Si tu es sur le SDK 54 ou plus, cherche une image forcée.** Une ligne `image` qui pointe vers Xcode 16, comme `macos-sequoia-15.6-xcode-16.4`, suffit à provoquer l'erreur. La documentation d'Expo la présente comme l'image du SDK 54 pour qui ne veut pas de Xcode 26 : depuis le 28 avril 2026, ce choix mène au refus. Retire la ligne : EAS revient à l'image par défaut.
3. **Si tu es sur le SDK 53 ou moins, monte de SDK.** C'est la recommandation d'Expo dans son [annonce du 27 avril 2026](https://expo.dev/blog/app-store-connect-minimum-sdk-26) : passer au moins au SDK 54.
4. **Refais un build et renvoie-le.** Le SDK est figé dans le binaire : une mise à jour à distance ne change rien.

### La solution de dépannage pour un vieux SDK

La même annonce d'Expo donne une option si tu ne peux pas monter tout de suite : forcer une image Xcode 26 dans eas.json, dans ton profil de production.

```json
{
  "build": {
    "production": {
      "ios": {
        "image": "macos-sequoia-15.6-xcode-26.2"
      }
    }
  }
}
```

Expo prévient : toutes les versions du SDK ne sont pas compatibles avec Xcode 26, et le résultat dépend aussi de tes bibliothèques. **Prends-la comme un sursis, pas comme une correction.** Si le build échoue à la compilation, la seule voie reste la montée de SDK.

### Monter de SDK, une version à la fois

Le [guide de mise à jour d'Expo](https://docs.expo.dev/workflow/upgrading-expo-sdk-walkthrough/) recommande de monter une version à la fois, pour repérer ce qui casse à chaque étape. Pour passer d'un SDK 53 au SDK 54 :

```bash
npm install expo@^54.0.0
npx expo install --fix
npx expo-doctor
```

Si ton dossier `ios` est généré par Expo, supprime-le : il sera recréé au prochain build. Puis teste l'app sur ton iPhone avant de recommencer pour la version suivante.

Un point à savoir avant de viser le dernier SDK. D'après le [tableau des versions d'Expo](https://docs.expo.dev/versions/latest/), les SDK 54 et 55 acceptent iOS 15.1 et plus, les SDK 56 et 57 seulement iOS 16.4 et plus. **Passer au SDK 56 écarte donc les iPhone restés sous iOS 15.** Le SDK 54 suffit pour lever ITMS-90725.

## Vérifier le SDK d'un build avant l'envoi

Xcode inscrit dans l'Info.plist de chaque build le SDK et la version de Xcode utilisés. Télécharge l'IPA depuis la page du build sur expo.dev, puis lance sur ton Mac :

```bash
unzip -q MonApp.ipa -d ipa
plutil -extract DTSDKName raw ipa/Payload/*.app/Info.plist
plutil -extract DTXcode raw ipa/Payload/*.app/Info.plist
```

Pour un build destiné à l'App Store, la première valeur doit commencer par `iphoneos26`. La seconde code la version de Xcode : sur un build de Nolera fait avec Xcode 26.2 pour le simulateur, j'obtiens `2620`. Si tu lis `iphoneos18` ou une valeur qui commence par `16`, le build sera refusé.

Si tu compiles sur ton propre Mac, c'est ton Xcode qui compte, pas l'image d'EAS. `xcodebuild -version` affiche la version active. Même logique en intégration continue : la version de Xcode dépend de la machine choisie. En 2024, sur le forum d'Apple, des développeurs prenaient ITMS-90725 parce que leur machine GitHub Actions tournait sur un macOS trop ancien pour Xcode 15.

Une fois le bon build envoyé, teste-le dans [TestFlight](https://devoria.fr/blog/testflight-tester-son-app-iphone) avant de le soumettre. Un nouveau build repasse aussi par la revue, avec les délais décrits dans [délai de validation App Store](https://devoria.fr/blog/delai-validation-app-store).

## Envoyer ton build sans mauvaise surprise

ITMS-90725 se prévient en une minute : vérifie l'image et le SDK avant chaque build de production. Les autres contrôles automatiques demandent la même rigueur, comme [ITMS-90683](https://devoria.fr/blog/itms-90683-missing-purpose-string-expo) pour les phrases d'autorisation. Les refus d'un reviewer demandent plus de recul : la démarche est sur la page [application refusée par Apple](https://devoria.fr/expertise/application-refusee-par-apple), et les motifs les plus fréquents sont dans [pourquoi Apple refuse une app](https://devoria.fr/blog/pourquoi-apple-refuse-votre-app).

Pour vérifier ton dossier avant l'envoi, le [Kit Review Apple](https://devoria.fr/kits/review-apple) réunit ma checklist et des skills Claude Code qui relisent ton projet. Si ton envoi bloque et que tu veux un regard humain, [réserve une heure avec moi](https://devoria.fr/coaching) : on reprend ton projet en visio, sur ton écran. Et si tu prépares ta première sortie, [fais ton diagnostic gratuit](https://devoria.fr/diagnostic) : il remet les étapes dans l'ordre et t'envoie ma checklist anti-refus Apple.

## Questions fréquentes

### ITMS-90725 empêche-t-il de publier mon app ?

Après l'échéance fixée par Apple, oui : le build n'est plus accepté et il faut en compiler un nouveau. Avant l'échéance, c'est un avertissement : le build passe, mais le suivant sera refusé s'il est compilé de la même façon.

### Faut-il abandonner les anciens iPhone pour compiler avec le SDK iOS 26 ?

Non. Le SDK de compilation et la version minimale d'iOS sont deux réglages distincts. Avec Expo, c'est ta version du SDK Expo qui fixe ce minimum : iOS 15.1 pour les SDK 54 et 55, iOS 16.4 pour les SDK 56 et 57.

### Peut-on corriger ITMS-90725 avec une mise à jour à distance ?

Non. Le SDK est inscrit dans le binaire au moment de la compilation. Une mise à jour à distance ne change que le JavaScript et les ressources. Il faut refaire un build avec Xcode 26 et le renvoyer.

### Comment savoir quelle version de Xcode utilise EAS ?

Ouvre les journaux de ton build sur expo.dev, section « Spin up build environment ». Le nom de l'image indique la version de Xcode, par exemple `macos-tahoe-26.5-xcode-26.6`. La liste complète est dans la documentation de l'infrastructure EAS.

### Que va changer l'exigence d'avril 2027 ?

D'après la page de soumission d'Apple, il faudra compiler avec le SDK iOS 27 et cibler au moins iOS 15. Côté EAS, Expo prévoit une image avec Xcode 27 pour son futur SDK 58 : vérifie la liste des images de build avant de compiler. Relis la page d'Apple au printemps pour connaître le jour exact.


## Ton projet

[Kit Review](https://devoria.fr/kits/review-apple) : Tout ce que je vérifie avant d'envoyer une app à Apple, la même vérification pour Google Play, et trois skills qui font la relecture avec Claude Code. 49 €, paiement unique. Inclus : La checklist avant l'envoi ; Les refus que j'ai pris, et ce que j'ai corrigé ; Les notes pour le testeur ; Les skills de vérification. Prérequis : une app iPhone ou Android presque prête, et Claude Code ou Cursor. Téléchargement immédiat après le paiement.

[Kit iOS & Android Devoria](https://devoria.fr/kits/ios) : Le code de départ de mes apps, le parcours jusqu'à l'App Store et Google Play avec les messages à donner à Claude, et tous les kits. Claude part d'une app qui tourne déjà. 99 €, paiement unique. Inclus : Le code de départ de ton app ; Les styles visuels ; Le parcours pas à pas ; Kit Review ; Kit Captures ; Kit ASO ; Mises à jour à vie ; Bonus : la séance 1:1 à moitié prix. Prérequis : pour l'iPhone, un Mac avec Xcode 26 ou plus et un compte Apple Developer (99 $ par an) pour publier. Pour Android, Android Studio sur un Mac, un PC Windows ou Linux, et un compte Google Play Console (25 $, une fois). Et Claude Code (abonnement payant) ou Cursor. Téléchargement immédiat après le paiement.

[Diagnostic gratuit](https://devoria.fr/diagnostic) : quelques questions sur ton projet. Il dit ce qui te bloque vraiment, l'ordre des quatre étapes et le kit qui correspond. En laissant ton e-mail, tu reçois la checklist anti-refus Apple : les points vérifiés avant chaque envoi, tirés des refus reçus par les apps du studio.

[Une heure avec moi](https://devoria.fr/coaching) : On regarde ton app ou ton projet Claude, écran partagé : ce qui bloque, ce que je change en premier, et dans quel ordre. 100 € la séance d'une heure, en visio, paiement en une fois. Sujets : L'audit de ton app ; Ton travail avec Claude ; Ta fiche et ton paywall ; Un refus d'Apple.
