Property List Key


The device-related features that the app requires to run.


Required device capabilities
array of strings

Possible Values


The presence of accelerometers. Use the Core Motion framework to receive accelerometer events. You don’t need to include this value if your app detects only device orientation changes.


Support for ARKit.


Compilation for the armv7 instruction set, or as a 32/64-bit universal app.


Compilation for the arm64 instruction set. Include this key for all 64-bit apps and embedded bundles, like extensions and frameworks.


Autofocus capabilities in the device’s still camera. You might need to include this value if your app supports macro photography or requires sharper images to perform certain image-processing tasks.


Bluetooth low-energy hardware.


A camera flash, controlled by the cameraFlashMode property of a UIImagePickerController instance.


A forward-facing camera, selected with the cameraDevice property of a UIImagePickerController instance.


Access to the Game Center service. Enable the Game Center capability in Xcode to add this value to your app.


GPS (or AGPS) hardware used to track locations. If you include this value, you should also include the location-services value. Require GPS only if your app needs location data more accurate than the cellular or Wi-Fi radios provide.


A gyroscope. Use the Core Motion framework to retrieve information from gyroscope hardware.


Support for HealthKit.


Access to the device’s current location using the Core Location framework. This value refers to the general location services feature. If you specifically need GPS-level accuracy, also include the gps feature.


Magnetometer hardware. Apps use this hardware to receive heading-related events through the Core Location framework.


Support for graphics processing with Metal.


The built-in microphone or accessories that provide a microphone.


Near Field Communication (NFC) tag detection and access to messages that contain NFC Data Exchange Format data. Use the Core NFC framework to detect and read NFC tags.


The OpenGL ES 1.1 interface.


The OpenGL ES 2.0 interface.


The OpenGL ES 3.0 interface.


Peer-to-peer connectivity over a Bluetooth network.


The Messages app. You might require this feature if your app opens URLs with the sms scheme.


A camera on the device. Use the UIImagePickerController interface to capture images from the device’s still camera.


The Phone app. You might require this feature if your app opens URLs with the tel scheme.


A camera with video capabilities on the device. Use the UIImagePickerController interface to capture video from the device’s camera.


Networking features related to Wi-Fi access.


The App Store prevents customers from installing an app on a device that doesn’t support the required capabilities for that app. Use this key to declare the capabilities your app requires. For a list of the features supported by different devices, see Required Device Capabilities.

You typically use an array for the key’s associated value. The presence in that array of any of the possible values listed above indicates that the app requires the corresponding feature. Omit a value to indicate that the feature isn’t required, but can be present.

Alternatively, you can use a dictionary as the associated value for the UIRequiredDeviceCapabilities key. In that case, use the values above as the dictionary’s keys, each with an associated Boolean value. Set the value to true to require the corresponding feature. Set the value to false to indicate that the feature must not be present on the device. Omit the feature from the dictionary to indicate that it is neither required nor disallowed.

Specify only the features that your app absolutely requires. If your app can accommodate missing features by avoiding the code paths that use those features, don’t include the corresponding key.

See Also

Launch Conditions

property list key LSMultipleInstancesProhibited

A Boolean value indicating whether more than one user can launch the app simultaneously.

Name: Application prohibits multiple instances
property list key LSExecutableArchitectures

The architectures that the app supports.

Name: Executable architectures
property list key LSRequiresNativeExecution

A Boolean value indicating whether to launch the app using the sub-binary for the current architecture.

Name: Application requires native environment
property list key WKRunsIndependentlyOfCompanionApp

A Boolean value indicating whether the user can install and run the watchOS app independently of its iOS companion app.

Name: App can run independently of companion iPhone app
property list key WKWatchOnly

A Boolean value indicating whether the app is a watch-only app.

Name: App is only available as a standalone watchOS app
property list key PUICAutoLaunchAudioOptOut

A Boolean value indicating whether a watchOS app should opt out of automatically launching when its companion iOS app starts playing audio content.

Name: Opt out of Auto-launch Audio App (Watch)
property list key CLKComplicationSupportedFamilies

The complication families for which the app can provide data.

Name: ClockKit Complication - Supported Families