DeviceActivityReportExtension: NSExtensionPrincipalClass required by App Store but rejected at runtime

I'm experiencing a contradictory validation issue with DeviceActivityReportExtension that creates an impossible situation:

The Problem:

  • Without NSExtensionPrincipalClass in Info.plist → App Store Connect rejects upload with: "Missing Info.plist values. No values for NSExtensionMainStoryboard or NSExtensionPrincipalClass found"
  • With NSExtensionPrincipalClass → Local install fails with: "defines either an NSExtensionMainStoryboard or NSExtensionPrincipalClass key, which is not allowed for the extension point com.apple.deviceactivityui.report-extension"

Setup:

  • Extension point: com.apple.deviceactivityui.report-extension
  • Using SwiftUI with @main attribute and DeviceActivityReportExtension protocol
  • Xcode 16.2, iOS 17.6 deployment target

Code structure:

@main
struct SpoolReport: DeviceActivityReportExtension {
    var body: some DeviceActivityReportScene {
        // Report scenes here
    }
}

The extension builds and runs perfectly without NSExtensionPrincipalClass, but cannot be uploaded to App Store Connect. Adding the key allows upload but breaks local installation.

Is this a known issue? Is there a workaround or correct Info.plist configuration for DeviceActivityReportExtension?

Thank you!

I'm experiencing the exact same issue. Hoping for any workaround or insight here as well.

@thespoolapp

Please provide the following information for better assistance: *

  • Screenshot of the error encountered*
  • Screenshot of the extension's Info.plist
  • Screenshot of the main app's Info.plist
DeviceActivityReportExtension: NSExtensionPrincipalClass required by App Store but rejected at runtime
 
 
Q