App Store Upload Errors: 18 ITMS-90xxx Error Codes and Fixes
Most ITMS-90xxx and ITMS-91xxx upload errors need a higher build number, a fixed Info.plist or icon, or a privacy manifest. 18 codes with causes and fixes.
App Store upload errors such as ITMS-90xxx and ITMS-91xxx mean Apple’s automated checks found a problem in your .ipa, and the email or upload tool names the code. Most are fixed by one of three changes: a higher version or build number, a corrected Info.plist or icon, or a complete privacy manifest. Find your code in the main table below, apply the fix, then raise the build number and upload again.
This article covers what 18 common error codes mean, why they happen and how to fix them, with a section per group. Apple’s official documentation is the authority, as of October 2026.
Is it an error or a warning?
Upload checks produce two kinds of results.
- ERROR. The build is rejected and never appears in App Store Connect. Fix it and upload again.
- WARNING, or an “issues” notice in the email. The build is accepted and you can keep testing, but fix it before your next upload. Some notices turn into rejections after a deadline, as several privacy manifest checks did.
The same code can move from warning to error over time, so go by the exact wording in the email.
18 ITMS error codes at a glance
| Error code | Meaning | Most common cause | Fix |
|---|---|---|---|
| ITMS-90189 | Redundant Binary Upload | A build with this build number was already uploaded for this version | Increase the build number |
| ITMS-90062 | The version must be higher than the approved version | The version is equal to or lower than an approved version | Increase the version number |
| ITMS-90186 | Invalid Pre-Release Train | This version is already on the App Store and accepts no new builds | Increase the version number |
| ITMS-90060 | Invalid version number format | The version has more than three parts or contains letters | Use a format like 1.2.3 |
| ITMS-90717 | Invalid App Store icon | The 1024 icon has transparency or an alpha channel | Export a PNG without alpha |
| ITMS-90022 | Missing required icon file | The iPhone 120×120 icon is missing, or the asset catalog isn’t in the bundle | Complete AppIcon and check that the asset catalog is in the target |
| ITMS-90713 | CFBundleIconName missing from Info.plist | The icon set name doesn’t match Info.plist | Set the app icon set name |
| ITMS-90683 | Missing purpose string in Info.plist | Your code or an SDK calls a protected API | Add the matching NS…UsageDescription |
| ITMS-90474 | iPad multitasking requires all orientations | The app supports iPad but only some orientations | Enable all four orientations or set UIRequiresFullScreen |
| ITMS-90078 | Missing push notification entitlement | The app registers for push but the signature lacks aps-environment |
Enable the push capability or remove the push code |
| ITMS-91053 | Missing API declaration | An API such as UserDefaults isn’t declared in the privacy manifest | Declare the reason in PrivacyInfo.xcprivacy |
| ITMS-91061 | Missing privacy manifest for a third-party SDK | A dependency is too old | Update the SDK to a version with a privacy manifest |
| ITMS-91056 | Invalid privacy manifest | A key, type or reason code is wrong | Correct it using the official keys and values |
| ITMS-90725 | SDK version too old | Built with an older SDK | Build again with the iOS 26 SDK |
| ITMS-90087 | Unsupported architectures | A framework includes simulator architectures x86_64 or i386 | Use a device-only framework or an XCFramework |
| ITMS-90338 | Non-public API usage | Your code or a static library contains private symbols | Rename, update or remove the library |
| ITMS-90034 | Missing or invalid signature | Not signed with an Apple submission certificate | Build again with an Apple Distribution certificate |
| ITMS-90035 | Invalid Signature | Signed with a development or Ad Hoc certificate, or the bundle was modified | Sign again with a Distribution certificate and an App Store profile |
How do you fix version and build number errors?
App Store Connect uses two numbers to tell builds apart. The version, CFBundleShortVersionString, is what the store shows, such as 1.0 or 1.2.1. The build number, CFBundleVersion, distinguishes uploads of the same version.
ITMS-90189 Redundant Binary Upload
Meaning. A build with the same build number has already been uploaded for this version. You can’t reuse the number even if the earlier upload failed or the build was deleted.
Fix. Increase only the build number, for example from 5 to 6, then build and upload again. To increment it automatically, see Auto-increment build numbers and upload .ipa files with an App Store Connect API key.
ITMS-90062 The version must be higher
Meaning. The version must be higher than the last approved version. You can upload several builds for one version, but you can’t reuse a version that has been released.
Fix. Increase the version. For example, after 1.2 is released, use 1.2.1 or 1.3 next.
ITMS-90186 Invalid Pre-Release Train
Meaning. This version’s train no longer accepts new builds, usually because the version is already on the App Store.
Fix. As with 90062, use a higher version number. Increasing only the build number doesn’t help.
ITMS-90060 Invalid version number format
Meaning. The version can only be up to three non-negative integers separated by periods. 2.6.0.0 and 3.4.2b6 are invalid, while 1.0 and 4.2.1 are valid.
Fix. Use up to three parts, digits only. Put test labels in the build number or branch name, not in the version.
Change it in KXBuild
When you use KXBuild on Windows or Linux, change Marketing Version (the version) and Current Project Version (the build number) on the General page of the Project Settings Editor. To override them for one build, pass them on the command line.
1kxbuild build .\MyApp.xcodeproj -c Release --export app-store -D MARKETING_VERSION=1.2.1 -D CURRENT_PROJECT_VERSION=6
How do you fix icon upload errors?
ITMS-90717 Invalid App Store icon
Meaning. The 1024×1024 App Store icon in the asset catalog can’t be transparent or have an alpha channel.
Cause. Most often you drew rounded corners yourself, leaving the corners transparent. Some export tools also add alpha by default even when the image looks opaque.
Fix. Add a solid background and turn off transparency or alpha when exporting. The system rounds the corners for you, so keep the source image square-cornered.
ITMS-90022 Missing required icon
Meaning. The bundle has no 120×120 iPhone icon. This usually means AppIcon is incomplete or the asset catalog wasn’t compiled into the bundle.
Fix. Check that AppIcon has a 1024 image (single size) or every size filled in, and that Assets.xcassets belongs to the app target. If the app is iPhone-only, remove empty iPad icon entries from Info.plist.
ITMS-90713 Missing CFBundleIconName
Meaning. The built Info.plist has no CFBundleIconName. When the icon comes from an asset catalog, this key must equal the icon set name, AppIcon by default.
Fix. Check that the project’s app icon set name matches the icon set in the asset catalog. The build writes the key from it.
Change it in KXBuild
Open the Asset Catalog Editor, right-click AppIcon and choose Fill All Sizes from 1024×1024 Image…. The editor flags an App Store icon with alpha or a missing 1024 icon in the Problems panel. Before uploading, click KXBuild: Compile-check Asset Catalog in the editor title bar to check again with the real compile rules. Change the icon set name in App Icon Set Name on the General page of the Project Settings Editor. If you use an Xcode 26 .icon icon document, see Icon Document Editor.
How do you fix Info.plist and permission errors?
ITMS-90683 Missing purpose string
Meaning. The binary calls an API that needs user permission, such as the camera, photos, location, microphone, contacts or Bluetooth, but Info.plist has no matching NS…UsageDescription. The email names the missing key.
Cause. Besides your own code, a third-party SDK that references these APIs also triggers it, even if you never call them. Extensions such as widgets and App Clips have their own Info.plist, and the main app’s keys don’t cover them.
Fix. Add a purpose string for each key named in the email, describing the specific use. For how to write each key, see Info.plist usage descriptions. If you localize the strings, keep a copy in the base Info.plist too.
ITMS-90474 iPad multitasking requires all orientations
Meaning. The app supports iPad multitasking but doesn’t enable all four orientations.
Fix. Choose one. Enable Portrait, Upside Down, Landscape Left and Landscape Right for iPad, or add a Boolean UIRequiresFullScreen set to YES in Info.plist to opt out of multitasking. If the app is iPhone-only, set the device family to iPhone only.
ITMS-90078 Missing push notification entitlement
Meaning. The app registers for remote notifications, but its signature has no aps-environment entitlement.
Fix. If you use push, enable Push Notifications for the App ID on the developer website, regenerate the provisioning profiles and add aps-environment to the entitlements file. See iOS push notifications with APNs, from p8 key to your first push. If you don’t use push, find the third-party SDK that registers for it and update or remove it.
Change it in KXBuild
If the project has an Info.plist file, double-click it to open the Property List Editor and add the purpose string keys as String values. If the project generates Info.plist, create an Info.plist in the app’s source folder with these keys, then enter its path in Info.plist File on the General page of the Project Settings Editor. The build merges it with the generated keys. iPad orientations, device family and the entitlements file are on the General page too.
What do ITMS-91xxx privacy manifest errors mean?
ITMS-91053 Missing API declaration
Meaning. The app or an SDK in it uses a required reason API without declaring the reason in NSPrivacyAccessedAPITypes in the privacy manifest. The email lists the API category, such as NSPrivacyAccessedAPICategoryUserDefaults.
Rule. Apple’s documentation states that since May 1, 2024, App Store Connect doesn’t accept apps that don’t describe their use of required reason APIs in a privacy manifest.
Fix. In the app’s PrivacyInfo.xcprivacy, add a reason code for each category, such as CA92.1 for UserDefaults. For the file structure and all common reason codes, see Write an iOS privacy manifest (PrivacyInfo.xcprivacy) and declare required reason APIs. When the listed categories come from a third-party SDK, update the SDK rather than adding them to your own manifest.
ITMS-91061 Missing privacy manifest for a third-party SDK
Meaning. The app contains an SDK from Apple’s list of commonly used third-party SDKs, but that SDK doesn’t include a privacy manifest. The list includes Alamofire, the Firebase family, Flutter, hermes, Kingfisher, SDWebImage, Lottie and a number of Flutter plugins.
Rule. Apple’s documentation states that since February 12, 2025, apps submitted for review must include a valid privacy manifest for these SDKs. It applies to new apps that include a listed SDK and to updates that add one. SDKs included as binaries also have to be signed.
Fix. Using the SDK names and paths in the email, update your CocoaPods, Swift packages and Flutter plugins to versions that include PrivacyInfo.xcprivacy.
ITMS-91056 Invalid privacy manifest
Meaning. A PrivacyInfo.xcprivacy in the bundle contains an unknown key or value, or isn’t a valid plist. The email gives the file path. Apple’s TN3181 states that since November 12, 2024, apps submitted for review must include valid privacy manifests.
Common causes. A misspelled category or reason code, NSPrivacyTracking set to true with an empty tracking domains array, NSPrivacyTracking set to false with tracking domains listed, or an empty item left in an array.
Fix. If the path is in your app, correct it using the official keys and values. If it’s in an SDK, update that SDK.
SDK version and binary architecture errors
ITMS-90725 SDK version too old
Meaning. The build used an SDK older than the minimum Apple currently requires.
Rule. As of October 2026, Apple’s Upcoming requirements states that since April 28, 2026, apps uploaded to App Store Connect must be built with Xcode 26 or later using the iOS 26 SDK. In addition, since September 9, 2026, uploaded iOS and iPadOS apps must have a minimum deployment target of iOS 13 or later.
Fix. Build again with the iOS 26 SDK or later. The SDK version decides which APIs you build against, while the deployment target decides the oldest iOS version you support, and the two can differ. On a Mac, build with Xcode 26 or later. With KXBuild on Windows or Linux, switch to the iOS 26 SDK or later as described on the iOS SDK page, run kxbuild doctor and build again. Change the deployment target in iOS Deployment Target on the General page of the Project Settings Editor.
ITMS-90087 Unsupported architectures
Meaning. A framework in the bundle includes the simulator architectures x86_64 or i386. The App Store only accepts device architectures.
Cause. You included a “fat” framework that contains both device and simulator architectures.
Fix. Ask the SDK vendor for an XCFramework, or a device-only arm64 build. KXBuild always builds iOS apps for arm64, so this error nearly always comes from a prebuilt third-party framework.
ITMS-90338 Non-public API usage
Meaning. The binary contains symbols or selectors with the same names as private APIs, and the email lists them. They may be in a static library you bundled.
Fix. Rename methods in your own code that clash with private API names. If they come from a third-party library, update or remove it. Cross-platform frameworks occasionally get a wave of false positives. If you haven’t touched the related code, wait a day or two and upload again.
How do you fix invalid signature errors?
ITMS-90034 Missing or invalid signature
Meaning. The bundle isn’t signed with an Apple submission certificate.
Fix. Check that the Release configuration uses an Apple Distribution certificate and an App Store provisioning profile. If the certificate or profile has expired or they don’t match, generate them again.
ITMS-90035 Invalid Signature
Meaning. The signature failed verification. This usually happens when a build meant for the App Store was signed with a development certificate or an Ad Hoc profile, or files in the bundle were changed after signing.
Fix. Build again with a Distribution certificate and upload the .ipa the build produced as is. Don’t unzip it, change it and zip it again by hand.
Change it in KXBuild
Put the Distribution certificate (.p12) and the App Store provisioning profile in the project’s keychain folder. See Certificates and signing. Build with kxbuild build -c Release --export app-store, which signs with the Apple Distribution certificate and App Store provisioning profile in keychain whatever the project’s signing settings say.
When you upload, choose build\MyApp.ipa directly. It already has the structure App Store Connect expects, and uploading it untouched avoids signing-related App Store upload errors. See Release and App Store submission. For other signing and install errors, see 16 common iOS code signing and .ipa install errors, and how to fix them.
FAQ
What’s the difference between ITMS-90189 and ITMS-90062?
90189 means the build number is a duplicate, so increase only the build number for the same version. 90062 means the version isn’t high enough, so increase the version that the store displays.
The upload succeeded but I got an ITMS-91053 email. Can I still submit for review?
Since May 1, 2024, Apple doesn’t accept apps that don’t declare required reason APIs, so check whether the email calls it a warning or a rejection. The safest path is to complete the privacy manifest, increase the build number, upload again and then submit.
Which Xcode and SDK do I need to upload to the App Store in 2026?
As of October 2026, apps uploaded since April 28, 2026 must be built with Xcode 26 or later using the iOS 26 SDK. Since September 9, 2026, the minimum deployment target must be iOS 13 or later.
Why does ITMS-90717 report an alpha channel when my icon looks opaque?
The error is about the PNG file having an alpha channel, not about whether the image looks transparent. Add a solid background in your image editor, turn off transparency or alpha when exporting, and put the file back in AppIcon.
Can I fix an error that comes from a third-party SDK myself?
For privacy manifests, private APIs and simulator architectures, the real fix is updating the SDK to a fixed version. Apple also recommends contacting the SDK vendor for a version with a valid privacy manifest rather than describing the SDK’s privacy behavior in your own manifest.