Safari Extensions

From IndieWeb

Safari Extensions were a way to modify the Safari browser with HTML and JavaScript, replaced by Safari App Extensions. They could previously be found on Apple’s Safari Extensions Gallery (https://extensions.apple.com), until September 2019.

At WWDC 2020, in June 2020, Apple introduced Safari Web Extensions. These are once again allowing extension development with web technology through WebExtensions APIs, giving an alternative to Safari App Extensions. This was part of the Safari version 14 release.

Controversy

On 2015-06-08, Apple revealed their new Apple Developer Program merging the three previous programs (iOS Developer Program, Mac Developer Program, and Safari Developer Program) into one. The merging means people who previously paid for 2 programs will end up only paying the single fee of 99 USD. [1]

Everyone who is a member of the free Safari Developer Program received an email stating they “can continue building Safari extensions and bring [their] creativity to other Apple platforms by joining the Apple Developer Program.” That means going from free to a yearly 99 USD payment.

This does not only effect people who want to distribute their extensions through Apple. Safari has always required a Safari Developer Certificate to install an extension through the Extension Builder. Users can no longer download the source of an extension and build it themselves, or even contribute to open-source extensions without joining the Apple Developer Program.

Apple states your “existing Safari Developer Program membership will remain active until July 8, 2015 and your Safari extensions will continue to work for existing users.” This presumably means Apple will force all certificates to be invalid after July 8.

Deprecation

As of Safari 12, Extensions are deprecated in favour of Safari App Extensions. These new App Extensions will work with native Object-C and Swift code instead of just HTML and JavaScript.

According to the conversion guide support for HTML background pages (as used for running code in WebExtensions) is dropped completely and popovers will have to be created with AppKit.

As of September 2019, the Safari Extensions Gallery was shutdown completely. App Extensions have to be downloaded from the Mac App Store instead. Presumably all the old extensions have now been lost. Per Jeff Johnson, developers only had about a week notice to the sudden shutdown.

Resurrection as Web Extensions

As of Safari 14, there is again an option to develop browser extensions without the need for Swift or Objective-C programming. From the WWDC 2020 announcement, emphasis added:

But what if you aren't familiar with this style of development, but are instead a web developer familiar with JavaScript, HTML, and CSS. Maybe you even have an extension written for another major web browser and you don't want to rewrite it in native code. This year we are thrilled to announce that Safari is adding support for web extensions on macOS. There are built primarily using JavaScript, HTML, and CSS, similar to legacy Safari extensions, but this type of extension brings along significant improvements. You can use the same extension model and APIs that you're already familiar with in other browsers.

These new Safari Web Extensions still come with a catch just like the Safari App Extensions:

You have to adapt it for WebKit, join Apple’s $99/year developer program, learn how to use Xcode and App Store Connect, and distribute via the Mac App Store.

Because distribution happens via the Mac App Store, all extensions must go through Apple’s review process. Thomas Reed tweeted on 2021-07-29 that Apple is not allowing extensions from submitters not classified as a "reputable company". Michael Tsai collected some of the follow-up on his blog.

See Also