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

# Safari web extensions

Create web extensions that work in Safari and other browsers.

## Overview

Overview A Safari web extension adds custom functionality to Safari using JavaScript APIs and common file formats from extensions for Google Chrome, Mozilla Firefox, and Microsoft Edge browsers. While Safari app extensions are useful for sharing code between your native macOS app and Safari, you build Safari web extensions primarily on JavaScript, HTML, and CSS, and can repackage them to work in other browsers. You can also use Safari web extensions in Mac web apps. important: You implement a Safari web extension as a macOS, visionOS, or iOS app extension to provide a safe and secure distribution and usage model. You can distribute a Safari web extension with a Mac app, a visionOS app, an iOS app, or a Mac app created using Mac Catalyst. Use Xcode to package your extension for testing and distribution, and join the Apple Developer Program to distribute Safari web extensions. For more information, see Distributing your Safari web extension. To get started with creating a Safari web extension, use one of the following options: Package your existing extension into a Safari web extension, so you can use it in Safari in macOS, visionOS, and iOS and distribute it. Xcode includes a command-line tool to simplify this process. Build a new Safari web extension in Xcode using the built-in template. You can then repackage the extension files for deployment in other browsers. Temporarily install your web extension in Safari for testing without packaging it or setting up an Xcode project. For more information, see Temporarily install a web extension folder in macOS Safari. Learn more about the capabilities of web extensions and the APIs you use to build them in Mozilla’s Browser Extensions documentation. Safari web extensions are available in macOS with Safari 14 and later, visionOS 1 and later, and iOS 15 and later. Safari web extensions are available in Mac web apps in macOS 15 and later.

## Topics

### New extensions

- [Creating a Safari web extension](safariservices/creating-a-safari-web-extension.md)
- [Building and testing a Safari web extension](safariservices/building-and-testing-a-safari-web-extension.md)
- [Modernizing Safari Web Extensions](safariservices/modernizing-safari-web-extensions.md)
- [Developing a Safari Web Extension](safariservices/developing-a-safari-web-extension.md)

### Extension conversions and packaging

- [Packaging a web extension for Safari](safariservices/packaging-a-web-extension-for-safari.md)
- [Packaging and distributing Safari Web Extensions with App Store Connect](safariservices/packaging-and-distributing-safari-web-extensions-with-app-store-connect.md)
- [Converting a Safari app extension to a Safari web extension](safariservices/converting-a-safari-app-extension-to-a-safari-web-extension.md)

### Extension updates

- [Updating a Safari web extension](safariservices/updating-a-safari-web-extension.md)
- [Managing Safari web extension permissions](safariservices/managing-safari-web-extension-permissions.md)
- [Previewing Metadata using Open Graph](safariservices/previewing-metadata-using-open-graph.md)

### Checking extension state

- [SFSafariExtensionManager](safariservices/sfsafariextensionmanager.md)
- [SFSafariExtensionState](safariservices/sfsafariextensionstate.md)

### Messaging

- [Messaging between the app and JavaScript in a Safari web extension](safariservices/messaging-between-the-app-and-javascript-in-a-safari-web-extension.md)
- [SFExtensionMessageKey](safariservices/sfextensionmessagekey.md)
- [SFExtensionProfileKey](safariservices/sfextensionprofilekey.md)
- [Messaging a Web Extension’s Native App](safariservices/messaging-a-web-extension-s-native-app.md)
- [Messaging between a webpage and your Safari web extension](safariservices/messaging-between-a-webpage-and-your-safari-web-extension.md)

### Blocking content

- [Blocking content with your Safari web extension](safariservices/blocking-content-with-your-safari-web-extension.md)
- [Adopting Declarative Content Blocking in Safari Web Extensions](safariservices/adopting-declarative-content-blocking-in-safari-web-extensions.md)

### Adding Web Inspector tools

- [Adding a web development tool to Safari Web Inspector](safariservices/adding-a-web-development-tool-to-safari-web-inspector.md)
- [Creating Safari Web Inspector extensions](safariservices/creating-safari-web-inspector-extensions.md)

### Extension improvements

- [Optimizing your web extension for Safari](safariservices/optimizing-your-web-extension-for-safari.md)
- [Adopting New Safari Web Extension APIs](safariservices/adopting-new-safari-web-extension-apis.md)
- [Syncing Safari web extensions across devices and platforms](safariservices/syncing-safari-web-extensions-across-devices-and-platforms.md)
- [Assessing your Safari web extension’s browser compatibility](safariservices/assessing-your-safari-web-extension-s-browser-compatibility.md)
- [Troubleshooting your Safari web extension](safariservices/troubleshooting-your-safari-web-extension.md)

### Installation and distribution

- [Running your Safari web extension](safariservices/running-your-safari-web-extension.md)
- [Distributing your Safari web extension](safariservices/distributing-your-safari-web-extension.md)
