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.
Extension point | Description | iOS/iPadOS | macOS | tvOS | visionOS | watchOS |
|---|---|---|---|---|---|---|
Configure third-party media receivers that your app uses to stream audio and video content. | ✅ | |||||
Upgrading Account Security With An Account Authentication Modification Extension | Automatically upgrade user passwords to strong passwords, or convert accounts to use Sign in with Apple. | ✅ | ||||
Add custom actions to the share sheet to invoke your app’s functionality from any app. | ✅ | ✅ | ||||
Perform tasks associated with your app’s declared app intents. | ✅ | ✅ | ✅ | ✅ | ||
Create and modify audio in any app that uses sound, including music production apps such as GarageBand or Logic Pro X. | ✅ | ✅ | ✅ | |||
Streamline authentication for users by enabling single sign-on. | ✅ | ✅ | ✅ | |||
Surface credentials from your app in Password Autofill and pull your app’s password data into the Password AutoFill workflow. | ✅ | ✅ | ✅ | |||
Update the on-device financial data your app manages in the background. | ✅ | |||||
Download important assets shortly after app installation. | ✅ | ✅ | ✅ | ✅ | ||
Display the UI for a broadcast you start using ReplayKit. | ✅ | ✅ | ✅ | ✅ | ||
Broadcast content that ReplayKit captures from your app. | ✅ | ✅ | ✅ | ✅ | ||
Display caller identification from your appʼs custom contact list so users know who’s calling. | ✅ | ✅ | ||||
Lets people launch your app’s camera experience from the Lock Screen, Control Center, or the Action button. | ✅ | |||||
Update the status of your appʼs activities so that status is visible in the Schoolwork app. | ✅ | ✅ | ✅ | |||
Provide contact items to the system-wide Contacts ecosystem. | ✅ | |||||
Provide rules for hiding elements, blocking loads, and stripping cookies from Safari requests. | ✅ | ✅ | ✅ | |||
Regenerate your app’s search indexes in response to system-initiated maintenance requests. | ✅ | ✅ | ✅ | |||
Provide systemwide customized text input for unique input methods or specific languages. | ✅ | |||||
Detect and warn about excessive time spent on app and website activities. | ✅ | |||||
Receive and display device-activity information in a privacy-friendly way. | ✅ | |||||
Let other apps access the documents and directories stored and managed by your app. | ✅ | ✅ | ✅ | |||
Add custom actions to the document browserʼs context menu for documents that your app manages. | ✅ | |||||
Provide the implementation for a custom file system. | ✅ | |||||
Keep files in sync with a back-end storage service. | ✅ | |||||
Authenticate the current device on a Wi-Fi hotspot. | ✅ | |||||
Evaluate the available Wi-Fi hotspots in a privacy-friendly way. | ✅ | |||||
Validates the digital credentials that your app manages. | ✅ | |||||
Allow users to send text, stickers, media files, and interactive messages. | ✅ | |||||
Let users interact with your app using Siri. | ✅ | ✅ | ✅ | ✅ | ✅ | |
Customize the interface for interactions with your app in Siri conversations or Maps. | ✅ | ✅ | ||||
Getting Up To Date Calling And Blocking Information For Your App | Provide caller ID and call-blocking services from a server you maintain. Available in iOS only. | ✅ | ||||
Enable a location sharing app – with a user’s authorization – to query a user’s location in response to a push from Apple Push Notification service (APNs). | ✅ | |||||
Enhance Mail by adding custom actions, blocking content, signing and encoding messages, and more. | ✅ | |||||
Perform required configuration of a newly added Matter device. | ✅ | ✅ | ✅ | |||
Discover third-party media receivers that your app can use to stream audio and video content. | ✅ | ✅ | ||||
Support media assets that the system doesn’t support natively. | ✅ | |||||
Identify and filter unwanted SMS and MMS messages. | ✅ | ✅ | ||||
Provide system-level networking services such as VPN, proxies, or content filtering. | ✅ | ✅ | ✅ | ✅ | ||
Customize the appearance of your app’s notification alerts. | ✅ | ✅ | ✅ | |||
Modify the payload of a remote notification before it’s displayed on the user’s device. | ✅ | ✅ | ✅ | ✅ | ||
Grant access to user accounts and the keychain using a token. | ✅ | ✅ | ✅ | |||
Allow your app to edit assets directly within the Photos app. | ✅ | ✅ | ||||
Augment the macOS Photos app with extensions that support project creation. | ✅ | |||||
Locate and set up an AirPrint printer and make it available as a printer destination. | ✅ | ✅ | ||||
Provide previews of documents your app owns so they can be viewed in any app. | ✅ | ✅ | ||||
Extend the web-browsing experience in Safari by leveraging web technologies and native code. | ✅ | ✅ | ✅ | |||
Let users post to your social-network service from any app. | ✅ | ✅ | ||||
Manage the system’s response to shield actions, which hide the content of apps and websites. | ✅ | |||||
Customize the appearance of shields to match the style of your app. | ✅ | |||||
Grant access to user accounts and the keychain using a hardware-based token. | ✅ | |||||
Make content in your app searchable in Spotlight, Safari, Siri, and more. | ✅ | ✅ | ✅ | |||
Add custom stickers to Messages. | ✅ | |||||
Display thumbnails of your custom document types in all apps. | ✅ | ✅ | ✅ | |||
Help users discover your app by providing Top Shelf content and a description of your tvOS app. | ✅ | |||||
Block incoming phone calls using your app’s custom unsolicited caller database. | ✅ | ✅ | ||||
Filter URLs using an on-device data set or an off-device server. | ✅ | |||||
Integrate your video conferencing service directly into events on user’s calendars. | ✅ | ✅ | ✅ | |||
Show relevant, glanceable content from your app on the iOS Home Screen and Lock Screen, macOS Notification Center, and as complications in watchOS. | ✅ | ✅ | ✅ | ✅ | ||
Provide custom editing features directly inside Xcode’s source editor. | ✅ |
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.