ITMS-90725の直し方:ExpoのSDKエラー対処
著者:Mehdi Azizi
公開・7 分
ITMS-90725は古いiOS SDKでのビルドが原因です。Expo SDK 54以上に上げて再ビルドすれば解決します。
ITMS-90725は、Appleがビルドに対して行う自動チェックです。アプリが、求められる最低バージョンより古いiOS SDKでビルドされていることを示しています。2026年10月15日時点のAppleの案内では、2026年4月28日以降、App Store Connectに送るアプリはXcode 26以降とiOS 26 SDKでビルドする必要があります。Expoの場合、すべてはEASのビルドイメージで決まります。Expo SDK 54以降では、デフォルトで選ばれるイメージにXcode 26が入っています。
僕のアプリ、Solys、TradaZen、NoleraはExpo SDK 57で、eas.jsonでイメージを固定していません。XcodeのバージョンはEASが自分で選びます。ここでは、あなたのプロジェクトの確認方法と、プロジェクトが古い場合の対処法を説明します。
ITMS-90725エラーとは何ですか?
メッセージのタイトルは「ITMS-90725: SDK version issue」です。アプリがビルドされたSDK、求められる最低バージョン、そしてそれを含むXcodeのバージョンが書かれています。たとえばAppleの開発者フォーラムにある2024年の投稿では、メッセージは「This app was built with the iOS 16.2 SDK」で始まり、その後に当時の要件が続いていました。
SDKとは、XcodeがアプリをビルドするときにつかうiOSのライブラリ一式のことです。Xcodeの各バージョンにはそれぞれのSDKが入っていて、Xcode 26にはiOS 26 SDKが含まれます。新しいSDKでビルドしても、古いiPhoneを切り捨てることにはなりません。 アプリが対応する最低iOSバージョンは、デプロイメントターゲットという別の設定です。
ほかのITMSエラーと同じく、これはレビュアーによるリジェクトではありません。送信したバイナリに対する自動チェックです。
現在Appleが求めているXcodeのバージョンは?
2026年10月15日時点で、Appleの今後の要件のページとApp Storeへの提出のページには次のように書かれています。
| 日付 | 要件 |
|---|---|
| 2026年4月28日 | Xcode 26、iOS 26 SDK |
| 2026年9月9日 | ターゲットはiOS 13以上 |
| 2027年4月 | iOS 27 SDK、ターゲットはiOS 15以上 |
ITMS-90725を引き起こすのは1つ目のルールです。Xcode 16とiOS 18 SDKで作ったビルドは、もう受け付けられません。2つ目はSDKではなく、対象とする最低バージョンについてのルールです。3つ目は2027年4月と発表されていますが、確認した時点ではページに正確な日付はありませんでした。Appleはすでに、Xcode 27でのビルドとテストを勧めています。
この要件は定期的に引き上げられ、いつも春に来ます。 同じAppleのページには過去の期限も残っています。2023年4月25日にXcode 14.1、2024年4月29日にXcode 15、2026年4月28日にXcode 26です。毎年春の前には、記事(この記事も含めて)を鵜呑みにせず、このページを読み直してください。
警告かブロックか:どう見分けますか?
期限の前は、ITMS-90725は警告として届きます。2024年のAppleのフォーラムでは、メールに「配信は成功した」と書かれ、次回の送信で修正するよう勧めていました。期限を過ぎると、Appleはアプリを送信するには指定のSDKでビルド「しなければならない」と書いています。つまりビルドは受け付けられません。
| 手がかり | 警告 | ブロック |
|---|---|---|
| 送信日 | 期限より前 | 期限より後 |
| 送信の受け付け | される | されない |
| やること | 次回までに修正 | 新しくビルド |
ITMS-90725の警告はカウントダウンです。 今日のビルドは通りますが、同じ方法でビルドした次のビルドは期限後にリジェクトされます。急ぎのアップデートに追われていないうちに直しておきましょう。
ExpoプロジェクトでITMS-90725を直す
EASでは、MacなしでiOSアプリを公開するで説明しているとおり、アプリはExpoのMac上でビルドされます。Xcodeのバージョンはビルドイメージで決まります。eas.jsonでimageを指定しなければ、EASはautoエイリアスを使い、Expo SDKのバージョンに応じてイメージを選びます。
2026年10月8日に更新されたEASインフラのドキュメントによると、各SDKに対応するイメージは次のとおりです。
| Expo SDK | イメージのXcode | ITMS-90725 |
|---|---|---|
| 57 | 26.6 | なし |
| 56 | 26.4 | なし |
| 55 | 26.2 | なし |
| 54 | 26.0 | なし |
| 53 | 16.4 | あり |
| 52 | 16.2 | あり |
- 直近のビルドで使われたイメージを確認します。 expo.devのビルドページで、ログの「Spin up build environment」セクションにイメージ名とXcodeのバージョンが表示されます。
- SDK 54以上なら、イメージが固定されていないか探します。
macos-sequoia-15.6-xcode-16.4のようにXcode 16を指すimageの行が1行あるだけで、このエラーが出ます。Expoのドキュメントでは、これはXcode 26を使いたくない人向けのSDK 54のイメージとして紹介されていますが、2026年4月28日以降、この選択はリジェクトにつながります。この行を削除すれば、EASはデフォルトのイメージに戻ります。 - SDK 53以下なら、SDKを上げます。 これはExpoの2026年4月27日のお知らせでの推奨で、少なくともSDK 54に上げることとされています。
- ビルドし直して、再送信します。 SDKはバイナリに固定されているので、リモートアップデートでは何も変わりません。
古いSDKのための応急処置
同じExpoのお知らせでは、すぐにSDKを上げられない場合の選択肢も紹介されています。eas.jsonのproductionプロファイルで、Xcode 26のイメージを固定する方法です。
{
"build": {
"production": {
"ios": {
"image": "macos-sequoia-15.6-xcode-26.2"
}
}
}
}
Expoは、すべてのSDKバージョンがXcode 26に対応しているわけではなく、結果は使っているライブラリにも左右されると注意しています。これは修正ではなく、猶予と考えてください。 コンパイルでビルドが失敗するなら、残る道はSDKを上げることだけです。
SDKは1バージョンずつ上げる
Expoのアップグレードガイドでは、各段階で何が壊れたかを見つけやすいように、1バージョンずつ上げることを勧めています。SDK 53からSDK 54に上げるには次のようにします。
npm install expo@^54.0.0
npx expo install --fix
npx expo-doctor
iosフォルダをExpoが生成しているなら、削除してください。次のビルドで作り直されます。そのうえで、次のバージョンに進む前にiPhoneでアプリをテストしましょう。
最新のSDKを目指す前に、知っておきたい点がひとつあります。Expoのバージョン表によると、SDK 54と55はiOS 15.1以上、SDK 56と57はiOS 16.4以上にしか対応していません。つまりSDK 56に上げると、iOS 15のままのiPhoneは対象外になります。 ITMS-90725を解消するだけならSDK 54で十分です。
送信前にビルドのSDKを確認する
Xcodeは各ビルドのInfo.plistに、使ったSDKとXcodeのバージョンを書き込みます。expo.devのビルドページからIPAをダウンロードし、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
App Store向けのビルドなら、1つ目の値はiphoneos26で始まっている必要があります。2つ目はXcodeのバージョンを表します。Xcode 26.2でシミュレータ向けに作ったNoleraのビルドでは2620になりました。iphoneos18や16で始まる値が出たら、そのビルドはリジェクトされます。
自分のMacでビルドしている場合、関係するのはEASのイメージではなく、あなたのXcodeです。xcodebuild -versionで有効なバージョンを確認できます。CIでも考え方は同じで、Xcodeのバージョンは選んだマシンで決まります。2024年のAppleのフォーラムでは、GitHub ActionsのマシンがXcode 15には古すぎるmacOSで動いていたために、ITMS-90725を受けた開発者がいました。
正しいビルドを送ったら、提出前にTestFlightでテストしましょう。新しいビルドは審査も通り直します。かかる時間はApp Storeの審査期間にまとめています。
想定外のトラブルなしでビルドを送るために
ITMS-90725は1分で防げます。本番ビルドの前に、毎回イメージとSDKを確認するだけです。ほかの自動チェックにも同じ丁寧さが必要で、たとえば権限の説明文に関するITMS-90683があります。レビュアーによるリジェクトには、もう少し落ち着いた対応が必要です。進め方はAppleにリジェクトされたアプリのページに、よくある理由はAppleがアプリをリジェクトする理由にまとめています。
送信前にプロジェクトを確認するなら、Review Kitに僕のチェックリストと、プロジェクトを見直すClaude Codeのスキルをまとめています。送信で詰まっていて、人の目で見てほしいなら、僕と1時間のセッションを予約してください。ビデオ通話で、あなたの画面を見ながらプロジェクトを一緒に見直します。初めてのリリースを準備しているなら、無料診断を受けてください。やるべきステップを順番に整理し、Appleのリジェクト対策チェックリストもお送りします。
よくある質問
ITMS-90725があるとアプリを公開できませんか?
Appleが定めた期限を過ぎていれば、はい。ビルドは受け付けられず、新しくビルドする必要があります。期限前なら警告です。ビルドは通りますが、同じ方法でビルドした次のビルドはリジェクトされます。
iOS 26 SDKでビルドするには古いiPhoneを切り捨てる必要がありますか?
いいえ。ビルドに使うSDKと最低iOSバージョンは別々の設定です。Expoでは、その最低バージョンはExpo SDKのバージョンで決まります。SDK 54と55はiOS 15.1、SDK 56と57はiOS 16.4です。
リモートアップデートでITMS-90725を直せますか?
いいえ。SDKはビルド時にバイナリに書き込まれます。リモートアップデートで変わるのはJavaScriptとリソースだけです。Xcode 26でビルドし直して、再送信する必要があります。
EASが使っているXcodeのバージョンはどう確認しますか?
expo.devでビルドのログを開き、「Spin up build environment」セクションを見てください。イメージ名にXcodeのバージョンが入っています。たとえばmacos-tahoe-26.5-xcode-26.6です。完全な一覧はEASインフラのドキュメントにあります。
2027年4月の要件で何が変わりますか?
Appleの提出ページによると、iOS 27 SDKでビルドし、iOS 15以上をターゲットにする必要があります。EAS側では、Expoが今後のSDK 58向けにXcode 27のイメージを予定しています。ビルドの前にビルドイメージの一覧を確認してください。正確な日付は、春にAppleのページを読み直して確かめましょう。

