Push notifications fail after release: aps-environment
The aps-environment entitlement selects which Apple Push Notification service your app talks to. A build uploaded to App Store Connect has to use production. Set to development, push notifications silently fail for every user, and nothing about the submission flags it.
Why it matters
This is the failure that gets through review and breaks in production, which makes it worse than a rejection. Reviewers rarely exercise push notifications end to end, so the app is approved and the feature simply does not work for anyone who downloads it.
The symptom is confusing to debug afterwards: your server gets a device token, the send appears to succeed, and nothing arrives. The token belongs to the sandbox environment and the production APNs endpoint has never heard of it.
It happens because the development value is correct during development, and the entitlements file is one of the few things that does not obviously differ per configuration in the way build settings do.
How to fix it
- Open the .entitlements file used by your Release configuration and set aps-environment to production.
- Check which entitlements file each configuration uses, in CODE_SIGN_ENTITLEMENTS. Projects often have two, and the wrong one being selected for Release is the same bug in a different place.
- Confirm the App ID has the Push Notifications capability enabled and the distribution profile includes it.
- After the first release, verify a push actually arrives on a device running the App Store build rather than a local one.
The guidelines behind it
Read from Apple’s App Review Guidelines as last updated October 16, 2026.
Worth knowing
The .entitlements file is an input to code signing, not the final signed entitlement set. What a build actually carries is decided when it is signed, with the provisioning profile. ReviewAhead says so on every entitlement finding rather than implying it read the signed binary.
What ReviewAhead checks
Push notification environment. A release build must use the production APS environment.
- The aps-environment value in the entitlements files it finds in the project.
- Reports the value it found rather than only whether it passed.
Apple’s own documentation for this requirement: developer.apple.com. Where this page and Apple disagree, Apple is right and this page is a bug.