I've been stuck on Guideline 2.3 for two weeks now and I'm running out of ideas.
My app is iPhone-only (UIDeviceFamily = [1]) and has been on the App Store since January. Version 2.1.9 passed review fine. The only change in 2.1.10 is adding two DeviceActivity extensions — a DeviceActivityMonitor and a DeviceActivityReport — for screen time-based stress detection.
Every build since then gets rejected with the same message:
"The UIRequiredDeviceCapabilities key in the Info.plist is set up in such a way that the app will not install on the device used in review."
Review devices: iPhone 14 Pro, iPhone 17 Pro Max, iPad Air M3.
Here's what I've tried across 13+ submissions:
- UIRequiredDeviceCapabilities as
["arm64"](array) — rejected - Empty array
[]— rejected - Removed the key entirely — upload validation fails, Xcode re-injects arm64 anyway
- Post-build script to force
["arm64"]— rejected - Dictionary format
{"arm64": true}— rejected - Added
com.apple.developer.family-controlsto extension entitlements — rejected - Enabled Family Controls (Distribution) on extension bundle IDs — rejected
- Fixed CFBundleVersion mismatch between host app and extensions — rejected
- Set TARGETED_DEVICE_FAMILY=1 on all targets including extensions — rejected
- Tried GENERATE_INFOPLIST_FILE=YES with minimal plists — rejected
- Tried ExtensionKit type for the report extension — rejected
In the exported IPA, every target has UIRequiredDeviceCapabilities = ["arm64"] and UIDeviceFamily = [1]. The entitlements, provisioning profiles, and code signing all look correct. arm64 is supported on every review device they listed.
The previous version (2.1.9) without DeviceActivity extensions passes review with the exact same UIRequiredDeviceCapabilities and signing configuration.
Has anyone shipped an app with DeviceActivityMonitor + DeviceActivityReport extensions successfully? Is there something specific about these extension types that affects device capability validation? Or is there a known issue with the review system and FamilyControls extensions?
I've replied to the review team multiple times asking which specific capability is causing the failure, but the response is always the same generic template.
Any guidance would be really appreciated — I'm completely blocked on shipping this update.