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

Devicediscoveryextension

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.

✅

TP40014214 CH13 SW1

Add custom actions to the share sheet to invoke your app’s functionality from any app.

✅

✅

App Intents

Perform tasks associated with your app’s declared app intents.

✅

✅

✅

✅

Audiotoolbox

Create and modify audio in any app that uses sound, including music production apps such as GarageBand or Logic Pro X.

✅

✅

✅

301

Streamline authentication for users by enabling single sign-on.

✅

✅

✅

Ascredentialproviderviewcontroller

Surface credentials from your app in Password Autofill and pull your app’s password data into the Password AutoFill workflow.

✅

✅

✅

Financekit

Update the on-device financial data your app manages in the background.

✅

Backgroundassets

Download important assets shortly after app installation.

✅

✅

✅

✅

Replaykit

Display the UI for a broadcast you start using ReplayKit.

✅

✅

✅

✅

Rpbroadcastsamplehandler

Broadcast content that ReplayKit captures from your app.

✅

✅

✅

✅

Callkit

Display caller identification from your appʼs custom contact list so users know who’s calling.

✅

✅

Lockedcameracapture

Lets people launch your app’s camera experience from the Lock Screen, Control Center, or the Action button.

✅

Clscontextprovider

Update the status of your appʼs activities so that status is visible in the Schoolwork app.

✅

✅

✅

Contactproviderextension

Provide contact items to the system-wide Contacts ecosystem.

✅

Creating A Content Blocker

Provide rules for hiding elements, blocking loads, and stripping cookies from Safari requests.

✅

✅

✅

Regenerating Your App S Indexes On Demand

Regenerate your app’s search indexes in response to system-initiated maintenance requests.

✅

✅

✅

Creating A Custom Keyboard

Provide systemwide customized text input for unique input methods or specific languages.

✅

Deviceactivitymonitor

Detect and warn about excessive time spent on app and website activities.

✅

Creating A Custom Keyboard

Receive and display device-activity information in a privacy-friendly way.

✅

Fileprovider

Let other apps access the documents and directories stored and managed by your app.

✅

✅

✅

Fileproviderui

Add custom actions to the document browserʼs context menu for documents that your app manages.

✅

Fskit

Provide the implementation for a custom file system.

✅

Findersync

Keep files in sync with a back-end storage service.

✅

Nehotspotauthenticationprovider

Authenticate the current device on a Wi-Fi hotspot.

✅

Nehotspotevaluationprovider

Evaluate the available Wi-Fi hotspots in a privacy-friendly way.

✅

Identitydocumentservicesui

Validates the digital credentials that your app manages.

✅

Messages

Allow users to send text, stickers, media files, and interactive messages.

✅

Creating An Intents App Extension

Let users interact with your app using Siri.

✅

✅

✅

✅

✅

Creating An Intents Ui Extension

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.

✅

Creating A Location Push Service Extension

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).

✅

Meextension

Enhance Mail by adding custom actions, blocking content, signing and encoding messages, and more.

✅

Adding Matter Support To Your Ecosystem

Perform required configuration of a newly added Matter device.

✅

✅

✅

Dddiscoveryextension

Discover third-party media receivers that your app can use to stream audio and video content.

✅

✅

Mediaextension

Support media assets that the system doesn’t support natively.

✅

Identitylookup

Identify and filter unwanted SMS and MMS messages.

✅

✅

Networkextension

Provide system-level networking services such as VPN, proxies, or content filtering.

✅

✅

✅

✅

Customizing The Appearance Of Notifications

Customize the appearance of your app’s notification alerts.

✅

✅

✅

Modifying Content In Newly Delivered Notifications

Modify the payload of a remote notification before it’s displayed on the user’s device.

✅

✅

✅

✅

Authenticating Users With A Cryptographic Token

Grant access to user accounts and the keychain using a token.

✅

✅

✅

Creating Photo Editing Extensions

Allow your app to edit assets directly within the Photos app.

✅

✅

Creating A Slideshow Project Extension For Photos

Augment the macOS Photos app with extensions that support project creation.

✅

Uiprintserviceextension

Locate and set up an AirPrint printer and make it available as a printer destination.

✅

✅

Quicklook

Provide previews of documents your app owns so they can be viewed in any app.

✅

✅

Safariservices

Extend the web-browsing experience in Safari by leveraging web technologies and native code.

✅

✅

✅

TP40014214 CH12 SW1

Let users post to your social-network service from any app.

✅

✅

Shieldactiondelegate

Manage the system’s response to shield actions, which hide the content of apps and websites.

✅

Managedsettingsui

Customize the appearance of shields to match the style of your app.

✅

Authenticating Users With A Cryptographic Token

Grant access to user accounts and the keychain using a hardware-based token.

✅

Csimportextension

Make content in your app searchable in Spotlight, Safari, Siri, and more.

✅

✅

✅

Messages

Add custom stickers to Messages.

✅

Providing Thumbnails Of Your Custom File Types

Display thumbnails of your custom document types in all apps.

✅

✅

✅

Tvservices

Help users discover your app by providing Top Shelf content and a description of your tvOS app.

✅

Sms And Call Spam Reporting

Block incoming phone calls using your app’s custom unsolicited caller database.

✅

✅

Neurlfiltercontrolprovider

Filter URLs using an on-device data set or an off-device server.

✅

Ekvirtualconferenceprovider

Integrate your video conferencing service directly into events on user’s calendars.

✅

✅

✅

Creating A Widget Extension

Show relevant, glanceable content from your app on the iOS Home Screen and Lock Screen, macOS Notification Center, and as complications in watchOS.

✅

✅

✅

✅

Creating A Source Editor Extension

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:

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.