Skip to content
DeveloperMemos

How to Fix ITMS-90109: Invalid Bundle Due to UIRequiredDeviceCapabilities

iOS Development, App Store, Xcode, Info.plist1 min read

One common issue encountered during app submission is the error ITMS-90109. This error indicates that the bundle is invalid because the UIRequiredDeviceCapabilities key in the Info.plist file contains values that could prevent the application from running on devices supported by previous versions. Here’s a comprehensive guide on how to resolve this issue.

Understanding the Error

The error message reads:

1ITMS-90109: This bundle is invalid - The key UIRequiredDeviceCapabilities in the Info.plist may not contain values that would prevent this application from running on devices that were supported by previous versions. Refer to QA1623 for additional information: https://developer.apple.com/library/ios/#qa/qa1623/_index.html

What is UIRequiredDeviceCapabilities?

The UIRequiredDeviceCapabilities key in the Info.plist file specifies the hardware and software features your app requires to run. For instance, if your app requires a gyroscope, you would include the gyroscope key in this dictionary. This ensures that only devices with these capabilities can download and run the app.

Why This Error Occurs

This error occurs when you specify requirements in UIRequiredDeviceCapabilities that are not available on devices supported by previous versions of your app. This essentially restricts the app’s compatibility, leading to a rejection from the App Store.

Steps to Resolve the Issue

To fix the ITMS-90109 error, follow these steps:

1. Review the Info.plist File

Open your project in Xcode and navigate to the Info.plist file. Locate the UIRequiredDeviceCapabilities key.

2. Identify and Evaluate Capabilities

Check the values listed under UIRequiredDeviceCapabilities. Evaluate each capability to determine whether it is necessary and if it might restrict the app from running on older devices.

3. Remove Unnecessary Capabilities

Remove any capabilities that are not essential for your app’s core functionality. For example, if you have arm64 listed but your app can run on older 32-bit devices, consider removing this requirement unless absolutely necessary.

Example:

Before:

1<key>UIRequiredDeviceCapabilities</key>
2<array>
3 <string>arm64</string>
4 <string>gps</string>
5 <string>gyroscope</string>
6</array>

After:

1<key>UIRequiredDeviceCapabilities</key>
2<array>
3 <string>gps</string>
4 <string>gyroscope</string>
5</array>

4. Conditional Requirements

If your app includes features that only some users need, consider making these features optional or providing alternative functionality. This approach can broaden your app’s compatibility.

5. Testing

Test your app on various devices and iOS versions to ensure it functions correctly without the removed capabilities.

6. Validate Changes

Before resubmitting, validate your app with Xcode’s validation tool to ensure there are no further issues. In Xcode:

  • Go to Product > Archive
  • Select the archive
  • Click Validate

7. Resubmit Your App

Once you’ve made the necessary adjustments and validated your app, resubmit it to the App Store.

Additional Resources

Refer to the official QA1623 document provided by Apple for more detailed guidelines and examples regarding UIRequiredDeviceCapabilities.