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

@DTS Engineer hello, I have same issue, below are details as you requested:

  1. Without NSExtensionPrincipalClass in Info.plist -> App Store Connect rejects upload with: "Missing Info.plist values. No values for NSExtensionMainStoryboard or NSExtensionPrincipalClass found in extension Info.plist"
  • Screenshot of the extension's Info.plist

  • Screenshot of the extension's Info.plist

  • Screenshot of the main app's Info.plist

  1. 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"
  • Screenshot of the error encountered

  • Screenshot of the extension's Info.plist

  • Screenshot of the main app's Info.plist

  1. Environment:
  • macOS Version 15.7.3 (Build 24G419)
  • Xcode 26.0.1 (24229) (Build 17A400)
  • iOS 26.2

Thanks you!

Hello @DTS Engineer , I am experiencing the same issue.

Validation fails with: No values for NSExtensionMainStoryboard or NSExtensionPrincipalClass

If I add those to the Info.plist, the app can't start on iPhone.

I am stuck. Could you please help me? Thank you.

@thespoolapp

Actually, can you take these screenshots from an archive of your app? The ones you provided look like they are coming from Xcode.

Also, are you able to reproduce this issue when using Xcode 26 or later?

@DTS Engineer please help check my comment above (https://developer.apple.com/forums/thread/812380?answerId=874754022#874754022). I've provided all information you need. Currently unable to release new app. Please help, thanks!

DeviceActivityReportExtension: NSExtensionPrincipalClass required by App Store but rejected at runtime
 
 
Q