ITMS-90725: atasi “SDK version issue” di Expo
Oleh Mehdi Azizi
Terbit , 7 mnt
ITMS-90725: app dikompilasi dengan SDK iOS lama. Sejak 28 April 2026 Apple mewajibkan Xcode 26: pakai SDK Expo 54 ke atas, lalu build ulang.
ITMS-90725 adalah pemeriksaan otomatis Apple pada build kamu: artinya app dikompilasi dengan SDK iOS yang lebih lama dari batas minimum. Per 15 Oktober 2026, Apple menyatakan bahwa sejak 28 April 2026, app yang dikirim ke App Store Connect harus dikompilasi dengan Xcode 26 atau lebih baru dan SDK iOS 26. Di Expo, semuanya ditentukan oleh image build EAS: mulai SDK Expo 54, image yang dipilih secara default sudah membawa Xcode 26.
App-app saya, Solys, TradaZen, dan Nolera, memakai SDK 57 Expo, tanpa image yang dipaksakan di eas.json: EAS sendiri yang memilih versi Xcode. Berikut cara mengecek punyamu, dan apa yang harus dilakukan kalau proyekmu masih versi lama.
Apa arti error ITMS-90725?
Judul pesannya "ITMS-90725: SDK version issue". Isinya menyebut SDK yang dipakai untuk mengompilasi app kamu, lalu batas minimum yang diwajibkan dan versi Xcode yang memuatnya. Di forum developer Apple, ada pesan dari 2024 yang misalnya diawali begini: "This app was built with the iOS 16.2 SDK", diikuti persyaratan yang berlaku saat itu.
SDK adalah kumpulan library iOS yang dipakai Xcode untuk mengompilasi app kamu. Setiap versi Xcode membawa SDK-nya sendiri: Xcode 26 berisi SDK iOS 26. Mengompilasi dengan SDK terbaru tidak berarti meninggalkan iPhone lama. Versi iOS minimum yang didukung app kamu adalah pengaturan terpisah, yaitu deployment target.
Seperti error ITMS lainnya, ini bukan penolakan dari reviewer. Pemeriksaannya otomatis dan menyasar binary yang dikirim.
Versi Xcode berapa yang diwajibkan Apple sekarang?
Ini isi halaman persyaratan mendatang Apple dan halaman pengiriman ke App Store, dicek pada 15 Oktober 2026:
| Tanggal | Persyaratan |
|---|---|
| 28 April 2026 | Xcode 26, SDK iOS 26 |
| 9 September 2026 | Target minimal iOS 13 |
| April 2027 | SDK iOS 27, target iOS 15 |
Aturan yang memicu ITMS-90725 adalah yang pertama. Build yang dibuat dengan Xcode 16 dan SDK iOS 18 sudah tidak diterima. Yang kedua menyangkut versi minimum yang ditargetkan, bukan SDK. Yang ketiga diumumkan untuk April 2027, tanpa tanggal pasti di halaman itu saat saya cek. Apple sudah menganjurkan untuk mengompilasi dan menguji dengan Xcode 27.
Persyaratan ini naik secara berkala, dan selalu di musim semi. Halaman Apple yang sama menyimpan jejak beberapa tenggat: Xcode 14.1 pada 25 April 2023, Xcode 15 pada 29 April 2024, Xcode 26 pada 28 April 2026. Sebelum setiap musim semi, baca ulang halaman itu daripada mengandalkan artikel, termasuk artikel ini.
Peringatan atau blokir: bagaimana membedakannya?
Sebelum tenggat, ITMS-90725 datang sebagai peringatan. Pada 2024, di forum Apple, email-nya menyebut bahwa pengiriman berhasil dan menyarankan perbaikan di pengiriman berikutnya. Setelah tenggat, Apple menulis bahwa app "harus" dikompilasi dengan SDK yang diwajibkan agar bisa dikirim: build tidak lagi diterima.
| Petunjuk | Peringatan | Blokir |
|---|---|---|
| Tanggal pengiriman | Sebelum tenggat | Setelah tenggat |
| Pengiriman diterima | Ya | Tidak |
| Yang kamu lakukan | Perbaiki di build berikutnya | Build baru |
Peringatan ITMS-90725 adalah hitung mundur. Build hari ini lolos, tapi build berikutnya yang dikompilasi dengan cara sama akan ditolak setelah tanggal itu. Perbaiki selagi kamu belum dikejar update mendesak.
Memperbaiki ITMS-90725 di proyek Expo
Dengan EAS, app kamu dikompilasi di Mac milik Expo, seperti yang saya jelaskan di publikasi app iOS tanpa Mac. Versi Xcode bergantung pada image build. Kalau kamu tidak menentukan image di eas.json, EAS memakai alias auto: ia memilih image sesuai versi SDK Expo kamu.
Berikut image untuk tiap SDK menurut dokumentasi infrastruktur EAS, diperbarui 8 Oktober 2026:
| SDK Expo | Xcode di image | ITMS-90725 |
|---|---|---|
| 57 | 26.6 | Tidak |
| 56 | 26.4 | Tidak |
| 55 | 26.2 | Tidak |
| 54 | 26.0 | Tidak |
| 53 | 16.4 | Ya |
| 52 | 16.2 | Ya |
- Lihat image yang dipakai build terakhirmu. Di halaman build di expo.dev, bagian "Spin up build environment" pada log menampilkan nama image dan versi Xcode-nya.
- Kalau kamu di SDK 54 ke atas, cari image yang dipaksakan. Satu baris
imageyang mengarah ke Xcode 16, sepertimacos-sequoia-15.6-xcode-16.4, sudah cukup untuk memicu error. Dokumentasi Expo menyebutnya sebagai image SDK 54 untuk yang tidak mau Xcode 26: sejak 28 April 2026, pilihan ini berujung penolakan. Hapus baris itu: EAS kembali ke image default. - Kalau kamu di SDK 53 atau lebih lama, naikkan SDK. Ini rekomendasi Expo dalam pengumuman 27 April 2026: naik minimal ke SDK 54.
- Build ulang dan kirim lagi. SDK sudah tertanam di binary: update jarak jauh tidak mengubah apa pun.
Solusi darurat untuk SDK lama
Pengumuman Expo yang sama memberi opsi kalau kamu belum bisa naik sekarang: paksa image Xcode 26 di eas.json, di profil production kamu.
{
"build": {
"production": {
"ios": {
"image": "macos-sequoia-15.6-xcode-26.2"
}
}
}
}
Expo memperingatkan: tidak semua versi SDK kompatibel dengan Xcode 26, dan hasilnya juga bergantung pada library kamu. Anggap ini penundaan, bukan perbaikan. Kalau build gagal saat kompilasi, satu-satunya jalan tetap naik SDK.
Naik SDK, satu versi demi satu versi
Panduan upgrade Expo menyarankan naik satu versi setiap kali, supaya kamu tahu apa yang rusak di tiap tahap. Untuk naik dari SDK 53 ke SDK 54:
npm install expo@^54.0.0
npx expo install --fix
npx expo-doctor
Kalau folder ios kamu dibuat oleh Expo, hapus saja: folder itu akan dibuat ulang di build berikutnya. Lalu tes app di iPhone kamu sebelum lanjut ke versi berikutnya.
Satu hal yang perlu diketahui sebelum mengincar SDK terbaru. Menurut tabel versi Expo, SDK 54 dan 55 mendukung iOS 15.1 ke atas, sedangkan SDK 56 dan 57 hanya iOS 16.4 ke atas. Jadi naik ke SDK 56 akan meninggalkan iPhone yang masih di iOS 15. SDK 54 sudah cukup untuk menghilangkan ITMS-90725.
Mengecek SDK sebuah build sebelum dikirim
Xcode mencatat SDK dan versi Xcode yang dipakai di Info.plist setiap build. Unduh IPA dari halaman build di expo.dev, lalu jalankan di Mac kamu:
unzip -q MonApp.ipa -d ipa
plutil -extract DTSDKName raw ipa/Payload/*.app/Info.plist
plutil -extract DTXcode raw ipa/Payload/*.app/Info.plist
Untuk build App Store, nilai pertama harus diawali iphoneos26. Nilai kedua mengodekan versi Xcode: pada build Nolera yang dibuat dengan Xcode 26.2 untuk simulator, saya mendapat 2620. Kalau kamu melihat iphoneos18 atau nilai yang diawali 16, build akan ditolak.
Kalau kamu mengompilasi di Mac sendiri, yang dihitung adalah Xcode kamu, bukan image EAS. xcodebuild -version menampilkan versi yang aktif. Logikanya sama di continuous integration: versi Xcode bergantung pada mesin yang dipilih. Pada 2024, di forum Apple, beberapa developer kena ITMS-90725 karena mesin GitHub Actions mereka berjalan di macOS yang terlalu lama untuk Xcode 15.
Setelah build yang benar terkirim, tes dulu di TestFlight sebelum diajukan. Build baru juga melewati review lagi, dengan durasi yang dijelaskan di lama review App Store.
Kirim build tanpa kejutan
ITMS-90725 bisa dicegah dalam satu menit: cek image dan SDK sebelum setiap build production. Pemeriksaan otomatis lainnya butuh ketelitian yang sama, seperti ITMS-90683 untuk kalimat izin akses. Penolakan dari reviewer butuh pendekatan lebih matang: langkah-langkahnya ada di halaman app ditolak Apple, dan alasan paling umum ada di kenapa Apple menolak app.
Untuk mengecek proyekmu sebelum dikirim, Review Kit berisi checklist saya dan skill Claude Code yang membaca ulang proyekmu. Kalau pengirimanmu macet dan kamu butuh pendapat manusia, pesan satu jam dengan saya: kita bedah proyekmu lewat video call, di layarmu. Dan kalau kamu sedang menyiapkan rilis pertama, ikuti diagnostic gratis: langkah-langkahnya disusun berurutan dan kamu dapat checklist anti-penolakan Apple dari saya.
Pertanyaan umum
Apakah ITMS-90725 menghalangi app saya dipublikasikan?
Setelah tenggat dari Apple, ya: build tidak lagi diterima dan kamu harus mengompilasi build baru. Sebelum tenggat, ini hanya peringatan: build lolos, tapi build berikutnya akan ditolak kalau dikompilasi dengan cara yang sama.
Apakah harus meninggalkan iPhone lama untuk mengompilasi dengan SDK iOS 26?
Tidak. SDK kompilasi dan versi iOS minimum adalah dua pengaturan terpisah. Di Expo, versi SDK Expo kamu yang menentukan batas minimum itu: iOS 15.1 untuk SDK 54 dan 55, iOS 16.4 untuk SDK 56 dan 57.
Bisakah ITMS-90725 diperbaiki dengan update jarak jauh?
Tidak. SDK ditanam di binary saat kompilasi. Update jarak jauh hanya mengubah JavaScript dan aset. Kamu harus build ulang dengan Xcode 26 lalu mengirimnya lagi.
Bagaimana cara tahu versi Xcode yang dipakai EAS?
Buka log build kamu di expo.dev, bagian "Spin up build environment". Nama image menunjukkan versi Xcode, misalnya macos-tahoe-26.5-xcode-26.6. Daftar lengkapnya ada di dokumentasi infrastruktur EAS.
Apa yang akan berubah dengan persyaratan April 2027?
Menurut halaman pengiriman Apple, kamu harus mengompilasi dengan SDK iOS 27 dan menargetkan minimal iOS 15. Di sisi EAS, Expo menyiapkan image dengan Xcode 27 untuk SDK 58 mendatang: cek daftar image build sebelum mengompilasi. Baca ulang halaman Apple di musim semi untuk tahu tanggal pastinya.

