---
title: App and system extensions
framework: Technology Overviews
role: article
path: technologyoverviews/app-extensions
---

# App and system extensions

Extend the reach of your app to other parts of the system.

## Choose an app extension

Apps let people experience your content within the interface you create, but sometimes people want that same content outside of your app. For example, someone using a weather app might want to see the forecast on their iPhone Lock Screen or on the face of their Apple Watch. If your server generates notifications with images, you might want people to see those images in the system’s notification interface. You deliver these types of features using app extensions. An app extension is a separate bundle that ships as part of your app and vends your app’s services to other parts of the system. Because app extensions are separate from your app, the system can launch and run them separately from your app. Some app extensions have an interface that the system displays, but many app extensions simply provide information for the system to use. For example, a Spotlight Import app extension indexes the content in one of your app’s custom file types. Choose an app extension iOS, iPadOS, macOS, tvOS, visionOS, and watchOS support app extensions for specific features like sharing, Notification Center, or Safari. When you Configuring a new target in your project to your existing app project, Xcode creates the initial code and resources and updates your project’s build settings. When you build your app, Xcode builds the app extension automatically and copies it to your Bundles.  |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |   |  |  |  |  |  |  Share data with your app The system runs app extensions as separate processes, so they don’t automatically share your app’s resources or permissions. Configure your app extension to run independently whenever possible. If you must share data between your app and app extension, Configuring app groups and give access to both processes. Host custom extensions from your app If your app supports contributions from outside apps, you can define your own app extensions and run them in a safe environment using the ExtensionFoundation framework. Custom app extensions are a way for you to add new capabilities to your app. For example, a graphics editing app might support new types of filters or visual effects. If your app lets app extensions provide a custom interface, the ExtensionKit framework helps you present that interface securely. Implement low-level services using system extensions Create a system extension to add low-level capabilities that previously required modifications to the system kernel. Apple devices support the following types of system extensions: Network Extension specify a system’s network configuration, create VPNs, filter network content, manage DNS configurations, and more. Endpoint Security monitor system events for malicious activity and provide a response. Build drivers to support custom hardware features communicate with connected hardware devices. In macOS, use the System Extensions framework to install and upgrade system extensions. In iPadOS, the system automatically discovers and upgrades system extensions. Because system extensions modify system behaviors, they must contain appropriate entitlements so the system can verify the extension is genuine. Installing System Extensions and Drivers when your app first runs to make them available to the system. important: Build system extensions with extra care, and test your code thoroughly before deploying it to customer devices. Although the code itself runs in user space, bugs in your code can prevent people from accessing important features.
