Learn about built-in iOS capabilities supported in EAS Build and how to enable or disable them.
When you make a change to your iOS entitlements, this change needs to be updated remotely on Apple's servers before making a production build. EAS Build automatically synchronizes capabilities on the Apple Developer Console with your local entitlements configuration when you run
eas build. Capabilities are web services provided by Apple, think of them like AWS or Firebase services.
This feature can be disabled with
EXPO_NO_CAPABILITY_SYNC=1 eas build
In the managed workflow, the entitlements are read from the introspected app config. To edit them, see the
ios.entitlements field in your app config file. You can see your introspected config by running
npx expo config --type introspect in your project and then look for the
ios.entitlements object for the results.
In bare workflow apps, the entitlements are read from your ios/**/*.entitlements file.
If a supported entitlement is present in the entitlements file, then running
eas build will enable it on Apple Developer Console. If the capability is already enabled, then EAS Build will skip it.
If a capability is enabled for your app remotely, but not present in the native entitlements file, then running
eas build will automatically disable it.
EAS Build will only enable capabilities that it has built-in support for, any unsupported entitlements must be manually enabled via Apple Developer Console.
|Access Wi-Fi Information|
|Apple Pay Later Merchandising|
|Apple Pay Payment Processing|
|AutoFill Credential Provider|
|Communicates with Drivers|
|Custom Network Protocol|
|DriverKit Allow Third Party UserClients|
|DriverKit Family Audio (development)|
|DriverKit Family HID Device (development)|
|DriverKit Family HID EventService (development)|
|DriverKit Family Networking (development)|
|DriverKit Family SCSIController (development)|
|DriverKit Family Serial (development)|
|DriverKit Transport HID (development)|
|DriverKit USB Transport (development)|
|DriverKit for Development|
|Extended Virtual Address Space|
|Increased Memory Limit|
|Low Latency HLS|
|MDM Managed Associated Domains|
|Matter Allow Setup Payload|
|Media Device Discovery|
|NFC Tag Reading|
|On Demand Install Capable for App Clip Extensions|
|Push to Talk|
|Sensitive Content Analysis|
|Shallow Depth and Pressure|
|Shared with You|
|Sign In with Apple|
|Tap to Pay on iPhone|
|Tap to Present ID on iPhone (Display Only)|
|Time Sensitive Notifications|
|Wireless Accessory Configuration|
|HLS Interstitial Previews||Unknown|
The unsupported capabilities either don't support iOS, or they don't have a corresponding entitlement value. Here are all of the official Apple capabilities.
Merchant IDs, App Groups, and CloudKit Containers can all be automatically registered and assigned to your app. These assignments require Apple cookies authentication (running locally) as the official App Store Connect API does not support these operations.
You can run
EXPO_DEBUG=1 eas build to get more detailed logs regarding the capability syncing.
If you have trouble using this feature, you can disable it with the environment variable
To see all of the currently enabled capabilities, visit Apple Developer Console, and find the bundle identifier matching your app, if you click on it you should see a list of all the currently enabled capabilities.
There are two ways to manually enable Apple capabilities, both systems will require any existing Apple provisioning profiles to be regenerated.
Preferred method for bare workflow or projects that do not use Expo Prebuild to continuously generate the native android and ios directories.
xed ios. If you don't have an
npx expo prebuild -p iosto generate one.
First step is to add the respective key/value pairs to your ios/[app]/[app].entitlements (or more specific entitlements file for multi-target apps). You can refer to Supported Capabilities to determine which entitlements keys should be added.
If adding capabilities process has not been done correctly then your iOS native build will fail with an error similar to:
❌ error: Provisioning profile "*[expo] app.bacon.hello AppStore ..." doesn't support the Associated Domains capability. ❌ error: Provisioning profile "*[expo] app.bacon.hello AppStore ..." doesn't include the com.apple.developer.associated-domains entitlement.