Anything that can be done in the Add-on SDK can be done in a bootstrapped extension (Add-on SDK extensions are bootstrapped add-ons with some JavaScript based API layers). Most, but not all, of the things that can be done in overlay/XUL/Legacy extensions can be accomplished in bootstrapped add-ons. They usually, but not always, also contain a chrome.manifest file that describes how the files and directories in the extension relate to the Mozilla application (e.g. These add-ons contain a install.rdf file that describes the add-on. These add-ons have a JavaScript file called bootstrap.js which must contain entry points (functions) which are called for add-on startup(), shutdown(), install() and uninstall(). Many also interact with Firefox using XUL.
These add-ons use HTML and CSS in addition to Javascript. For that reason, there is a tendency to no longer use "restartless" as the name for this type of add-on. Using "restartless" as the name for this type of add-on is confusing because both Add-on SDK and WebExtension add-ons also do not require the application to be restarted upon load or unload of the add-on.
However, restartless is a descriptor of how they function. However, many such things bypass the SDK which forfeits a significant portion of the benefits of using the Add-on SDK.īootstrapped: These extensions are also commonly called "restartless" because they were the first type of Mozilla extension which did not require the application to be restarted in order to load/unload the add-on.
Most of the things that can be done in a bootstrapped extension can be done in an Add-on SDK based one. Mozilla appears to be committed to continuing to support Add-on SDK based extensions as long as the extension does not use require("chrome"), or otherwise depend on XUL, XPCOM, and XBL. In other words, they are bootstrapped extensions with an SDK wrapper. xpi file by jpm xpi for distribution (i.e. Currently, these add-ons are wrapped into a bootstrapped extension when they are loaded for testing by jpm run or consolidated into an. These extensions will often use require() to load either High-Level, or Low-Level APIs to interface with Firefox. There is, intentionally, no ability to use the interfaces provided by any of the other add-on types.Īdd-on SDK: These add-ons are described by a package.json file which is initially generated by executing jpm init. WebExtensions use a significantly different API than the other three types of extensions. This information is contained in the "Browser compatibility" section of the MDN documentation pages. You should also make careful note of what version of Firefox is required for the functionality you desire to use. For now, you are probably best off developing and testing your WebExtension add-on with Firefox Developer Edition, or Firefox Nightly. While Mozilla has stated that this API is the future of Firefox extensions, this API is still in development. This API is similar to what is used for Google Chrome extensions. These add-ons are described by a manifest.json file. WebExtensions: Moving forward, WebExtensions are the only type of Firefox extension which will be supported.
Types of Extensionsįirefox has four types of extensions (all of which are commonly referred to as add-ons): Mozilla has announced, and confirmed, that they have deprecated all types of Firefox extensions, except WebExtensions, and that all non-WebExtensions based extensions will be disabled in Firefox 57, which is scheduled for. Deprecation and removal of all types of extensions other than WebExtensionsįirefox add-ons, particularly extensions, are in a state of flux at the moment.