Add-ons using the techniques described in this document are considered a legacy technology in Firefox. Don't use these techniques to develop new add-ons. Use WebExtensions instead. If you maintain an add-on which uses the techniques described here, consider migrating it to use WebExtensions.
From Firefox 53 onwards, no new legacy add-ons will be accepted on addons.mozilla.org (AMO).
From Firefox 57 onwards, WebExtensions will be the only supported extension type, and Firefox will not load other types.
Even before Firefox 57, changes coming up in the Firefox platform will break many legacy extensions. These changes include multiprocess Firefox (e10s), sandboxing, and multiple content processes. Legacy extensions that are affected by these changes should migrate to WebExtensions if they can. See the "Compatibility Milestones" document for more.
A wiki page containing resources, migration paths, office hours, and more, is available to help developers transition to the new technologies.
Modules in this section implement low-level APIs. These modules fall roughly into three categories:
-
fundamental utilities such as collection. Many add-ons are likely to want to use modules from this category.
-
building blocks for higher level modules, such as events and worker. You're more likely to use these if you are building your own modules that implement new APIs, thus extending the SDK itself.
-
privileged modules that expose powerful low-level capabilities such as window/utils and net/xhr. You can use these modules in your add-on if you need to, but should be aware that the cost of privileged access is the need to take more elaborate security precautions. In many cases these modules have simpler, more restricted analogs among the "High-Level APIs" (for example, windows or request).
These modules are still in active development, and we expect to make incompatible changes to them in future releases.
- /loader
- Create CommonJS module loaders.
- chrome
- The
chrome
module gives an Add-on SDK add-on access to the Components object, which in turn gives it access to a large set of privileged low-level Firefox APIs. - console/plain-text
- Constructor for a console instance.
- console/traceback
- Functionality similar to Python's traceback module.
- content/content
- Re-exports three objects from three other modules:
Loader
,Worker
, andSymbiont
. - content/loader
- Provides one of the building blocks for those modules that use content scripts to interact with web content, such as
panel
andpage-mod
. - content/mod
- Provides functions to modify a page content.
- content/symbiont
- Used by SDK modules that can load web content and attach content scripts to it.
- content/worker
- Used in the internal implementation of SDK modules which use content scripts to interact with web content.
- core/heritage
- Helper functions for inheritance.
- core/namespace
- Provides an API for creating namespaces for objects, which effectively may be used for creating fields that are not part of objects public API.
- core/promise
- Implementation of promises to make asynchronous programming easier.
- dev/panel
- Enables you to extend the Firefox Developer Tools.
- event/core
- The
event/core
module allows the creation of APIs to broadcast and subscribe to events. - event/target
- Create objects that broadcast events.
- frame/hidden-frame
- Creates Firefox frames (i.e. XUL
<iframe>
elements) that are not displayed to the user. - frame/utils
- Provides helper functions for working with platform internals like frames and browsers.
- fs/path
- Provides access to the local filesystem with the NodeJS path module API.
- io/byte-streams
- Provides streams for reading and writing bytes.
- io/file
- Provides access to the local filesystem.
- io/text-streams
- Provides streams for reading and writing text.
- lang/functional
- Functional helper methods.
- lang/type
- Functions for working with type detection.
- loader/cuddlefish
- The SDK's module loader.
- loader/sandbox
- Create JavaScript sandboxes and execute scripts in them.
- net/url
- Enables you to read content from a URI.
- net/xhr
- Provides access to
XMLHttpRequest
functionality. - places/bookmarks
- Create, modify, and retrieve bookmarks.
- places/favicon
- Helper functions for working with favicons.
- places/history
- Access the user's browsing history.
- platform/xpcom
- Implement XPCOM objects, factories, and services.
- preferences/event-target
- Listen to changes to the Preferences system in Firefox.
- preferences/service
- Access the Preferences system in Firefox.
- remote/child
- Enables an SDK module loaded into a child process to access web content in the child process and communicate with modules in the main process.
- remote/parent
- Enables you to load modules, and privileged parts of your add-on in general, into child processes.
- stylesheet/style
- Modify styles using stylesheet files or CSS rules.
- stylesheet/utils
- Helper functions for working with stylesheets.
- system/child_process
- An implementation of the node.js
child_process
API. - system/environment
- Access, set and clear environment variables.
- system/events
- API for working with the application observer service.
- system/runtime
- Access to information about Firefox's runtime environment.
- system/unload
- Register callbacks that are called when a module is unloaded.
- system/xul-app
- Information about the application on which your add-on is running.
- tabs/utils
- Functions for working with XUL
tabs
and the XULtabbrowser
object. - test/assert
- Implements the
assert
interface defined in the CommonJS Unit Testing specification version 1.1. - test/harness
- Test harness setup and execution.
- test/httpd
- An HTTP server for the Mozilla platform, which can be used in unit tests.
- test/runner
- Sets up unit tests.
- test/utils
- Helper methods used in the CommonJS Unit Testing suite.
- ui/button/action
- Add a button to the Firefox user interface.
- ui/button/toggle
- Add a toggle button to the Firefox user interface.
- ui/frame
- Create HTML iframes, using bundled HTML, CSS and JavaScript, that can be added to a designated area of the Firefox user interface.
- ui/id
- Create UI component IDs.
- ui/sidebar
- Enables you to create sidebars.
- ui/toolbar
- Add a toolbar to the Firefox user interface.
- util/array
- Helper functions for working with arrays.
- util/collection
- A simple list-like class and utilities for using it.
- util/deprecate
- Functions to deprecate code.
- util/list
- Building blocks for composing lists.
- util/match-pattern
- Test strings containing URLs against simple patterns.
- util/object
- Functions for working with objects.
- util/uuid
- Generate or parse UUIDs.
- window/utils
- Functions for working with browser windows.