Entitlements
Also called Capabilities, App entitlements
- Part of
- React Native Glossary
- Updated
What is Entitlements in React Native?
Entitlements are signed key-value permissions in an iOS app that unlock Apple capabilities such as push notifications, App Groups, Sign in with Apple and Universal Links.
Entitlements are key-value pairs embedded in an iOS app’s code signature that grant it access to Apple services and system capabilities. They live in a .entitlements property list in your Xcode project, and Xcode’s "Signing & Capabilities" tab is a friendly editor for them.
Typical entitlements a React Native app needs:
aps-environmentfor push notifications.com.apple.developer.associated-domainsfor Universal Links and password autofill.- App Groups, to share data with a widget or extension.
- Sign in with Apple, HealthKit, iCloud, Apple Pay and keychain sharing.
What makes them different from Info.plist keys is that Apple checks them. Each entitlement must also be enabled on your App ID in the Apple Developer portal and be included in the provisioning profile used for code signing. If the app claims an entitlement its profile does not allow, signing fails at build time, or the feature silently does not work on device.
With Expo you declare them in app config, and many library config plugins add their own:
{
"ios": {
"associatedDomains": ["applinks:example.com"],
"entitlements": { "com.apple.security.application-groups": ["group.com.example.app"] }
}
}
EAS Build can sync these capabilities to your App ID automatically; with manual signing you must enable them yourself and regenerate the profile.
Common gotchas: enabling a capability in Xcode but not regenerating the profile on CI; a library that adds push entitlements you never asked for, which then triggers an App Store warning; and assuming Android has an equivalent file. It does not. Android grants comparable powers through AndroidManifest.xml permissions and features.