A huge YMMV here - a lot of the more complex extensions need to be updated to work with Safari, but straight-forward extensions generally work. I am most definitely not a developer so please do not expect expert troubleshooting help from me. If you run into an issue I might be able to help, but I have a tiny developer brain. It's not good for much.
With that out of the way, let's go!
Big asterisk: From the limited testing I've done you can't convert extensions on Catalina with Xcode 12 installed BUT you can build them. What I've done is converted the extensions on my macOS 11 machine and then copied them over to my Catalina machine and built there. These extensions will run in the Safari 14 beta for Catalina.
I hope this is useful for y'all. If you successfully build and run other extensions, please post your success here for others.
With that out of the way, let's go!
- First, you need to be on Big Sur with the latest Xcode (12) installed. But! There's a big asterisk to this which I'll get to later.
- The way I've done this is to make sure the extension I want to convert is installed in Chrome first. Open Chrome's Extensions screen and find the extension you want to convert.
- Look for the extension ID, which is a long string of numbers and letters. Copy that and paste it somewhere handy.
- Find the path to your Chrome extensions folder. This depends on which build channel you're using (release, dev, canary). I run Canary so my extensions folder is
Bash:
/Users/[me]/Library/Application Suport/Google/Chrome Canary/Default/Extensions/
- Launch the terminal and run the command to convert the Chrome extension into an Xcode format:
Bash:
xcrun safari-web-extension-converter /big/ass/path/to/chrome/extensions/from/above/{EXTENSION ID}/{some version number}
- Double-check the settings xcrun returns.
- Xcode project location is where xcrun will save the converted extension
- Leave all of the other settings at default (although you can change the app name and app bundle ID if you really want to). Leave the language set to Swift.
- After xcrun is done, Xcode will launch with the extension loaded as a new project. You will probably need to change the code signing settings (found under Signing & Capabilities). I've only ever built these code signed to my existing developer account. You might be able to set this to "None" and "Sign to run locally" but caveat nerd - troubleshooting code signing issues are not my strong point.
- Make sure you set both Targets to the same signing settings.
- Go to the Product menu > Build for and select Running. The other settings might work as well, but this is what I've always done
- The build should be "Successful". This is where you drink.
- Now launch Safari and look under the Extensions preferences - you should see the new extension there, waiting to be checked off and activated.
- If you built your extension unsigned (or signed locally), you'll need to turn on the Develop menu (Preferences > Advanced > Show Develop menu in menu bar) and enable Allow Unsigned Extensions before you can turn on your extension.
Big asterisk: From the limited testing I've done you can't convert extensions on Catalina with Xcode 12 installed BUT you can build them. What I've done is converted the extensions on my macOS 11 machine and then copied them over to my Catalina machine and built there. These extensions will run in the Safari 14 beta for Catalina.
I hope this is useful for y'all. If you successfully build and run other extensions, please post your success here for others.
Last edited: