# ITMS-90725: rezolvă „SDK version issue” cu Expo

> ITMS-90725: aplicația ta e compilată cu un SDK iOS prea vechi. Din 28 aprilie 2026, Apple cere Xcode 26: treci la SDK Expo 54 sau mai nou și refă build-ul.

Pagina originală: [ITMS-90725: rezolvă „SDK version issue” cu Expo](https://devoria.fr/ro/blog/itms-90725-sdk-version-issue-expo)
Autor: [Mehdi Azizi](https://devoria.fr/ro/mehdi-azizi)
Publicare: 2026-11-04
Ultima revizuire a conținutului: 2026-11-04


ITMS-90725 este o verificare automată pe care Apple o face pe build-ul tău: îți spune că aplicația a fost compilată cu un SDK iOS mai vechi decât minimul cerut. La 15 octombrie 2026, Apple precizează că din 28 aprilie 2026 aplicațiile trimise în App Store Connect trebuie compilate cu Xcode 26 sau mai nou și cu SDK-ul iOS 26. **Cu Expo, totul se decide în imaginea de build EAS: începând cu SDK-ul Expo 54, imaginea aleasă implicit include Xcode 26.**

Aplicațiile mele, Solys, TradaZen și Nolera, sunt pe SDK-ul Expo 57, fără imagine forțată în eas.json: EAS alege singur versiunea de Xcode. Uite cum o verifici pe a ta și ce faci dacă proiectul tău e mai vechi.

## Ce înseamnă eroarea ITMS-90725?

Mesajul se numește „ITMS-90725: SDK version issue”. Îți arată SDK-ul cu care a fost compilată aplicația, apoi minimul cerut și versiunea de Xcode care îl conține. Pe forumul dezvoltatorilor Apple, un mesaj din 2024 începea de exemplu așa: „This app was built with the iOS 16.2 SDK”, urmat de cerința de atunci.

SDK-ul este ansamblul de biblioteci iOS cu care Xcode îți compilează aplicația. Fiecare versiune de Xcode vine cu propriul SDK: Xcode 26 conține SDK-ul iOS 26. **Să compilezi cu un SDK recent nu înseamnă să renunți la iPhone-urile vechi.** Versiunea minimă de iOS pe care o acceptă aplicația ta este o setare separată, ținta de deployment (deployment target).

Ca și celelalte erori ITMS, nu e o respingere din partea unui reviewer. Verificarea e automată și privește binarul trimis.

## Ce versiune de Xcode cere Apple acum?

Iată ce spun pagina cu [cerințele viitoare ale Apple](https://developer.apple.com/news/upcoming-requirements/) și pagina despre [trimiterea în App Store](https://developer.apple.com/app-store/submitting/), consultate pe 15 octombrie 2026:

| Dată              | Cerință                  |
| ----------------- | ------------------------ |
| 28 aprilie 2026   | Xcode 26, SDK iOS 26     |
| 9 septembrie 2026 | Țintă minimă iOS 13      |
| Aprilie 2027      | SDK iOS 27, țintă iOS 15 |

Regula care declanșează ITMS-90725 este prima. Un build făcut cu Xcode 16 și SDK-ul iOS 18 nu mai este acceptat. A doua privește versiunea minimă țintită, nu SDK-ul. A treia este anunțată pentru aprilie 2027, fără o zi precisă pe pagină la momentul consultării. Apple te îndeamnă deja să compilezi și să testezi cu Xcode 27.

**Cerința asta crește regulat, și mereu primăvara.** Aceeași pagină Apple păstrează mai multe termene: Xcode 14.1 pe 25 aprilie 2023, Xcode 15 pe 29 aprilie 2024, Xcode 26 pe 28 aprilie 2026. Înainte de fiecare primăvară, recitește-o în loc să te bazezi pe un articol, inclusiv pe acesta.

## Avertisment sau blocare: cum faci diferența?

Înainte de termen, ITMS-90725 vine ca avertisment. În 2024, pe forumul Apple, e-mailul preciza că livrarea a reușit și recomanda corectarea la următoarea trimitere. După termen, Apple scrie că aplicațiile „trebuie” compilate cu SDK-ul cerut ca să poată fi trimise: build-ul nu mai este acceptat.

| Indiciu             | Avertisment            | Blocare     |
| ------------------- | ---------------------- | ----------- |
| Data trimiterii     | Înainte de termen      | După termen |
| Trimitere acceptată | Da                     | Nu          |
| Ce faci             | Corectezi la următorul | Build nou   |

**Un avertisment ITMS-90725 este o numărătoare inversă.** Build-ul trece azi, dar următorul, compilat la fel, va fi refuzat după dată. Corectează-l cât timp nu te presează un update urgent.

## Cum rezolvi ITMS-90725 într-un proiect Expo

Cu EAS, aplicația ta e compilată pe Mac-urile Expo, cum explic în [publică o aplicație iOS fără Mac](https://devoria.fr/ro/blog/publicare-aplicatie-ios-fara-mac-expo-eas). Versiunea de Xcode depinde de imaginea de build. Dacă nu specifici `image` în eas.json, EAS folosește aliasul `auto`: alege imaginea în funcție de versiunea ta de SDK Expo.

Iată imaginea asociată fiecărui SDK conform [documentației infrastructurii EAS](https://docs.expo.dev/build-reference/infrastructure/), actualizată pe 8 octombrie 2026:

| SDK Expo | Xcode din imagine | ITMS-90725 |
| -------- | ----------------- | ---------- |
| 57       | 26.6              | Nu         |
| 56       | 26.4              | Nu         |
| 55       | 26.2              | Nu         |
| 54       | 26.0              | Nu         |
| 53       | 16.4              | Da         |
| 52       | 16.2              | Da         |

1. **Uită-te la imaginea folosită de ultimul tău build.** Pe pagina build-ului, în expo.dev, secțiunea „Spin up build environment” din loguri îi afișează numele și versiunea de Xcode.
2. **Dacă ești pe SDK 54 sau mai nou, caută o imagine forțată.** O linie `image` care trimite la Xcode 16, ca `macos-sequoia-15.6-xcode-16.4`, e de ajuns ca să provoace eroarea. Documentația Expo o prezintă ca imaginea SDK-ului 54 pentru cine nu vrea Xcode 26: din 28 aprilie 2026, alegerea asta duce la refuz. Șterge linia: EAS revine la imaginea implicită.
3. **Dacă ești pe SDK 53 sau mai vechi, urcă versiunea de SDK.** Asta recomandă Expo în [anunțul din 27 aprilie 2026](https://expo.dev/blog/app-store-connect-minimum-sdk-26): treci cel puțin la SDK 54.
4. **Refă build-ul și retrimite-l.** SDK-ul e fixat în binar: un update la distanță nu schimbă nimic.

### Soluția de avarie pentru un SDK vechi

Același anunț Expo oferă o opțiune dacă nu poți face upgrade imediat: forțezi o imagine Xcode 26 în eas.json, în profilul tău de producție.

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

Expo avertizează: nu toate versiunile de SDK sunt compatibile cu Xcode 26, iar rezultatul depinde și de bibliotecile tale. **Ia-o ca pe o amânare, nu ca pe o rezolvare.** Dacă build-ul eșuează la compilare, singura cale rămâne upgrade-ul de SDK.

### Urcă SDK-ul câte o versiune pe rând

[Ghidul de actualizare Expo](https://docs.expo.dev/workflow/upgrading-expo-sdk-walkthrough/) recomandă să urci câte o versiune pe rând, ca să vezi ce se strică la fiecare pas. Ca să treci de la SDK 53 la SDK 54:

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

Dacă folderul tău `ios` e generat de Expo, șterge-l: va fi recreat la următorul build. Apoi testează aplicația pe iPhone înainte să reiei pașii pentru versiunea următoare.

Un lucru de știut înainte să țintești cel mai nou SDK. Conform [tabelului de versiuni Expo](https://docs.expo.dev/versions/latest/), SDK-urile 54 și 55 acceptă iOS 15.1 și mai nou, iar SDK-urile 56 și 57 doar iOS 16.4 și mai nou. **Deci trecerea la SDK 56 exclude iPhone-urile rămase pe iOS 15.** SDK 54 e suficient ca să scapi de ITMS-90725.

## Verifică SDK-ul unui build înainte de trimitere

Xcode scrie în Info.plist-ul fiecărui build SDK-ul și versiunea de Xcode folosite. Descarcă IPA-ul de pe pagina build-ului din expo.dev, apoi rulează pe Mac:

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

Pentru un build destinat App Store, prima valoare trebuie să înceapă cu `iphoneos26`. A doua codifică versiunea de Xcode: pe un build Nolera făcut cu Xcode 26.2 pentru simulator, obțin `2620`. Dacă vezi `iphoneos18` sau o valoare care începe cu `16`, build-ul va fi refuzat.

Dacă compilezi pe propriul Mac, contează Xcode-ul tău, nu imaginea EAS. `xcodebuild -version` afișează versiunea activă. Aceeași logică în integrarea continuă: versiunea de Xcode depinde de mașina aleasă. În 2024, pe forumul Apple, unii dezvoltatori primeau ITMS-90725 pentru că mașina lor GitHub Actions rula un macOS prea vechi pentru Xcode 15.

După ce ai trimis build-ul corect, testează-l în [TestFlight](https://devoria.fr/ro/blog/testflight-testare-aplicatie-iphone) înainte de a-l trimite la review. Un build nou trece din nou prin review, cu termenele descrise în [timpul de aprobare App Store](https://devoria.fr/ro/blog/durata-review-app-store-aprobare).

## Trimite-ți build-ul fără surprize

ITMS-90725 se previne într-un minut: verifică imaginea și SDK-ul înainte de fiecare build de producție. Celelalte verificări automate cer aceeași rigoare, ca [ITMS-90683](https://devoria.fr/ro/blog/itms-90683-missing-purpose-string-expo) pentru textele de permisiuni. Respingerile unui reviewer cer mai mult calm: pașii sunt pe pagina [aplicație respinsă de Apple](https://devoria.fr/ro/expertise/aplicatie-respinsa-de-apple), iar motivele cele mai frecvente sunt în [de ce respinge Apple o aplicație](https://devoria.fr/ro/blog/aplicatie-respinsa-apple-cazuri-reale).

Ca să-ți verifici proiectul înainte de trimitere, [Review Kit](https://devoria.fr/ro/kits/app-review) adună checklist-ul meu și skill-uri Claude Code care îți recitesc proiectul. Dacă trimiterea ți se blochează și vrei o privire umană, [rezervă o oră cu mine](https://devoria.fr/ro/coaching): reluăm proiectul tău pe video, pe ecranul tău. Iar dacă îți pregătești prima lansare, [fă diagnosticul gratuit](https://devoria.fr/ro/diagnostic): îți pune pașii în ordine și îți trimite checklist-ul meu anti-respingere Apple.

## Întrebări frecvente

### ITMS-90725 mă împiedică să-mi public aplicația?

După termenul stabilit de Apple, da: build-ul nu mai este acceptat și trebuie să compilezi altul. Înainte de termen, e un avertisment: build-ul trece, dar următorul va fi refuzat dacă e compilat la fel.

### Trebuie să renunț la iPhone-urile vechi ca să compilez cu SDK-ul iOS 26?

Nu. SDK-ul de compilare și versiunea minimă de iOS sunt două setări separate. Cu Expo, versiunea ta de SDK Expo stabilește acest minim: iOS 15.1 pentru SDK-urile 54 și 55, iOS 16.4 pentru SDK-urile 56 și 57.

### Pot rezolva ITMS-90725 cu un update la distanță?

Nu. SDK-ul e scris în binar în momentul compilării. Un update la distanță schimbă doar JavaScript-ul și resursele. Trebuie să refaci build-ul cu Xcode 26 și să-l retrimiți.

### Cum aflu ce versiune de Xcode folosește EAS?

Deschide logurile build-ului pe expo.dev, secțiunea „Spin up build environment”. Numele imaginii indică versiunea de Xcode, de exemplu `macos-tahoe-26.5-xcode-26.6`. Lista completă e în documentația infrastructurii EAS.

### Ce va schimba cerința din aprilie 2027?

Conform paginii Apple despre trimitere, va trebui să compilezi cu SDK-ul iOS 27 și să țintești cel puțin iOS 15. Pe partea EAS, Expo plănuiește o imagine cu Xcode 27 pentru viitorul SDK 58: verifică lista imaginilor de build înainte să compilezi. Recitește pagina Apple primăvara ca să afli ziua exactă.


## Proiectul tău

[Review Kit](https://devoria.fr/ro/kits/app-review): Checklistul meu de review App Store, respingerile mele de la Apple rezolvate, checklistul pentru Google Play și trei skilluri Claude Code. 259 RON.

[iOS & Android Kit](https://devoria.fr/ro/kits/ios): Creează-ți aplicația de iPhone și Android cu Claude Code: codul de pornire al aplicațiilor mele, drumul până în store-uri și toate kiturile. 529 RON.

[Diagnostic: ce te desparte de aplicația ta de iPhone](https://devoria.fr/ro/diagnostic): 7 întrebări, 60 de secunde: afli ce te blochează de fapt să-ți publici aplicația de iPhone, traseul tău în 4 etape și kitul potrivit pentru tine.
