I'm stuck in an impossible situation with DeviceActivityReportExtension on iOS 18.
THE ISSUE:
Configuration that works on device (iOS 18.2):
-
Info.plist has only NSExtensionPointIdentifier
-
Swift code uses u/main attribute
-
App installs and runs perfectly
-
Extension works correctly
-
App Store validation FAILS: "Missing NSExtensionPrincipalClass"
Adding NSExtensionPrincipalClass (as validation requests):
-
Device installation FAILS with Error 3002
-
Error says: "NSExtensionPrincipalClass key is not allowed for this extension point"
-
Cannot test on device
-
Validation would likely pass
ENVIRONMENT:
-
Xcode 16.2
-
iOS 18.2
-
Extension point: com.apple.deviceactivityui.report-extension
EVIDENCE IT'S WIDESPREAD:
-
Apple Forums (3 days ago): https://developer.apple.com/forums/thread/812380
-
Stack Overflow (1+ year): https://stackoverflow.com/questions/77866230/
ROOT CAUSE:
iOS 18 changed this extension to use u/main pattern (no NSExtensionPrincipalClass needed). App Store validation hasn't been updated and still expects iOS 17 configuration.
WHAT I'VE TRIED:
✅ All deployment targets set to iOS 18.3
✅ Code follows Apple's WWDC 2022 guidance
✅ All entitlements correct
✅ Info.plist validated
✅ Clean builds
✅ Works perfectly on device
No configuration satisfies both device runtime AND App Store validation.
Has anyone successfully uploaded an app with DeviceActivityReportExtension to TestFlight on iOS 18? Any workarounds?
This is blocking TestFlight deployment completely.