Skip to content
Latchkey

altool ERROR ITMS-90022 missing required Info.plist key in CI

App Store Connect rejected the bundle with ITMS-90022 because a required Info.plist key is absent. The most common case is CFBundleIconName, which must point at an icon set in the asset catalog for App Store builds.

What this error means

altool --upload-app fails with "ERROR ITMS-90022: Invalid Bundle. The bundle ... is missing the required Info.plist key ...". The build runs locally but is rejected on upload.

altool
ERROR ITMS-90022: "Missing required icon. The bundle does not contain an app icon for
iPhone / iPod Touch of exactly '120x120' pixels, in .png format for iOS versions >= 10.0."
ERROR ITMS-90022: "Invalid Bundle. The bundle App.app does not contain the required
Info.plist key 'CFBundleIconName'."

Common causes

CFBundleIconName is not set

App Store builds must declare CFBundleIconName pointing at an AppIcon set in an asset catalog. A bare icon files list without the key is rejected.

A required icon size is missing from the asset catalog

The asset catalog does not include an icon at a size App Store mandates (for example 120x120), so the assembled bundle fails validation.

How to fix it

Add the icon key and a complete icon set

  1. Add the AppIcon set with every required size to the asset catalog.
  2. Set CFBundleIconName to the asset name (AppIcon) in Info.plist.
  3. Rebuild so the compiled catalog and Info.plist key are both present.
Info.plist
<!-- Info.plist -->
<key>CFBundleIconName</key>
<string>AppIcon</string>

Verify the assembled bundle before upload

Run altool --validate-app first; it reports the same ITMS-90022 without consuming a TestFlight build slot, so you fix the plist before a real upload.

Terminal
xcrun altool --validate-app -f App.ipa -t ios \
  --apiKey "$ASC_KEY_ID" --apiIssuer "$ASC_ISSUER_ID"

How to prevent it

  • Keep a complete AppIcon set with all required sizes in the asset catalog.
  • Set CFBundleIconName for App Store builds.
  • Run --validate-app in CI before --upload-app.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →