<!--
{
  "availability" : [
    "macOS: 10.15.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "NetworkExtension",
  "identifier" : "/documentation/NetworkExtension/NEProvider/startSystemExtensionMode()",
  "metadataVersion" : "0.1.0",
  "role" : "Type Method",
  "symbol" : {
    "kind" : "Type Method",
    "modules" : [
      "Network Extension"
    ],
    "preciseIdentifier" : "c:objc(cs)NEProvider(cm)startSystemExtensionMode"
  },
  "title" : "startSystemExtensionMode()"
}
-->

# startSystemExtensionMode()

Starts the Network Extension machinery from inside a System Extension.

```
class func startSystemExtensionMode()
```

## Discussion

Call this method as early as possible after your system extension starts.

Once called, this class method causes your system extension to start handling requests from the Network Extension session manager daemon to instantiate appropriate [`NEProvider`](/documentation/NetworkExtension/NEProvider) subclass instances. The system extension must declare a mapping of Network Extension extension points to [`NEProvider`](/documentation/NetworkExtension/NEProvider) subclass instances in its `Info.plist`. The following example shows this mapping:

```xml
<key>NetworkExtension</key><dict>
    <key>NEProviderClasses</key>
    <dict>
        <key>com.apple.networkextension.app-proxy</key>
        <string>$(PRODUCT_MODULE_NAME).AppProxyProvider</string>
        <key>com.apple.networkextension.filter-data</key>
        <string>$(PRODUCT_MODULE_NAME).FilterDataProvider</string>
    </dict>
</dict>
```

---

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)