In 2015, a community working group formed under the W3C to create a single standard application programming interface (API) for browser extensions. While that goal is unlikely to be achieved, the majority of browsers already use the same or very similar APIs due to the popularity of Google Chrome.
Because of Chrome’s success, Microsoft created a very similar extension API for its Edge browser, with the goal of making it easy for Chrome extension developers to port their work to Edge. But after three years Edge still had a disappointingly small market share, so Microsoft rebuilt it as a Chromium-based browser. (Chromium is Google’s open-source project that serves as the functional core of Chrome and many other browsers.) Now that Edge has the same API as Chrome, extensions can be installed directly from the Chrome Web Store.
With its own market share in decline, Mozilla also decided to conform. In 2015, the organization announced that the long-standing XUL and XPCOM extension capabilities of Firefox would be replaced with a less-permissive API very similar to Chrome’s. This change was enacted in 2017. Firefox extensions are now largely compatible with their Chrome counterparts.
Until 2020, Apple was the lone major exception to this trend, as its API for Safari required using the Xcode tool to create extensions. With the release of Safari 14 for macOS, the browser added support for Web extensions developed with the Chrome API. The following year, Safari 15 brought Web extension support to iOS for the first time. Unlike other browsers, such Chrome or Firefox, all Safari Web Extensions are distributed as part of a standard iOS or macOS application. As a result, all Safari extensions on iOS are subject to App Store Review, while those on macOS can be distributed outside the Mac App Store if the developer chooses to.