WebExtensions/Spec

From MozillaWiki
Jump to: navigation, search

Status: draft

Mozilla has worked with Microsoft and Opera to implement browser extensions so that developers can write extensions that work across multiple browsers. The preliminary specification matches what Google has implemented in Chrome so that extensions will work on Chrome, Edge, Opera and Firefox.

The specification can be found on GitHub.

Mozilla will continue to work on refining and approving the common browser extension specification as part of our support for open Web standards. While that process proceeds at its own pace, however, the Firefox team will continue to innovate within the WebExtensions API, providing additional features that allow developers to create increasingly creative and powerful extensions. Some of these new API may be relevant to other browsers and we will work within the standards track process to ensure their availability as an open Web standard. Other API may make sense only within the context of the Firefox browser. To understand the current status of any given API, developers should consult the status-information property of the API on MDN.

The status-information property contains three fields, which can be used to interpret the specification status of an API as follows:

If deprecated is TRUE, ignore all other fields. This API is deprecated. Otherwise, use the value of the experimental and standards_track fields to determine the status of the API as follows (the two MDN fields gives us four possible states):

experimental
TRUE FALSE
standards_track TRUE 3 4
FALSE 1 2
  • 1 - Firefox-only (preliminary): an API in the initial stages of development and not part of any standards track. It may be a prototype or only partially implemented and is likely to change.
  • 2 - Firefox-only (stable): a stable API that is unlikely to change, it is not part of any standards track. It may pertain to a Firefox-specific issue or feature. Examples could be the geckoProfiler API or contextual identity API.
  • 3 - Experimental: a stable API that is recommended as a standard but not part of a track yet. This API could change as part of the standards process. An example could be the find API.
  • 4 - Standard: an API that is on a standards track or already part of an approved standard, it is very unlikely to change. Any deviation in Firefox is tracked in bug 1392434.
  • Deprecated: this API might be removed and we do not recommend using it. See also draft deprecation plans.

There is a possible progression from “Firefox-only” to “Experimental” to “Standard”. For example, the contextual identity API could start as a Firefox-only API. If other browsers found that feature to be useful, they may choose to implement it. It could then be moved from Firefox-only over to Experimental in the hopes that it could be standardized. Once it was formally proposed as part of a standard, its status would change to Standard.

At this time (October 2017) Firefox implements most of the browser extensions standard across Firefox. Firefox for Android is not as complete.