Contacts permission not requested on production build (iPhone 16/17 Pro Max)

I’m encountering an issue where my app does not show the Contacts permission prompt in the production environment. This has been observed on iPhone 16 Pro Max and iPhone 17 Pro Max devices, while other iPhone models appear to behave correctly.

The behavior is consistent across Xcode builds, TestFlight, and the App Store version when using the production bundle identifier.

Instead of returning .notDetermined, the app receives the device’s previous Contacts authorization status, so the system permission prompt is never shown.

Expected behavior

On first launch after install, the app should prompt the user for Contacts access.

Actual behavior (Production build)

The app does not prompt for Contacts permission and instead appears to reuse the previous permission state:

  • If the user previously had no access → after uninstall/reinstall, still no access (no prompt shown)
  • If the user previously had limited access → after reinstall, access becomes empty (0 contacts), still no prompt
  • If the user previously had full access → after reinstall, still has full access without being prompted

Additional observations

  • This issue only occurs in Production
  • Staging and Dev builds (TestFlight + Xcode) behave correctly and prompt for permission
  • If I set my Dev build to use the same bundle identifier as Production, the issue reproduces (no permission prompt)

Current workaround

The only way for users to change Contacts access is via the Settings app. The permission prompt is never shown in-app.

Has anyone encountered this behavior before, or is there something specific to production builds (or bundle identifiers) that could cause the system to skip the permission prompt?

Can you clarify what you mean by “production bundle identifier”?

Most apps use a single bundle ID for both development and distribution. Are you doing something special to vary bundle ID in those two cases?

ps The majority of weird ‘only shows up in production’ problems I see are caused by Debug vs Release build changes, rather than code signing changes. I talk about this more in Isolating Code Signing Problems from Build Problems. However, the process there assumes you’re using the same bundle ID in both cases, and if you’re not then… well… things get more complex.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Yeah I have a different bundle id for each environment, to allow a few users to have all three apps on the phone at the same time.

I check to see if it was an environment issue by changing my dev bundle id to my prod bundle id to make sure it had the same settings. And then my dev stopped prompting for contacts too. It seems just to be based on the bundle id

The prod debug and release builds works on every iPhone 15 series and below. The prod works on all the iPhone simulators. It just doesn't work on physical devices for iPhone 16 series and up

It just doesn't work on physical devices for iPhone 16 series and up

All such devices? Or just a selection?

If you have such a device and it shows the problem, what happens if you wipe it and retest? Does it continue to show the problem?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

I am unable to wipe the devices. However I am able to provide more details on the devices used. I shouldn't have said 16 series and up due to not being able to test the non pros and the non-pro maxes.

These are devices that used the same version of the app.

The devices that did not prompt for the contacts permissions:

  • iPhone 17 Pro Max [iOS 26.4.1 and iOS 26.4.2]
    • (Had the app previous install, built locally, Testflight, and Appstore)
  • iPhone 16 Pro Max [iOS 26.3.1]
    • (Also had the app previously installed)
  • iPhone 16 Pro Max [iOS 26.3.1]
    • (Never had the app installed before, downloaded from Appstore)

The phones we tested on that worked

  • iPhone 12 Mini [iOS 26.4.1]
  • iPhone 13 Mini [iOS 26.3.1]
  • iPhone 15 Pro Max [iOS 26.3.1]
  • iPhone 13 [iOS 26.3]

@boncor-cedh

Please download the Accessing a person’s contact data using Contacts and ContactsUI sample code, then update it to use your own bundle ID, then attempt to reproduce your issue using Xcode. Let us know about the result.

I am getting the same results.

This is from the physical iPhone 17 Pro Max running iOS 26.4.2

I was never prompted contacts permissions, and it automatically set my access to limited (I believe this what I last set to on my app with the bundle id)

This is from the iPhone 17 Pro Max simulator

I can press request access on the simulator and it will show the permissions while the physical iPhone 17 Pro Max never sees the request button

@boncor-cedh

I’m encountering an issue where my app does not show the Contacts permission prompt in the production environment. This has been observed on iPhone 16 Pro Max and iPhone 17 Pro Max devices, while other iPhone models appear to behave correctly.

Please file a bug report using Feedback Assistant, then post the ID here.

Contacts permission not requested on production build (iPhone 16/17 Pro Max)
 
 
Q