Install and manage user-space code that extends the capabilities of macOS.


Creating system extensions allows your app to enhance the capabilities of the user’s Mac, without the associated risks of developing kernel extentions (KEXTs). System extensions run in user space, where they can’t compromise the security or stability of macOS. The system grants these extensions a high level of privilege, so they can perform the kinds of tasks previously reserved to KEXTs.

You use frameworks like DriverKit and USBDriverKit to write your extension, before packaging the driver in your app bundle. At runtime, your app calls the SystemExtensions framework to install or update the extension for the user. Once installed, an extension remains available for all users on the system. Users can disable the extension by deleting the last copy of the host app, which deletes the extension.

Beta Software

This documentation contains preliminary information about an API or technology in development. This information is subject to change, and software implemented according to this documentation should be tested with final operating system software.

Learn more about using Apple's beta software