# ITMS-90725: διόρθωση του «SDK version issue» με Expo

> ITMS-90725: το app σου έγινε compile με πολύ παλιό iOS SDK. Από 28 Απριλίου 2026 η Apple ζητά Xcode 26: πήγαινε σε Expo SDK 54+ και κάνε νέο build.

Αρχική σελίδα: [ITMS-90725: διόρθωση του «SDK version issue» με Expo](https://devoria.fr/el/blog/itms-90725-sdk-version-issue-expo)
Συγγραφέας: [Mehdi Azizi](https://devoria.fr/el/mehdi-azizi)
Δημοσίευση: 2026-11-04
Τελευταία αναθεώρηση περιεχομένου: 2026-11-04


ITMS-90725 είναι ένας αυτόματος έλεγχος της Apple στο build σου: λέει ότι το app έγινε compile με iOS SDK παλαιότερο από το ελάχιστο που απαιτείται. Στις 15 Οκτωβρίου 2026, η Apple αναφέρει ότι από τις 28 Απριλίου 2026 τα apps που στέλνονται στο App Store Connect πρέπει να γίνονται compile με Xcode 26 ή νεότερο και το iOS 26 SDK. **Με το Expo, όλα κρίνονται στο image του EAS build: από το Expo SDK 54 και μετά, το image που επιλέγεται by default περιέχει Xcode 26.**

Τα apps μου, Solys, TradaZen και Nolera, είναι στο SDK 57 του Expo, χωρίς επιβεβλημένο image στο eas.json: το EAS διαλέγει μόνο του την έκδοση του Xcode. Δες πώς να ελέγξεις τη δική σου, και τι να κάνεις αν το project σου είναι παλαιότερο.

## Τι σημαίνει το σφάλμα ITMS-90725;

Το μήνυμα έχει τίτλο «ITMS-90725: SDK version issue». Αναφέρει το SDK με το οποίο έγινε compile το app σου, μετά το ελάχιστο που απαιτείται και την έκδοση του Xcode που το περιέχει. Στο forum των developers της Apple, ένα μήνυμα του 2024 ξεκινούσε για παράδειγμα έτσι: «This app was built with the iOS 16.2 SDK», ακολουθούμενο από την απαίτηση της εποχής.

Το SDK είναι το σύνολο των βιβλιοθηκών του iOS με τις οποίες το Xcode κάνει compile το app σου. Κάθε έκδοση του Xcode έχει το δικό της: το Xcode 26 περιέχει το iOS 26 SDK. **Το compile με πρόσφατο SDK δεν σημαίνει ότι εγκαταλείπεις τα παλιά iPhone.** Η ελάχιστη έκδοση iOS που δέχεται το app σου είναι ξεχωριστή ρύθμιση, το deployment target.

Όπως και τα άλλα σφάλματα ITMS, δεν πρόκειται για απόρριψη από reviewer. Ο έλεγχος είναι αυτόματος και αφορά το binary που στάλθηκε.

## Ποια έκδοση του Xcode απαιτεί σήμερα η Apple;

Δες τι λένε η σελίδα με τις [επερχόμενες απαιτήσεις της Apple](https://developer.apple.com/news/upcoming-requirements/) και η σελίδα [υποβολής στο App Store](https://developer.apple.com/app-store/submitting/), όπως τις κατέγραψα στις 15 Οκτωβρίου 2026:

| Ημερομηνία         | Απαίτηση                  |
| ------------------ | ------------------------- |
| 28 Απριλίου 2026   | Xcode 26, iOS 26 SDK      |
| 9 Σεπτεμβρίου 2026 | Target τουλάχιστον iOS 13 |
| Απρίλιος 2027      | iOS 27 SDK, target iOS 15 |

Ο κανόνας που ενεργοποιεί το ITMS-90725 είναι ο πρώτος. Ένα build με Xcode 16 και iOS 18 SDK δεν γίνεται πλέον δεκτό. Ο δεύτερος αφορά την ελάχιστη έκδοση-στόχο, όχι το SDK. Ο τρίτος έχει ανακοινωθεί για τον Απρίλιο του 2027, χωρίς συγκεκριμένη μέρα στη σελίδα τη στιγμή της καταγραφής. Η Apple ήδη προτείνει να κάνεις compile και test με Xcode 27.

**Αυτή η απαίτηση ανεβαίνει τακτικά, και πάντα την άνοιξη.** Η ίδια σελίδα της Apple κρατά το ιστορικό αρκετών προθεσμιών: Xcode 14.1 στις 25 Απριλίου 2023, Xcode 15 στις 29 Απριλίου 2024, Xcode 26 στις 28 Απριλίου 2026. Πριν από κάθε άνοιξη, ξαναδιάβασέ την αντί να βασίζεσαι σε ένα άρθρο, και σε αυτό μαζί.

## Προειδοποίηση ή μπλοκάρισμα: πώς τα ξεχωρίζεις;

Πριν από την προθεσμία, το ITMS-90725 έρχεται ως προειδοποίηση. Το 2024, στο forum της Apple, το e-mail διευκρίνιζε ότι η παράδοση πέτυχε και συνιστούσε διόρθωση στην επόμενη αποστολή. Μετά την προθεσμία, η Apple γράφει ότι τα apps «πρέπει» να γίνονται compile με το απαιτούμενο SDK για να σταλούν: το build δεν γίνεται πλέον δεκτό.

| Ένδειξη              | Προειδοποίηση        | Μπλοκάρισμα        |
| -------------------- | -------------------- | ------------------ |
| Ημερομηνία αποστολής | Πριν την προθεσμία   | Μετά την προθεσμία |
| Αποστολή δεκτή       | Ναι                  | Όχι                |
| Τι κάνεις            | Διόρθωση στο επόμενο | Νέο build          |

**Μια προειδοποίηση ITMS-90725 είναι αντίστροφη μέτρηση.** Το build περνάει σήμερα, αλλά το επόμενο, αν γίνει compile με τον ίδιο τρόπο, θα απορριφθεί μετά την ημερομηνία. Διόρθωσέ το όσο δεν σε πιέζει κάποιο επείγον update.

## Διόρθωση του ITMS-90725 σε project Expo

Με το EAS, το app σου γίνεται compile στους Mac του Expo, όπως εξηγώ στο [δημοσίευση iOS app χωρίς Mac](https://devoria.fr/el/blog/publish-ios-app-without-mac-expo-eas). Η έκδοση του Xcode εξαρτάται από το build image. Αν δεν ορίσεις `image` στο eas.json, το EAS χρησιμοποιεί το alias `auto`: διαλέγει το image ανάλογα με την έκδοση του Expo SDK σου.

Δες το image που αντιστοιχεί σε κάθε SDK σύμφωνα με την [τεκμηρίωση της υποδομής του EAS](https://docs.expo.dev/build-reference/infrastructure/), ενημερωμένη στις 8 Οκτωβρίου 2026:

| Expo SDK | Xcode του image | ITMS-90725 |
| -------- | --------------- | ---------- |
| 57       | 26.6            | Όχι        |
| 56       | 26.4            | Όχι        |
| 55       | 26.2            | Όχι        |
| 54       | 26.0            | Όχι        |
| 53       | 16.4            | Ναι        |
| 52       | 16.2            | Ναι        |

1. **Δες το image που χρησιμοποίησε το τελευταίο σου build.** Στη σελίδα του build, στο expo.dev, η ενότητα «Spin up build environment» των logs δείχνει το όνομά του και την έκδοση του Xcode.
2. **Αν είσαι σε SDK 54 ή νεότερο, ψάξε για επιβεβλημένο image.** Μια γραμμή `image` που δείχνει σε Xcode 16, όπως `macos-sequoia-15.6-xcode-16.4`, αρκεί για να προκαλέσει το σφάλμα. Η τεκμηρίωση του Expo την παρουσιάζει ως το image του SDK 54 για όσους δεν θέλουν Xcode 26: από τις 28 Απριλίου 2026, αυτή η επιλογή οδηγεί σε απόρριψη. Αφαίρεσε τη γραμμή: το EAS επιστρέφει στο default image.
3. **Αν είσαι σε SDK 53 ή παλαιότερο, ανέβα SDK.** Αυτή είναι η σύσταση του Expo στην [ανακοίνωση της 27ης Απριλίου 2026](https://expo.dev/blog/app-store-connect-minimum-sdk-26): να πας τουλάχιστον στο SDK 54.
4. **Κάνε νέο build και στείλ' το ξανά.** Το SDK είναι κλειδωμένο μέσα στο binary: ένα remote update δεν αλλάζει τίποτα.

### Η προσωρινή λύση για παλιό SDK

Η ίδια ανακοίνωση του Expo δίνει μια επιλογή αν δεν μπορείς να ανέβεις αμέσως: να επιβάλεις ένα image με Xcode 26 στο eas.json, στο production profile σου.

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

Το Expo προειδοποιεί: δεν είναι όλες οι εκδόσεις του SDK συμβατές με το Xcode 26, και το αποτέλεσμα εξαρτάται και από τις βιβλιοθήκες σου. **Δες το ως αναβολή, όχι ως διόρθωση.** Αν το build αποτύχει στο compile, ο μόνος δρόμος μένει η αναβάθμιση του SDK.

### Αναβάθμιση SDK, μία έκδοση τη φορά

Ο [οδηγός αναβάθμισης του Expo](https://docs.expo.dev/workflow/upgrading-expo-sdk-walkthrough/) συνιστά να ανεβαίνεις μία έκδοση τη φορά, για να εντοπίζεις τι σπάει σε κάθε βήμα. Για να πας από SDK 53 σε SDK 54:

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

Αν ο φάκελος `ios` σου παράγεται από το Expo, διάγραψέ τον: θα ξαναδημιουργηθεί στο επόμενο build. Μετά δοκίμασε το app στο iPhone σου πριν προχωρήσεις στην επόμενη έκδοση.

Κάτι που πρέπει να ξέρεις πριν στοχεύσεις στο τελευταίο SDK. Σύμφωνα με τον [πίνακα εκδόσεων του Expo](https://docs.expo.dev/versions/latest/), τα SDK 54 και 55 δέχονται iOS 15.1 και νεότερο, τα SDK 56 και 57 μόνο iOS 16.4 και νεότερο. **Η μετάβαση στο SDK 56 αποκλείει λοιπόν τα iPhone που έμειναν σε iOS 15.** Το SDK 54 αρκεί για να φύγει το ITMS-90725.

## Έλεγχος του SDK ενός build πριν την αποστολή

Το Xcode γράφει στο Info.plist κάθε build το SDK και την έκδοση του Xcode που χρησιμοποιήθηκαν. Κατέβασε το IPA από τη σελίδα του build στο expo.dev και τρέξε στον 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
```

Για build που προορίζεται για το App Store, η πρώτη τιμή πρέπει να ξεκινά με `iphoneos26`. Η δεύτερη κωδικοποιεί την έκδοση του Xcode: σε ένα build του Nolera με Xcode 26.2 για τον simulator, παίρνω `2620`. Αν δεις `iphoneos18` ή τιμή που ξεκινά με `16`, το build θα απορριφθεί.

Αν κάνεις compile στον δικό σου Mac, μετράει το δικό σου Xcode, όχι το image του EAS. Το `xcodebuild -version` δείχνει την ενεργή έκδοση. Ίδια λογική και στο continuous integration: η έκδοση του Xcode εξαρτάται από το μηχάνημα που επιλέγεις. Το 2024, στο forum της Apple, developers έτρωγαν ITMS-90725 επειδή το μηχάνημά τους στο GitHub Actions έτρεχε macOS πολύ παλιό για το Xcode 15.

Μόλις στείλεις το σωστό build, δοκίμασέ το στο [TestFlight](https://devoria.fr/el/blog/testflight-dokimi-efarmogis-iphone) πριν το υποβάλεις. Ένα νέο build περνά ξανά και από review, με τους χρόνους που περιγράφω στο [χρόνος έγκρισης στο App Store](https://devoria.fr/el/blog/xronos-egkrisis-app-store).

## Στείλε το build σου χωρίς δυσάρεστες εκπλήξεις

Το ITMS-90725 προλαμβάνεται σε ένα λεπτό: έλεγξε το image και το SDK πριν από κάθε production build. Οι άλλοι αυτόματοι έλεγχοι θέλουν την ίδια προσοχή, όπως το [ITMS-90683](https://devoria.fr/el/blog/itms-90683-missing-purpose-string-expo) για τα κείμενα αδειών. Οι απορρίψεις από reviewer θέλουν περισσότερη ψυχραιμία: η διαδικασία είναι στη σελίδα [app που απορρίφθηκε από την Apple](https://devoria.fr/el/expertise/app-rejected-by-apple), και οι πιο συχνοί λόγοι στο [γιατί η Apple απορρίπτει ένα app](https://devoria.fr/el/blog/aporripsi-app-apple-app-store-aities).

Για να ελέγξεις τον φάκελό σου πριν την αποστολή, το [Review Kit](https://devoria.fr/el/kits/app-review) συγκεντρώνει τη checklist μου και skills του Claude Code που ελέγχουν το project σου. Αν η αποστολή σου κολλάει και θέλεις ανθρώπινη ματιά, [κλείσε μια ώρα μαζί μου](https://devoria.fr/el/coaching): δουλεύουμε το project σου σε βιντεοκλήση, στη δική σου οθόνη. Κι αν ετοιμάζεις την πρώτη σου κυκλοφορία, [κάνε το δωρεάν διαγνωστικό σου](https://devoria.fr/el/diagnostic): βάζει τα βήματα σε σειρά και σου στέλνει τη checklist μου κατά των απορρίψεων της Apple.

## Συχνές ερωτήσεις

### Το ITMS-90725 με εμποδίζει να δημοσιεύσω το app μου;

Μετά την προθεσμία που έχει ορίσει η Apple, ναι: το build δεν γίνεται πλέον δεκτό και πρέπει να κάνεις compile καινούργιο. Πριν την προθεσμία, είναι προειδοποίηση: το build περνάει, αλλά το επόμενο θα απορριφθεί αν γίνει compile με τον ίδιο τρόπο.

### Πρέπει να εγκαταλείψω τα παλιά iPhone για να κάνω compile με το iOS 26 SDK;

Όχι. Το SDK του compile και η ελάχιστη έκδοση iOS είναι δύο ξεχωριστές ρυθμίσεις. Με το Expo, η έκδοση του Expo SDK σου ορίζει αυτό το ελάχιστο: iOS 15.1 για τα SDK 54 και 55, iOS 16.4 για τα SDK 56 και 57.

### Διορθώνεται το ITMS-90725 με remote update;

Όχι. Το SDK γράφεται στο binary τη στιγμή του compile. Ένα remote update αλλάζει μόνο το JavaScript και τα resources. Πρέπει να κάνεις νέο build με Xcode 26 και να το στείλεις ξανά.

### Πώς ξέρω ποια έκδοση του Xcode χρησιμοποιεί το EAS;

Άνοιξε τα logs του build σου στο expo.dev, ενότητα «Spin up build environment». Το όνομα του image δείχνει την έκδοση του Xcode, για παράδειγμα `macos-tahoe-26.5-xcode-26.6`. Η πλήρης λίστα είναι στην τεκμηρίωση της υποδομής του EAS.

### Τι θα αλλάξει η απαίτηση του Απριλίου 2027;

Σύμφωνα με τη σελίδα υποβολής της Apple, θα πρέπει να κάνεις compile με το iOS 27 SDK και να στοχεύεις τουλάχιστον iOS 15. Από πλευράς EAS, το Expo σχεδιάζει image με Xcode 27 για το μελλοντικό SDK 58: έλεγξε τη λίστα των build images πριν κάνεις compile. Ξαναδιάβασε τη σελίδα της Apple την άνοιξη για να μάθεις την ακριβή ημερομηνία.


## Το project σου

[Review Kit](https://devoria.fr/el/kits/app-review): Η checklist μου για το review του App Store, οι απορρίψεις μου από την Apple διορθωμένες, η checklist του Google Play και τρία skills του Claude Code. 49 €.

[iOS & Android Kit](https://devoria.fr/el/kits/ios): Φτιάξε την εφαρμογή σου για iPhone και Android με το Claude Code: ο αρχικός κώδικας των εφαρμογών μου, η διαδρομή μέχρι τα stores και όλα τα kits. 99 €.

[Διάγνωση: τι σε χωρίζει από την iPhone εφαρμογή σου](https://devoria.fr/el/diagnostic): 7 ερωτήσεις, 60 δευτερόλεπτα: μαθαίνεις τι πραγματικά σε μπλοκάρει για να δημοσιεύσεις την iPhone εφαρμογή σου, τη διαδρομή σου σε 4 βήματα και το kit που σου ταιριάζει.
