<!--
{
  "availability" : [
    "iOS: 8.0.0 -",
    "iPadOS: 8.0.0 -",
    "macOS: 10.10.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "BundleResources",
  "identifier" : "/documentation/BundleResources/Information-Property-List/NSExtension/NSExtensionPrincipalClass",
  "metadataVersion" : "0.1.0",
  "role" : "Property List Key",
  "symbol" : {
    "kind" : "Property List Key",
    "modules" : [
      "Bundle Resources"
    ],
    "preciseIdentifier" : "plist:Information_Property_List.NSExtension.NSExtensionPrincipalClass"
  },
  "title" : "NSExtensionPrincipalClass"
}
-->

# NSExtensionPrincipalClass

The custom class that implements an app extension’s primary view or functionality.

## Discussion

This key is mutually exclusive with [`NSExtensionMainStoryboard`](/documentation/BundleResources/Information-Property-List/NSExtension/NSExtensionMainStoryboard). Typically, Xcode sets the value of this key when creating an App Extension target in your project. If you change the name of the specified class, remember to update the value of this key.

> Important:
> If the app extension’s `Info.plist` file contains both keys, the system won’t load the extension.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)