Guides
Plan-enterprise-icon
Expo Application Services
API Reference

iOS Capabilities

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.
Info-icon
This feature can be disabled with EXPO_NO_CAPABILITY_SYNC=1 eas build

Entitlements

In bare workflow apps, the entitlements are read from your ios/**/*.entitlements file.
In managed workflow, the entitlements are read from the introspected Expo config. You can see what your introspected config looks like by running npx expo config --type introspect in your project, then look for the ios.entitlements object for the results.

Enabling

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.

Disabling

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.

Supported Capabilities

EAS Build will only enable capabilities that it has built-in support for, any unsupported entitlements must be manually enabled via Apple Developer Console.
SupportCapabilityEntitlement string
Status-success-iconAccess Wi-Fi Informationcom.apple.developer.networking.wifi-info
Status-success-iconApp Attestcom.apple.developer.devicecheck.appattest-environment
Status-success-iconApp Groupscom.apple.security.application-groups
Status-success-iconApple Pay Payment Processingcom.apple.developer.in-app-payments
Status-success-iconAssociated Domainscom.apple.developer.associated-domains
Status-success-iconAutoFill Credential Providercom.apple.developer.authentication-services.autofill-credential-provider
Status-success-iconClassKitcom.apple.developer.ClassKit-environment
Status-success-iconCommunicates with Driverscom.apple.developer.driverkit.communicates-with-drivers
Status-success-iconCommunication Notificationscom.apple.developer.usernotifications.communication
Status-success-iconCustom Network Protocolcom.apple.developer.networking.custom-protocol
Status-success-iconData Protectioncom.apple.developer.default-data-protection
Status-success-iconDriverKit Allow Third Party UserClientscom.apple.developer.driverkit.allow-third-party-userclients
Status-success-iconDriverKit Family Audio (development)com.apple.developer.driverkit.family.audio
Status-success-iconDriverKit Family HID Device (development)com.apple.developer.driverkit.family.hid.device
Status-success-iconDriverKit Family HID EventService (development)com.apple.developer.driverkit.family.hid.eventservice
Status-success-iconDriverKit Family Networking (development)com.apple.developer.driverkit.family.networking
Status-success-iconDriverKit Family SCSIController (development)com.apple.developer.driverkit.family.scsicontroller
Status-success-iconDriverKit Family Serial (development)com.apple.developer.driverkit.family.serial
Status-success-iconDriverKit Transport HID (development)com.apple.developer.driverkit.transport.hid
Status-success-iconDriverKit USB Transport (development)com.apple.developer.driverkit.transport.usb
Status-success-iconDriverKit for Developmentcom.apple.developer.driverkit
Status-success-iconExtended Virtual Address Spacecom.apple.developer.kernel.extended-virtual-addressing
Status-success-iconFamily Controlscom.apple.developer.family-controls
Status-success-iconFileProvider TestingModecom.apple.developer.fileprovider.testing-mode
Status-success-iconFontscom.apple.developer.user-fonts
Status-success-iconGroup Activitiescom.apple.developer.group-session
Status-success-iconHealthKitcom.apple.developer.healthkit
Status-success-iconHomeKitcom.apple.developer.homekit
Status-success-iconHotspotcom.apple.developer.networking.HotspotConfiguration
Status-success-iconIncreased Memory Limitcom.apple.developer.kernel.increased-memory-limit
Status-success-iconInter-App Audiointer-app-audio
Status-success-iconLow Latency HLScom.apple.developer.coremedia.hls.low-latency
Status-success-iconMDM Managed Associated Domainscom.apple.developer.associated-domains.mdm-managed
Status-success-iconMapscom.apple.developer.maps
Status-success-iconMedia Device Discoverycom.apple.developer.media-device-discovery-extension
Status-success-iconMultipathcom.apple.developer.networking.multipath
Status-success-iconNFC Tag Readingcom.apple.developer.nfc.readersession.formats
Status-success-iconNetwork Extensionscom.apple.developer.networking.networkextension
Status-success-iconOn Demand Install Capable for App Clip Extensionscom.apple.developer.on-demand-install-capable
Status-success-iconPersonal VPNcom.apple.developer.networking.vpn.api
Status-success-iconPush Notificationsaps-environment
Status-success-iconPush to Talkcom.apple.developer.push-to-talk
Status-success-iconRecalibrate Estimatescom.apple.developer.healthkit.recalibrate-estimates
Status-success-iconShared with Youcom.apple.developer.shared-with-you
Status-success-iconSign In with Applecom.apple.developer.applesignin
Status-success-iconSiriKitcom.apple.developer.siri
Status-success-iconSystem Extensioncom.apple.developer.system-extension.install
Status-success-iconTV Servicescom.apple.developer.user-management
Status-success-iconTime Sensitive Notificationscom.apple.developer.usernotifications.time-sensitive
Status-success-iconWalletcom.apple.developer.pass-type-identifiers
Status-success-iconWeatherKitcom.apple.developer.weatherkit
Status-success-iconWireless Accessory Configurationcom.apple.external-accessory.wireless-configuration
Status-success-iconiCloudcom.apple.developer.icloud-container-identifiers
Status-failed-iconHLS Interstitial PreviewsUnknown
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.

Capability identifiers

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.

Debugging

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 EXPO_NO_CAPABILITY_SYNC=1.
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.

Manual setup

There are two ways to manually enable Apple capabilities, both systems will require any existing Apple provisioning profiles to be regenerated.

Xcode

Info-icon
Preferred method for bare workflow or projects that do not using Expo Prebuild to continuously generate the native ios and android directories.
  1. Open the ios/ directory in Xcode with xed ios. If you don't have an ios/ directory, run npx expo prebuild -p ios to generate one.
  2. Then follow this guide.

Apple Developer Console

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.
  1. Log into Apple Developer Console. Click on "Certificates, IDs & Profiles", then navigate to "Identifiers" page.
  2. Choose the bundle identifier that matches your app's bundle identifier.
  3. Scroll down and enable a capability, some capabilities may require extra setup.
  4. Scroll to the top and press "Save". You will see a dialog that says "Modify App Capabilities", press "Confirm" to continue. You will need to regenerate any provisioning profiles that use this bundle identifier before they'll be valid for building a code signed production ipa.
If adding capabilities process has not been done correctly then your iOS native build will fail with an error that looks something like:
❌  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.
  • Message-iconAsk a question on the forums
  • Edit-iconEdit this page

Was this doc helpful?