CINXE.COM
App Extensions Overview - Apple Developer
<!DOCTYPE html> <html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta charset="utf-8" /> <meta name="Author" content="Apple Inc." /> <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" /> <link rel="shortcut icon" href="/favicon.ico" /> <link rel="icon" href="/favicon.ico" /> <link rel="mask-icon" href="/apple-logo.svg" color="#333333"> <link rel="stylesheet" href="/assets/styles/global.dist.css?01172423298" type="text/css" /> <link rel="stylesheet" href="/assets/styles/dark-mode.css?17182448067" type="text/css" media="(prefers-color-scheme: dark)" data-color-scheme="dark" /> <link rel="stylesheet" href="/assets/styles/localization.css?39172414191" type="text/css" /> <script src="/assets/scripts/lib/jquery/jquery-3.6.0.min.js?17182448067"></script> <script src="/assets/scripts/settings.js?17182448067"></script> <script src="/assets/scripts/language-locales.js?17182448067"></script> <script src="/assets/scripts/DeveloperBreadcrumbs.js?05182434080"></script> <script async src="/assets/scripts/lib/jquery/jquery.retinate.js?17182448067"></script> <script async src="/assets/scripts/global.js?17182448067"></script> <script async src="/assets/scripts/global-logout.js?17182448067"></script> <link rel="stylesheet" href="https://www.apple.com/wss/fonts?family=SF+Pro&v=2" type="text/css" /> <link rel="stylesheet" href="https://www.apple.com/wss/fonts?family=SF+Pro+Icons&v=1" type="text/css" /> <link rel="stylesheet" href="https://www.apple.com/wss/fonts?family=SF+Mono&v=2" type="text/css" /> <link rel="stylesheet" href="https://www.apple.com/wss/fonts?family=Apple+Icons&v=1" type="text/css" /> <title>App Extensions Overview - Apple Developer</title> <meta name="omni_page" content="App Extensions - (English)" /> <meta name="Description" content="App extensions let you extend custom functionality and content beyond your app and make it available to users while they’re interacting with other apps or the system."> <meta property="og:locale" content="en_US" /> <meta property="og:site_name" content="Apple Developer" /> <meta property="og:type" content="website" /> <meta property="og:image" content="https://developer.apple.com/news/images/og/app-extensions-og.jpg"> <meta property="og:title" content="App Extensions - Apple Developer"> <meta property="og:description" content="App extensions let you extend custom functionality and content beyond your app and make it available to users while they’re interacting with other apps or the system."> <meta property="og:url" content="https://developer.apple.com/app-extensions/"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:image" content="https://developer.apple.com/news/images/og/app-extensions-og-twitter.jpg"> <meta name="twitter:description" content="App extensions let you extend custom functionality and content beyond your app and make it available to users while they’re interacting with other apps or the system."> <meta name="twitter:title" content="App Extensions - Apple Developer"> <meta name="twitter:url" content="https://developer.apple.com/app-extensions/"> <link rel="stylesheet" href="/app-extensions/styles/app-extensions.css" type="text/css"> <link rel="alternate" href="https://developer.apple.com/app-extensions/" hreflang="en" /> <link rel="alternate" href="https://developer.apple.com/cn/app-extensions/" hreflang="zh-CN" /> <link rel="alternate" href="https://developer.apple.com/jp/app-extensions/" hreflang="ja-JP" /> <link rel="alternate" href="https://developer.apple.com/kr/app-extensions/" hreflang="ko-KR" /> <link rel="canonical" href="https://developer.apple.com/app-extensions/" /> </head> <body id="app-extensions" class="dmf"> <script> const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches; if (window.Settings.preferredColorScheme) { const colorTheme = (window.Settings.preferredColorScheme === 'auto') && !prefersDark ? 'light' : (window.Settings.preferredColorScheme === 'light') ? 'light' : 'dark' document.body.setAttribute('data-color-scheme', colorTheme); } else { document.body.setAttribute('data-color-scheme', prefersDark ? 'dark' : 'light'); } </script> <style> /* footer */ html body[data-color-scheme='dark'] #main section.section.section-resources.bg-alt {background-color:var(--fill-tertiary);color:var(--glyph-gray);} html body[data-color-scheme='dark'] .developer-router-links {background-color:var(--fill-tertiary);color:var(--glyph-gray);} html body[data-color-scheme='dark'] .footer {background-color:var(--fill-tertiary);color:var(--glyph-gray-tertiary);} /* body backgrounds */ body[data-color-scheme='dark'].dmf {background-color: #000;} html body[data-color-scheme='dark'].dmf .bg-alt {background-color:var(--fill-tertiary);} html body[data-color-scheme='dark'].dmf .bg-blue {background-color:var(--fill-blue-secondary);} html body[data-color-scheme='dark'].dmf .bg-green-blue {background:linear-gradient(135deg, #65976d 0%, #588ea4 100%)} html body[data-color-scheme='dark'].dmf .bg-yellow {background: linear-gradient(to bottom, var(--fill-tertiary) 0%, var(--fill-tertiary-alt) 100%);} html body[data-color-scheme='dark'].dmf .bg-light {background-color:var(--fill-secondary-alt);} html body[data-color-scheme='dark'].dmf .bg-gradient, html body[data-color-scheme='dark'].dmf .bg-grad {background:linear-gradient(to bottom, var(--dark) 0%, var(--fill-gray-secondary-alt) 100%);} html body[data-color-scheme='dark'].dmf .bg-grad-down {background:linear-gradient(to bottom, var(--dark) 0%, var(--fill-gray-secondary-alt) 100%);} html body[data-color-scheme='dark'].dmf .bg-grad-up {background:linear-gradient(to bottom, var(--fill-gray-secondary-alt) 0%, var(--dark) 100%);} html body[data-color-scheme='dark'].dmf .bg-blue-gradient, html body[data-color-scheme='dark'].dmf .bg-gradient-blue {background:linear-gradient(to bottom, var(--fill-blue-gradient-light) 0%, var(--fill-blue-gradient-dark) 100%);} html body[data-color-scheme='dark'].dmf .bg-blue-gradient-alt {background: linear-gradient(90deg, #061830 0%, #102d48 100%);} /* globalNav */ html body[data-color-scheme='dark'] #ac-globalnav {background: var(--fill-tertiary);} /* localNav */ html body[data-color-scheme='dark'] .localnav.localnav-scrim .localnav-background, html body[data-color-scheme='dark'] .localnav-scrim.localnav.localnav-background { background-color: rgba(29, 29, 31, 0.9); } @supports ((-webkit-backdrop-filter: initial) or (backdrop-filter: initial)) { html body[data-color-scheme='dark'] .localnav.localnav-scrim .localnav-background, html body[data-color-scheme='dark'] .localnav-scrim.localnav.localnav-background { background-color: rgba(29, 29, 31, 0.72); } } </style> <link rel="stylesheet" href="/assets/styles/globalnav.css?55202406207" type="text/css" /> <link rel="stylesheet" href="/assets/styles/suggest-lang.css?17182448067" type="text/css" /> <div id="suggest-lang" class="ribbon hide" lang="en"> <div class="ribbon-content-wrapper"> <div class="ribbon-content row"> <div class="column large-12 large-centered"> <p><a href="#" id="suggest-link" class="ribbon-link more">View in English</a></p> <button id="suggest-closer" class="icon icon-after icon-reset" aria-label="Dismiss language suggestion" tabindex="0"></button> </div> </div> </div> </div> <script src="/assets/scripts/suggest-lang.js?17182448067"></script> <aside id="ac-gn-segmentbar" class="ac-gn-segmentbar" lang="en-US" dir="ltr"> </aside> <input type="checkbox" id="ac-gn-menustate" class="ac-gn-menustate" /> <nav id="ac-globalnav" class="no-js" role="navigation" aria-label="Global" data-hires="false" data-analytics-region="global nav" lang="en-US" dir="ltr" data-www-domain="www.apple.com" data-store-locale="us" data-store-root-path="/us" data-store-api="/[storefront]/shop/bag/status" data-search-locale="en_US" data-search-suggestions-api="/search-services/suggestions/" data-search-defaultlinks-api="/search-services/suggestions/defaultlinks/" data-search-suggestions-enabled="false"> <div class="ac-gn-content"> <ul class="ac-gn-header"> <li class="ac-gn-item ac-gn-menuicon"> <label class="ac-gn-menuicon-label" for="ac-gn-menustate" aria-hidden="true"> <span class="ac-gn-menuicon-bread ac-gn-menuicon-bread-top"> <span class="ac-gn-menuicon-bread-crust ac-gn-menuicon-bread-crust-top"></span> </span> <span class="ac-gn-menuicon-bread ac-gn-menuicon-bread-bottom"> <span class="ac-gn-menuicon-bread-crust ac-gn-menuicon-bread-crust-bottom"></span> </span> </label> <a href="#ac-gn-menustate" role="button" class="ac-gn-menuanchor ac-gn-menuanchor-open" id="ac-gn-menuanchor-open"> <span class="ac-gn-menuanchor-label">Global Nav Open Menu</span> </a> <a href="#" role="button" class="ac-gn-menuanchor ac-gn-menuanchor-close" id="ac-gn-menuanchor-close"> <span class="ac-gn-menuanchor-label">Global Nav Close Menu</span> </a> </li> <li class="ac-gn-item ac-gn-apple"> <a class="ac-gn-link ac-gn-link-apple-developer" href="/" data-analytics-title="appledeveloper home" id="ac-gn-firstfocus-small"> <span class="ac-gn-link-text">Apple Developer</span> </a> </li> </ul> <div class="ac-gn-search-placeholder-container" role="search"> <div class="ac-gn-search ac-gn-search-small"> <a id="ac-gn-link-search-small" class="ac-gn-link" href="/search/" data-analytics-title="search" data-analytics-click="search" data-analytics-intrapage-link aria-label="Search"> <div class="ac-gn-search-placeholder-bar"> <div class="ac-gn-search-placeholder-input"> <div class="ac-gn-search-placeholder-input-text" aria-hidden="true"> <div class="ac-gn-link-search ac-gn-search-placeholder-input-icon"></div> <span class="ac-gn-search-placeholder">Search</span> </div> </div> <div class="ac-gn-searchview-close ac-gn-searchview-close-small ac-gn-search-placeholder-searchview-close"> <span class="ac-gn-searchview-close-cancel" aria-hidden="true">Cancel</span> </div> </div> </a> </div> </div> <ul class="ac-gn-list"> <li class="ac-gn-item ac-gn-apple"> <a class="ac-gn-link ac-gn-link-apple-developer" href="/" data-analytics-title="appledeveloper home" id="ac-gn-firstfocus"> <span class="ac-gn-link-text">Apple Developer</span> </a> </li> <li class="ac-gn-item ac-gn-item-menu ac-gn-news"> <a class="ac-gn-link ac-gn-link-news" href="/news/" data-analytics-title="news"> <span class="ac-gn-link-text">News</span> </a> </li> <li class="ac-gn-item ac-gn-item-menu ac-gn-discover"> <a class="ac-gn-link ac-gn-link-discover" href="/discover/" data-analytics-title="discover"> <span class="ac-gn-link-text">Discover</span> </a> </li> <li class="ac-gn-item ac-gn-item-menu ac-gn-design"> <a class="ac-gn-link ac-gn-link-design" href="/design/" data-analytics-title="design"> <span class="ac-gn-link-text">Design</span> </a> </li> <li class="ac-gn-item ac-gn-item-menu ac-gn-develop"> <a class="ac-gn-link ac-gn-link-develop" href="/develop/" data-analytics-title="develop"> <span class="ac-gn-link-text">Develop</span> </a> </li> <li class="ac-gn-item ac-gn-item-menu ac-gn-distribute"> <a class="ac-gn-link ac-gn-link-distribute" href="/distribute/" data-analytics-title="distribute"> <span class="ac-gn-link-text">Distribute</span> </a> </li> <li class="ac-gn-item ac-gn-item-menu ac-gn-dsupport"> <a class="ac-gn-link ac-gn-link-dsupport" href="/support/" data-analytics-title="dsupport"> <span class="ac-gn-link-text">Support</span> </a> </li> <li class="ac-gn-item ac-gn-item-menu ac-gn-account"> <a class="ac-gn-link ac-gn-link-account" href="/account/" data-analytics-title="account"> <span class="ac-gn-link-text">Account</span> </a> </li> <li class="ac-gn-item ac-gn-item-menu ac-gn-search" role="search"> <a id="ac-gn-link-search" class="ac-gn-link ac-gn-link-search" href="/search/" data-analytics-title="search" data-analytics-click="search" data-analytics-intrapage-link aria-label="Search"></a> </li> </ul> <aside id="ac-gn-searchview" class="ac-gn-searchview" role="search" data-analytics-region="search"> <div class="ac-gn-searchview-content"> <div class="ac-gn-searchview-bar"> <div class="ac-gn-searchview-bar-wrapper"> <form id="ac-gn-searchform" class="ac-gn-searchform" action="/search/" method="get"> <div class="ac-gn-searchform-wrapper"> <input id="ac-gn-searchform-input" class="ac-gn-searchform-input" type="text" name="q" aria-label="Search" placeholder="Search" autocorrect="off" autocapitalize="off" autocomplete="off" spellcheck="false" role="combobox" aria-autocomplete="list" aria-expanded="true" aria-owns="quicklinks suggestions" /> <button id="ac-gn-searchform-submit" class="ac-gn-searchform-submit" type="submit" disabled aria-label="Submit Search"></button> <button id="ac-gn-searchform-reset" class="ac-gn-searchform-reset" type="reset" disabled aria-label="Clear Search"> <span class="ac-gn-searchform-reset-background"></span> </button> </div> </form> <button id="ac-gn-searchview-close-small" class="ac-gn-searchview-close ac-gn-searchview-close-small" aria-label="Cancel Search"> <span class="ac-gn-searchview-close-cancel" aria-hidden="true"> Cancel </span> </button> </div> </div> <aside id="ac-gn-searchresults" class="ac-gn-searchresults hidden" data-string-quicklinks="Quick Links" data-string-suggestions="Suggested Searches" data-string-noresults=""> <section class="ac-gn-searchresults-section ac-gn-searchresults-section-defaultlinks"> <div class="ac-gn-searchresults-section-wrapper"> <div class="search-group-checkbox hidden"><input id="group-input" type="checkbox" name="group-filter" checked>Only search within “<span id="group-search-label"></span>”</div> <h3 class="ac-gn-searchresults-header ac-gn-searchresults-animated">Quick Links</h3> <ul class="ac-gn-searchresults-list" id="defaultlinks" role="listbox"> </ul> <span role="status" class="ac-gn-searchresults-count" aria-live="polite">5 Quick Links</span> </div> </section> </aside> </div> <button id="ac-gn-searchview-close" class="ac-gn-searchview-close" aria-label="Cancel Search"> <span class="ac-gn-searchview-close-wrapper"> <span class="ac-gn-searchview-close-left"></span> <span class="ac-gn-searchview-close-right"></span> </span> </button> </aside> </div> </nav> <div class="ac-gn-blur"></div> <div id="ac-gn-curtain" class="ac-gn-curtain"></div> <div id="ac-gn-placeholder" class="ac-nav-placeholder"></div> <script src="/assets/scripts/ac-globalnav.built.js?17182448067"></script> <link rel="stylesheet" href="/assets/styles/search.css?17182448067"> <script src="/assets/scripts/search.js?17182448067"></script> <!-- metrics --> <script> /* RSID: */ var s_account="awdappledeveloper" </script> <script src="/assets/metrics/scripts/analytics.js?072620243"></script> <script> s.pageName= AC && AC.Tracking && AC.Tracking.pageName(); s.channel="www.en.developer" s.channel="www.en.developer"; /************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/ var s_code=s.t();if(s_code)document.write(s_code) </script> <!-- /metrics --> <main id="main" class="main" role="main"> <section class="section section-hero"> <div class="section-content"> <div class="row"> <div class="column large-centered large-8 medium-11 small-12 text-center"> <h1 class="typography-headline">App extensions</h1> <p class="typography-intro">App extensions let you extend custom functionality and content beyond your app and make it available to users while they’re interacting with other apps or the system. For example, your app can appear as a widget on the Home Screen, add new buttons in the action sheet, offer photo filters within the Photos app, or automatically upgrade users’ accounts to use strong passwords or Sign in with Apple. Use extensions to place the power of your app wherever your users need it most.</p> </div> </div> </div> <figure class="hero-lockup center"></figure> <div class="section-content"> <div class="row"> <div class="column large-centered large-10 small-12 text-center"> <h2>Types of app extensions</h2> <p>iOS, iPadOS, macOS, tvOS, visionOS, and watchOS support several types of extensions, each of which is tied to a single, well-scoped area of the system — such as sharing, Notification Center, or Safari.</p> </div> </div> <div class="row"> <div class="column large-12"> <table class="table-content typography-subbody"> <thead> <tr class="table-header"> <th scope="col" class="typography-label">Extension Point</th> <th scope="col" class="typography-label">Description</th> <th class="fixed-width" scope="col">iOS/iPadOS</th> <th class="fixed-width" scope="col">macOS</th> <th class="fixed-width" scope="col">tvOS</th> <th class="fixed-width" scope="col">visionOS</th> <th class="fixed-width" scope="col">watchOS</th> </tr> </thead> <tbody> <tr> <td><a href="/library/archive/documentation/General/Conceptual/ExtensibilityPG/Action.html#//apple_ref/doc/uid/TP40014214-CH13-SW1">Action<span class="loc-en-only"></span></a></td> <td>Add custom actions to the share sheet to invoke your app’s functionality from any app.</td> <td>●</td> <td>●</td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/library/archive/documentation/General/Conceptual/ExtensibilityPG/AudioUnit.html#//apple_ref/doc/uid/TP40014214-CH22-SW1">Audio Unit<span class="loc-en-only"></span></a></td> <td>Create and modify audio in any app that uses sound, including music production apps such as GarageBand or Logic Pro X.</td> <td>●</td> <td>●</td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/videos/play/tech-talks/301/">Authentication Services<span class="loc-en-only"></span></a></td> <td>Streamline authentication for users by enabling single sign-on.</td> <td>●</td> <td>●</td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/documentation/authenticationservices/upgrading_account_security_with_an_account_authentication_modification_extension/">Account Authentication Modification<span class="loc-en-only"></span></a></td> <td>Automatically upgrade user passwords to strong passwords, or convert accounts to use Sign in with Apple.</td> <td>●</td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td><a href="/videos/play/wwdc2018/204/">AutoFill Credential Provider<span class="loc-cj-sub"></span></a></td> <td>Surface credentials from your app in Password Autofill and pull your app’s password data into the Password AutoFill workflow.</td> <td>●</td> <td>●</td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/videos/play/wwdc2018/601/">Broadcast Setup UI / Broadcast UI<span class="loc-cj-sub"></span></a></td> <td>Capture the contents of a user’s screen to stream to a video broadcast service.</td> <td>●</td> <td>●</td> <td>●</td> <td>●</td> <td></td> </tr> <tr> <td><a href="/documentation/callkit/">Call Directory<span class="loc-en-only"></span></a></td> <td>Display caller identification from your appʼs custom contact list so users know who’s calling.</td> <td>●</td> <td></td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/documentation/classkit/clscontextprovider/">ClassKit Content Provider<span class="loc-en-only"></span></a></td> <td>Update the status of your appʼs activities so that status is visible in the Schoolwork app.</td> <td>●</td> <td>●</td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/documentation/safariservices/creating_a_content_blocker/">Content Blocker<span class="loc-en-only"></span></a></td> <td>Provide rules for hiding elements, blocking loads, and stripping cookies from Safari requests.</td> <td>●</td> <td>●</td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/documentation/uikit/keyboards_and_input/creating_a_custom_keyboard/">Custom Keyboard<span class="loc-en-only"></span></a></td> <td>Provide systemwide customized text input for unique input methods or specific languages.</td> <td>●</td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td><a href="/documentation/fileprovider/">File Provider<span class="loc-en-only"></span></a></td> <td>Let other apps access the documents and directories stored and managed by your app.</td> <td>●</td> <td>●</td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/documentation/fileproviderui/">File Provider UI<span class="loc-en-only"></span></a></td> <td>Add custom actions to the document browserʼs context menu for documents that your app manages.</td> <td>●</td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td><a href="/library/archive/documentation/General/Conceptual/ExtensibilityPG/Finder.html#//apple_ref/doc/uid/TP40014214-CH15-SW1">Finder Sync<span class="loc-en-only"></span></a></td> <td>Keep files in sync with a back-end storage service.</td> <td></td> <td>●</td> <td></td> <td></td> <td></td> </tr> <tr> <td><a href="/documentation/messages/">iMessage<span class="loc-en-only"></span></a></td> <td>Allow users to send text, stickers, media files, and interactive messages.</td> <td>●</td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td><a href="/documentation/sirikit/creating_an_intents_app_extension/">Intents<span class="loc-j"></span></a></td> <td>Let users interact with your app using Siri.</td> <td>●</td> <td>●</td> <td>●</td> <td>●</td> <td>●</td> </tr> <tr> <td><a href="/documentation/sirikit/creating_an_intents_ui_extension/">Intents UI<span class="loc-j"></span></a></td> <td>Customize the interface for interactions with your app in Siri conversations or Maps.</td> <td>●</td> <td></td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/documentation/corelocation/cllocationmanager/creating_a_location_push_service_extension/">Location Push Service<span class="loc-en-only"></span></a></td> <td>Enables 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).</td> <td>●</td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td><a href="/documentation/mailkit/meextension/">Mail<span class="loc-en-only"></span></a></td> <td>Enhance Mail by adding custom actions, blocking content, signing and encoding messages, and more.</td> <td></td> <td>●</td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/documentation/sms_and_call_reporting/sms_and_mms_message_filtering/">Message Filter<span class="loc-en-only"></span></a></td> <td>Identify and filter unwanted SMS and MMS messages.</td> <td>●</td> <td></td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/videos/play/wwdc2019/714/">Network<span class="loc-cj-sub"></span></a></td> <td>Provide system-level networking services such as VPN, proxies, or content filtering.</td> <td>●</td> <td>●</td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/documentation/usernotificationsui/customizing_the_appearance_of_notifications/">Notification Center<span class="loc-en-only"></span></a></td> <td>Customize the appearance of your app’s notification alerts.</td> <td>●</td> <td>●</td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/documentation/usernotifications/modifying_content_in_newly_delivered_notifications/">Notification Service<span class="loc-en-only"></span></a></td> <td>Modify the payload of a remote notification before it’s displayed on the user’s device.</td> <td>●</td> <td>●</td> <td></td> <td>●</td> <td>●</td> </tr> <tr> <td><a href="/documentation/cryptotokenkit/authenticating_users_with_a_cryptographic_token/">Persistent Token<span class="loc-en-only"></span></a></td> <td>Grant access to user accounts and the keychain using a token.</td> <td>●</td> <td>●</td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/documentation/photokit/creating_photo_editing_extensions/">Photo Editing<span class="loc-en-only"></span></a></td> <td>Allow your app to edit assets directly within the Photos app.</td> <td>●</td> <td>●</td> <td></td> <td></td> <td></td> </tr> <tr> <td><a href="/documentation/photokit/creating_a_slideshow_project_extension_for_photos/">Photo Project<span class="loc-en-only"></span></a></td> <td>Augment the macOS Photos app with extensions that support project creation.</td> <td></td> <td>●</td> <td></td> <td></td> <td></td> </tr> <tr> <td><a href="/documentation/quicklook">Quick Look Preview<span class="loc-en-only"></span></a></td> <td>Provide previews of documents your app owns so they can be viewed in any app.</td> <td>●</td> <td>●</td> <td></td> <td></td> <td></td> </tr> <tr> <td><a href="/documentation/safariservices/">Safari Services<span class="loc-en-only"></span></a></td> <td>Extend the web-browsing experience in Safari by leveraging web technologies and native code.</td> <td></td> <td>●</td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/library/archive/documentation/General/Conceptual/ExtensibilityPG/Share.html#//apple_ref/doc/uid/TP40014214-CH12-SW1">Share<span class="loc-en-only"></span></a></td> <td>Let users post to your social-network service from any app.</td> <td>●</td> <td>●</td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/documentation/cryptotokenkit/authenticating_users_with_a_cryptographic_token/">Smart Card Token<span class="loc-en-only"></span></a></td> <td>Grant access to user accounts and the keychain using a hardware-based token.</td> <td></td> <td>●</td> <td></td> <td></td> <td></td> </tr> <tr> <td><a href="/documentation/corespotlight/csimportextension/">Spotlight Import<span class="loc-en-only"></span></a></td> <td>Make content in your app searchable in Spotlight, Safari, Siri, and more.</td> <td>●</td> <td>●</td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/documentation/messages/">Sticker Pack<span class="loc-en-only"></span></a></td> <td>Add custom stickers to Messages.</td> <td>●</td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td><a href="/documentation/quicklookthumbnailing/providing_thumbnails_of_your_custom_file_types/">Thumbnail<span class="loc-en-only"></span></a></td> <td>Display thumbnails of your custom document types in all apps.</td> <td>●</td> <td>●</td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/documentation/tvservices/">TV Top Shelf<span class="loc-en-only"></span></a></td> <td>Help users discover your app by providing Top Shelf content and a description of your tvOS app.</td> <td></td> <td></td> <td>●</td> <td></td> <td></td> </tr> <tr> <td><a href="/documentation/sms_and_call_reporting/sms_and_call_spam_reporting/">Unwanted Communication<span class="loc-en-only"></span></a></td> <td>Block incoming phone calls using your app’s custom unsolicited caller database.</td> <td>●</td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td><a href="/documentation/eventkit/ekvirtualconferenceprovider/">Virtual Conference<span class="loc-en-only"></span></a></td> <td>Integrate your video conferencing service directly into events on user’s calendars.</td> <td>●</td> <td>●</td> <td></td> <td>●</td> <td></td> </tr> <tr> <td><a href="/documentation/widgetkit/creating-a-widget-extension/">Widgets<span class="loc-en-only"></span></a></td> <td>Show relevant, glanceable content from your app on the iOS Home Screen and Lock Screen, macOS Notification Center, and as complications in watchOS.</td> <td>●</td> <td>●</td> <td></td> <td></td> <td>●</td> </tr> <tr> <td><a href="/documentation/xcodekit/creating_a_source_editor_extension/">Xcode Source Editor<span class="loc-en-only"></span></a></td> <td>Provide custom editing features directly inside Xcode’s source editor.</td> <td></td> <td>●</td> <td></td> <td></td> <td></td> </tr> </tbody> </table> </div> </div> </div> </section> <section class="section section-resources bg-alt"> <div class="section-content"> <div class="row"> <div class="column large-centered large-8 medium-10 small-12 text-center"> <figure class="icon-xcode center"></figure> <h2>Tools and resources</h2> <p>Use Xcode and these resources to build your app extensions.</p> <p><a href="/download/" class="icon icon-after icon-downloadcircle">Download Xcode<span class="loc-en-only"></span></a></p> </div> </div> </div> </section> </main> <link rel="stylesheet" href="/assets/styles/router-strip.css" type="text/css" /> <link rel="stylesheet" type="text/css" href="/assets/styles/router-strip.css?Sunday, 02-Jun-2024 22:20:04 GMT" /> <aside class="section developer-router-links bg-alt"> <div class="section-content"> <div class="row"> <div class="column large-3 medium-6 small-6"> <a href="/design/human-interface-guidelines/system-experiences/" class="block text-center"> <img src="/assets/elements/icons/symbols/paintbrush.svg" height="50" alt="" class="router-design"> <p><span class="block-link">Learn how to design system experiences</span></p> </a> </div> <div class="column large-3 medium-6 small-6"> <a href="/documentation/technologies?tags=App%20Extensions" class="block text-center"> <img src="/assets/elements/icons/symbols/book-pages.svg" height="50" alt=""> <p><span class="block-link">Browse the latest documentation<span class="loc-en-only"></span></span></p> </a> </div> <div class="column large-3 medium-6 small-6"> <a href="/videos/all-videos/" class="block text-center"> <img src="/assets/elements/icons/symbols/play-circle.svg" height="50" alt=""> <p><span class="block-link">Watch the latest session videos</span></p> </a> </div> <div class="column large-3 medium-6 small-6"> <a href="/forums/tags/extensions" class="block text-center"> <img src="/assets/elements/icons/symbols/bubble-left-and-text-bubble-right.svg" height="50" alt=""> <p><span class="block-link">Ask questions on the forums<span class="loc-en-only"></span></span></p> </a> </div> </div> </div> </aside> <link rel="stylesheet" href="/assets/styles/footer.dist.css?17182448067"> <footer id="footer" class="footer" role="contentinfo" aria-labelledby="footer-label"> <div class="footer-content"> <h2 class="footer-label" id="footer-label">Developer Footer</h2> <developer-breadcrumbs> <li>App Extensions Overview</li> </developer-breadcrumbs> <nav class="footer-directory" aria-label="Apple Developer Directory" role="navigation"> <!--googleoff: all--> <div class="footer-directory-column"> <input class="footer-directory-column-section-state" type="checkbox" id="footer-directory-column-section-state-platform" /> <div class="footer-directory-column-section"> <label class="footer-directory-column-section-label" for="footer-directory-column-section-state-platform"> <h3 class="footer-directory-column-section-title">Platforms</h3> </label> <a href="#footer-directory-column-section-state-platform" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-open"> <span class="footer-directory-column-section-anchor-label">Open Menu</span> </a> <a href="#" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-close"> <span class="footer-directory-column-section-anchor-label">Close Menu</span> </a> <ul class="footer-directory-column-section-list"> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/ios/">iOS</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/ipados/">iPadOS</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/macos/">macOS</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/tvos/">tvOS</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/visionos/">visionOS</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/watchos/">watchOS</a></li> </ul> </div> <input class="footer-directory-column-section-state" type="checkbox" id="footer-directory-column-section-state-tools" /> <div class="footer-directory-column-section"> <label class="footer-directory-column-section-label" for="footer-directory-column-section-state-tools"> <h3 class="footer-directory-column-section-title">Tools</h3> </label> <a href="#footer-directory-column-section-state-tools" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-open"> <span class="footer-directory-column-section-anchor-label">Open Menu</span> </a> <a href="#" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-close"> <span class="footer-directory-column-section-anchor-label">Close Menu</span> </a> <ul class="footer-directory-column-section-list"> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/swift/">Swift</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/swiftui/">SwiftUI</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/swift-playgrounds/">Swift Playgrounds</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/testflight/">TestFlight</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/xcode/">Xcode</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/xcode-cloud/">Xcode Cloud</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/sf-symbols/">SF Symbols</a></li> </ul> </div> </div> <div class="footer-directory-column"> <input class="footer-directory-column-section-state" type="checkbox" id="footer-directory-column-section-state-topics" /> <div class="footer-directory-column-section"> <label class="footer-directory-column-section-label" for="footer-directory-column-section-state-topics"> <h3 class="footer-directory-column-section-title">Topics & Technologies</h3> </label> <a href="#footer-directory-column-section-state-topics" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-open"> <span class="footer-directory-column-section-anchor-label">Open Menu</span> </a> <a href="#" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-close"> <span class="footer-directory-column-section-anchor-label">Close Menu</span> </a> <ul class="footer-directory-column-section-list"> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/accessibility/">Accessibility</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/accessories/">Accessories</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/app-extensions/">App Extensions</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/app-store/">App Store</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/audio/">Audio & Video</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/augmented-reality/">Augmented Reality</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/design/">Design</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/distribute/">Distribution</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/education/">Education</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/fonts/">Fonts</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/games/">Games</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/health-fitness/">Health & Fitness</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/in-app-purchase/">In-App Purchase</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/localization/">Localization</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/maps/">Maps & Location</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/machine-learning/">Machine Learning</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="https://opensource.apple.com">Open Source</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/security/">Security</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/safari/">Safari & Web</a></li> </ul> </div> </div> <div class="footer-directory-column"> <input class="footer-directory-column-section-state" type="checkbox" id="footer-directory-column-section-state-resources" /> <div class="footer-directory-column-section"> <label class="footer-directory-column-section-label" for="footer-directory-column-section-state-resources"> <h3 class="footer-directory-column-section-title">Resources</h3> </label> <a href="#footer-directory-column-section-state-resources" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-open"> <span class="footer-directory-column-section-anchor-label">Open Menu</span> </a> <a href="#" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-close"> <span class="footer-directory-column-section-anchor-label">Close Menu</span> </a> <ul class="footer-directory-column-section-list"> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/documentation/">Documentation</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/learn/">Tutorials</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/download/">Downloads</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/forums/">Forums</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/videos/">Videos</a></li> </ul> </div> <input class="footer-directory-column-section-state" type="checkbox" id="footer-directory-column-section-state-support" /> <div class="footer-directory-column-section"> <label class="footer-directory-column-section-label" for="footer-directory-column-section-state-support"> <h3 class="footer-directory-column-section-title">Support</h3> </label> <a href="#footer-directory-column-section-state-support" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-open"> <span class="footer-directory-column-section-anchor-label">Open Menu</span> </a> <a href="#" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-close"> <span class="footer-directory-column-section-anchor-label">Close Menu</span> </a> <ul class="footer-directory-column-section-list"> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/support/articles/">Support Articles</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/contact/">Contact Us</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/bug-reporting/">Bug Reporting</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/system-status/">System Status</a></li> </ul> </div> <input class="footer-directory-column-section-state" type="checkbox" id="footer-directory-column-section-state-account" /> <div class="footer-directory-column-section"> <label class="footer-directory-column-section-label" for="footer-directory-column-section-state-account"> <h3 class="footer-directory-column-section-title">Account</h3> </label> <a href="#footer-directory-column-section-state-account" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-open"> <span class="footer-directory-column-section-anchor-label">Open Menu</span> </a> <a href="#" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-close"> <span class="footer-directory-column-section-anchor-label">Close Menu</span> </a> <ul class="footer-directory-column-section-list"> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/account/">Apple Developer</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="https://appstoreconnect.apple.com/">App Store Connect</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/account/ios/certificate/">Certificates, IDs, & Profiles</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="https://feedbackassistant.apple.com/">Feedback Assistant</a></li> </ul> </div> </div> <div class="footer-directory-column"> <input class="footer-directory-column-section-state" type="checkbox" id="footer-directory-column-section-state-programs" /> <div class="footer-directory-column-section"> <label class="footer-directory-column-section-label" for="footer-directory-column-section-state-programs"> <h3 class="footer-directory-column-section-title">Programs</h3> </label> <a href="#footer-directory-column-section-state-programs" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-open"> <span class="footer-directory-column-section-anchor-label">Open Menu</span> </a> <a href="#" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-close"> <span class="footer-directory-column-section-anchor-label">Close Menu</span> </a> <ul class="footer-directory-column-section-list"> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/programs/">Apple Developer Program</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/programs/enterprise/">Apple Developer Enterprise Program</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/app-store/small-business-program/">App Store Small Business Program</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="https://mfi.apple.com/">MFi Program</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/programs/news-partner/">News Partner Program</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/programs/video-partner/">Video Partner Program</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/security-bounty/">Security Bounty Program</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/programs/security-research-device/">Security Research Device Program</a></li> </ul> </div> <input class="footer-directory-column-section-state" type="checkbox" id="footer-directory-column-section-state-events" /> <div class="footer-directory-column-section"> <label class="footer-directory-column-section-label" for="footer-directory-column-section-state-events"> <h3 class="footer-directory-column-section-title">Events</h3> </label> <a href="#footer-directory-column-section-state-events" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-open"> <span class="footer-directory-column-section-anchor-label">Open Menu</span> </a> <a href="#" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-close"> <span class="footer-directory-column-section-anchor-label">Close Menu</span> </a> <ul class="footer-directory-column-section-list"> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/events/">Meet with Apple</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/events/developer-centers/">Apple Developer Centers</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/app-store/app-store-awards/">App Store Awards</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/design/awards/">Apple Design Awards</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/academies/">Apple Developer Academies</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/entrepreneur-camp/">Entrepreneur Camp</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/wwdc/">WWDC</a></li> </ul> </div> </div> <!--googleon: all--> </nav> <section class="footer-mini" vocab="http://schema.org/" typeof="Organization"> <div class="footer-mini-news"> <div class="copy"> Get the <a href="https://apps.apple.com/us/app/apple-developer/id640199958">Apple Developer app</a>. </div> <div class="content"> <div class="color-scheme-toggle" role="radiogroup" tabindex="0" aria-label="Select a color scheme preference"> <label data-color-scheme-option="light"> <input type="radio" value="light" autocomplete="off" onchange="window.setPreferredColorScheme(event.target.value)" /> <div class="text">Light</div> </label> <label data-color-scheme-option="dark"> <input type="radio" value="dark" autocomplete="off" onchange="window.setPreferredColorScheme(event.target.value)" /> <div class="text">Dark</div> </label> <label data-color-scheme-option="auto"> <input type="radio" value="auto" autocomplete="off" onchange="window.setPreferredColorScheme(event.target.value)" /> <div class="text">Auto</div> </label> </div> <script async src="/assets/scripts/color-scheme-toggle.js"></script> </div> </div> <link rel="stylesheet" href="/assets/styles/language-dropdown.css?17182448067"> <div class="language-dropdown dropdown-container legacy-form hidden"> <select class="dropdown" aria-label="Language Dropdown"></select> <span class="dropdown-icon icon icon-chevrondown" aria-hidden="true"></span> </div> <script src="/assets/scripts/language-dropdown.js?17182448067"></script> <div class="footer-mini-legal"> <div class="footer-mini-legal-copyright">Copyright © 2024 <a href="https://www.apple.com">Apple Inc.</a> All rights reserved.</div> <div class="footer-mini-legal-links"> <a class="footer-mini-legal-link" href="https://www.apple.com/legal/internet-services/terms/site.html" class="first">Terms of Use</a> <a class="footer-mini-legal-link" href="https://www.apple.com/legal/privacy/">Privacy Policy</a> <a class="footer-mini-legal-link" href="/support/terms/">Agreements and Guidelines</a> </div> </div> </section> </div> </footer> <script src="/app-extensions/scripts/sticky-header.js"></script> </body> </html>