# ITMS-90725: как исправить «SDK version issue» в Expo

> ITMS-90725: приложение собрано со слишком старым iOS SDK. С 28 апреля 2026 Apple требует Xcode 26: перейди на Expo SDK 54+ и пересобери билд.

Оригинальная страница: [ITMS-90725: как исправить «SDK version issue» в Expo](https://devoria.fr/ru/blog/itms-90725-sdk-version-issue-expo)
Автор: [Mehdi Azizi](https://devoria.fr/ru/mehdi-azizi)
Опубликовано: 2026-11-04
Последняя правка контента: 2026-11-04


ITMS-90725 означает, что автоматическая проверка Apple не пропустила твой билд: приложение собрано с iOS SDK старее минимально допустимого. На 15 октября 2026 года Apple указывает, что с 28 апреля 2026 года приложения, отправляемые в App Store Connect, должны собираться в Xcode 26 или новее с iOS SDK 26. **В Expo всё решает образ сборки EAS: начиная с Expo SDK 54, образ по умолчанию идёт с Xcode 26.**

Мои приложения Solys, TradaZen и Nolera работают на Expo SDK 57, и в eas.json у них не задан образ принудительно: EAS сам выбирает версию Xcode. Ниже расскажу, как проверить твой проект и что делать, если он на более старой версии.

## Что значит ошибка ITMS-90725?

Сообщение называется «ITMS-90725: SDK version issue». В нём указан SDK, с которым собрано твоё приложение, затем требуемый минимум и версия Xcode, в которой он есть. Например, на форуме разработчиков Apple одно сообщение 2024 года начиналось так: «This app was built with the iOS 16.2 SDK», а дальше шло требование того времени.

SDK это набор библиотек iOS, с которыми Xcode собирает твоё приложение. У каждой версии Xcode свой SDK: в Xcode 26 входит iOS SDK 26. **Собирать со свежим SDK не значит бросать старые iPhone.** Минимальная версия iOS, которую поддерживает приложение, задаётся отдельной настройкой: целевой версией развёртывания (deployment target).

Как и другие ошибки ITMS, это не отказ ревьюера. Проверка автоматическая и касается отправленного бинарника.

## Какую версию 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 SDK 26                |
| 9 сентября 2026 | Минимальная цель iOS 13             |
| Апрель 2027     | iOS SDK 27, минимальная цель iOS 15 |

ITMS-90725 срабатывает из-за первого правила. Билд, собранный в Xcode 16 с iOS SDK 18, больше не принимается. Второе касается минимальной поддерживаемой версии, а не SDK. Третье объявлено на апрель 2027 года, и на момент проверки точного дня на странице не было. Apple уже предлагает собирать и тестировать в Xcode 27.

**Это требование регулярно повышается, и всегда весной.** На той же странице Apple видна история нескольких сроков: Xcode 14.1 с 25 апреля 2023 года, Xcode 15 с 29 апреля 2024 года, Xcode 26 с 28 апреля 2026 года. Перед каждой весной перечитывай её, а не полагайся на статьи, включая эту.

## Предупреждение или блокировка: как отличить?

До наступления срока ITMS-90725 приходит как предупреждение. В 2024 году, судя по форуму Apple, в письме говорилось, что доставка прошла успешно, и советовалось исправить это к следующей отправке. После срока Apple пишет, что приложения «должны» собираться с требуемым SDK, чтобы их можно было отправить: билд больше не принимается.

| Признак       | Предупреждение         | Блокировка  |
| ------------- | ---------------------- | ----------- |
| Дата отправки | До срока               | После срока |
| Билд принят   | Да                     | Нет         |
| Что делать    | Исправить к следующему | Новый билд  |

**Предупреждение ITMS-90725 это обратный отсчёт.** Сегодня билд проходит, но следующий, собранный так же, после этой даты отклонят. Исправь всё, пока тебя не поджимает срочное обновление.

## Как исправить ITMS-90725 в проекте Expo

С EAS приложение собирается на Mac'ах Expo, как я объясняю в статье [опубликовать iOS-приложение без Mac](https://devoria.fr/ru/blog/publish-ios-app-without-mac-expo-eas). Версия Xcode зависит от образа сборки. Если ты не указал `image` в eas.json, EAS использует алиас `auto`: он выбирает образ по твоей версии Expo SDK.

Вот какой образ соответствует каждому SDK по [документации инфраструктуры EAS](https://docs.expo.dev/build-reference/infrastructure/), обновлённой 8 октября 2026 года:

| Expo SDK | Xcode в образе | ITMS-90725 |
| -------- | -------------- | ---------- |
| 57       | 26.6           | Нет        |
| 56       | 26.4           | Нет        |
| 55       | 26.2           | Нет        |
| 54       | 26.0           | Нет        |
| 53       | 16.4           | Да         |
| 52       | 16.2           | Да         |

1. **Посмотри, какой образ использовал твой последний билд.** На странице билда в expo.dev раздел логов «Spin up build environment» показывает название образа и версию Xcode.
2. **Если у тебя SDK 54 или новее, поищи принудительно заданный образ.** Достаточно строки `image`, указывающей на Xcode 16, например `macos-sequoia-15.6-xcode-16.4`, чтобы получить ошибку. В документации Expo он описан как образ SDK 54 для тех, кто не хочет Xcode 26: с 28 апреля 2026 года такой выбор ведёт к отказу. Удали эту строку, и EAS вернётся к образу по умолчанию.
3. **Если у тебя SDK 53 или старше, обнови SDK.** Это рекомендация Expo из [анонса от 27 апреля 2026 года](https://expo.dev/blog/app-store-connect-minimum-sdk-26): перейти как минимум на SDK 54.
4. **Пересобери билд и отправь заново.** SDK зашит в бинарник: удалённое обновление ничего не изменит.

### Временное решение для старого SDK

В том же анонсе Expo предлагает вариант, если обновиться сразу не получается: принудительно задать образ с Xcode 26 в eas.json, в production-профиле.

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

Expo предупреждает: не все версии SDK совместимы с Xcode 26, и результат зависит ещё и от твоих библиотек. **Считай это отсрочкой, а не исправлением.** Если билд падает на компиляции, остаётся только обновить 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, удали её: она пересоздастся при следующем билде. Потом протестируй приложение на своём 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.** Чтобы избавиться от ITMS-90725, хватит SDK 54.

## Как проверить SDK билда перед отправкой

Xcode записывает в Info.plist каждого билда использованные SDK и версию Xcode. Скачай IPA со страницы билда на 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
```

Для билда под App Store первое значение должно начинаться с `iphoneos26`. Второе кодирует версию Xcode: на билде Nolera, собранном в Xcode 26.2 для симулятора, я получаю `2620`. Если видишь `iphoneos18` или значение, начинающееся с `16`, билд отклонят.

Если собираешь на своём Mac, важен твой Xcode, а не образ EAS. `xcodebuild -version` покажет активную версию. В CI та же логика: версия Xcode зависит от выбранной машины. В 2024 году на форуме Apple разработчики получали ITMS-90725, потому что их машина в GitHub Actions работала на слишком старой для Xcode 15 macOS.

Когда правильный билд отправлен, протестируй его в [TestFlight](https://devoria.fr/ru/blog/testflight-testirovanie-iphone-prilozheniya) до отправки на проверку. Новый билд тоже проходит ревью, со сроками, описанными в статье [сроки проверки App Store](https://devoria.fr/ru/blog/sroki-proverki-app-store-skolko-zhdat).

## Как отправить билд без неприятных сюрпризов

ITMS-90725 предотвращается за минуту: проверяй образ и SDK перед каждым production-билдом. Другие автоматические проверки требуют такой же внимательности, например [ITMS-90683](https://devoria.fr/ru/blog/itms-90683-missing-purpose-string-expo) для текстов запроса разрешений. С отказами ревьюера нужно разбираться вдумчивее: порядок действий описан на странице [приложение отклонено Apple](https://devoria.fr/ru/expertise/app-rejected-by-apple), а самые частые причины собраны в статье [почему Apple отклоняет приложения](https://devoria.fr/ru/blog/otkaz-apple-app-store-prichiny).

Чтобы проверить проект перед отправкой, в [Review Kit](https://devoria.fr/ru/kits/app-review) есть мой чек-лист и skills для Claude Code, которые просматривают твой проект. Если отправка застряла и нужен взгляд живого человека, [забронируй час со мной](https://devoria.fr/ru/coaching): разберём твой проект по видеосвязи, прямо на твоём экране. А если готовишь первый релиз, [пройди бесплатную диагностику](https://devoria.fr/ru/diagnostic): она расставит шаги по порядку и пришлёт тебе мой чек-лист против отказов Apple.

## Частые вопросы

### Мешает ли ITMS-90725 опубликовать приложение?

После срока, установленного Apple, да: билд больше не принимается, и нужно собрать новый. До срока это предупреждение: билд проходит, но следующий отклонят, если собрать его так же.

### Нужно ли отказываться от старых iPhone, чтобы собирать с iOS SDK 26?

Нет. SDK сборки и минимальная версия iOS это две разные настройки. В Expo этот минимум определяет твоя версия Expo SDK: iOS 15.1 для SDK 54 и 55, iOS 16.4 для SDK 56 и 57.

### Можно ли исправить ITMS-90725 удалённым обновлением?

Нет. SDK записывается в бинарник при компиляции. Удалённое обновление меняет только JavaScript и ресурсы. Нужно пересобрать билд в Xcode 26 и отправить его заново.

### Как узнать, какую версию Xcode использует EAS?

Открой логи билда на expo.dev, раздел «Spin up build environment». Название образа показывает версию Xcode, например `macos-tahoe-26.5-xcode-26.6`. Полный список есть в документации инфраструктуры EAS.

### Что изменит требование апреля 2027 года?

Согласно странице отправки Apple, нужно будет собирать с iOS SDK 27 и поддерживать минимум iOS 15. Со стороны EAS Expo планирует образ с Xcode 27 для будущего SDK 58: проверь список образов сборки перед компиляцией. Весной перечитай страницу Apple, чтобы узнать точную дату.


## Твой проект

[Review Kit](https://devoria.fr/ru/kits/app-review): Мой чек-лист для ревью в App Store, исправленные отказы Apple, чек-лист для Google Play и три скилла для Claude Code. 55 $.

[iOS & Android Kit](https://devoria.fr/ru/kits/ios): Создай своё приложение для iPhone и Android с Claude Code: стартовый код моих приложений, путь до публикации в сторах и все киты. 109 $.

[Диагностика: что отделяет тебя от твоего iPhone-приложения](https://devoria.fr/ru/diagnostic): 7 вопросов, 60 секунд: ты узнаешь, что на самом деле мешает тебе опубликовать iPhone-приложение, получишь путь из 4 этапов и подходящий тебе кит.
