---
title: Safari app extensions
framework: safariservices
role: collectionGroup
role_heading: API Collection
path: safariservices/safari-app-extensions
---

# Safari app extensions

Learn how Safari app extensions extend the web-browsing experience in Safari by leveraging web technologies and native code.

## Overview

Overview A Safari app extension can add new functionality to Safari by reading and modifying webpage content. These capabilities enhance the tools you use, the tasks you can accomplish, and the data you can access in your browser. A Safari app extension is uniquely useful because it can communicate with a native app. Sharing data between an app and Safari lets you integrate app content into Safari or send web data back to the app, enabling a unified experience for a web version and a native version of an app.

note: Previously, Safari extensions provided the communication between apps and Safari. To migrate a legacy Safari extension, see Converting a legacy Safari extension to a Safari app extension. Safari app extensions use a combination of JavaScript, CSS, and native code written in Objective-C or Swift. Because you build Safari app extensions on the standard app extension model, you get many native app benefits: You bundle Safari app extensions inside your app and distribute them through the App Store. You can distribute a Safari app extension with a Mac app or a Mac Catalyst app. Because you distribute your app and your Safari app extension together, you minimize the chances of installing mismatched versions. Your Safari app extension can securely communicate with your app using shared resources. To become familiar with app extension concepts, see App Extensions. If you’re interested in deploying an extension you build for Chrome, Firefox, or Edge in Safari, or creating an extension that works in Safari and other browsers, see Safari web extensions.

## Topics

### Essentials

- [Building a Safari app extension](safariservices/building-a-safari-app-extension.md)
- [Converting a legacy Safari extension to a Safari app extension](safariservices/converting-a-legacy-safari-extension-to-a-safari-app-extension.md)
- [Troubleshooting your Safari app extension](safariservices/troubleshooting-your-safari-app-extension.md)

### Injected style sheets and scripts

- [Using injected style sheets and scripts](safariservices/using-injected-style-sheets-and-scripts.md)
- [Injecting a script into a webpage](safariservices/injecting-a-script-into-a-webpage.md)
- [Injecting CSS style sheets into a webpage](safariservices/injecting-css-style-sheets-into-a-webpage.md)
- [Passing messages between Safari app extensions and injected scripts](safariservices/passing-messages-between-safari-app-extensions-and-injected-scripts.md)
- [SFSafariExtensionHandler](safariservices/sfsafariextensionhandler.md)
- [SFSafariExtensionManager](safariservices/sfsafariextensionmanager.md)
- [SFSafariExtensionState](safariservices/sfsafariextensionstate.md)
- [SFSafariPageProperties](safariservices/sfsafaripageproperties.md)
- [SFSafariExtensionHandling](safariservices/sfsafariextensionhandling.md)
- [SFExtensionProfileKey](safariservices/sfextensionprofilekey.md)

### Information property list keys

- [Safari app extension information property list keys](safariservices/safari-app-extension-information-property-list-keys.md)

## See Also

### Related Documentation

- [Safari app extensions](safariservices/safari-app-extensions.md)
- [Safari web extensions](safariservices/safari-web-extensions.md)

### Safari app extensions

- [SFSafariExtension](safariservices/sfsafariextension.md)
- [SFSafariApplication](safariservices/sfsafariapplication.md)
- [SFSafariWindow](safariservices/sfsafariwindow.md)
- [SFSafariPage](safariservices/sfsafaripage.md)
- [SFSafariTab](safariservices/sfsafaritab.md)
