Extensions class overview
The Extensions class loads and interacts with extensions. It runs in the Main process. It is not exported from the 'electron' module directly, but is only available as a return value of other methods. Instances are accessed via the extensions property of a Session.
Electron extensions API support overview
Electron supports a subset of the Chrome Extensions API, primarily to support DevTools extensions and Chromium-internal extensions. Electron does not support arbitrary Chrome extensions from the store and it is not a goal of the Electron project to be perfectly compatible with Chrome's extension implementation.
Extension loading format and session requirement
Electron only supports loading unpacked extensions; .crx files do not work. Extensions are installed per-session and must be loaded using ses.extensions.loadExtension. Loading extensions is only supported in persistent sessions; attempting to load an extension into an in-memory session will throw an error.
Extensions not automatically remembered across exits
Loaded extensions will not be automatically remembered across application exits. If loadExtension is not called when the app runs, the extension will not be loaded.
Supported manifest keys in Electron extensions
The following manifest keys are supported: name, version, author, permissions, content_scripts, default_locale, devtools_page, short_name, host_permissions (Manifest V3), manifest_version, background (Manifest V2), minimum_chrome_version.
chrome.devtools.inspectedWindow API support
All features of the chrome.devtools.inspectedWindow API are supported in Electron.
chrome.devtools.panels API support
All features of the chrome.devtools.panels API are supported in Electron.
chrome.extension properties supported
The following properties of chrome.extension are supported in Electron: chrome.extension.lastError.
chrome.runtime properties supported
The following properties of chrome.runtime are supported in Electron: chrome.runtime.lastError, chrome.runtime.id.
chrome.scripting API support
All features of the chrome.scripting API are supported in Electron.
chrome.storage support in Electron
Only chrome.storage.local is supported in Electron. chrome.storage.sync and chrome.storage.managed are not supported.
chrome.tabs.query partial support details
chrome.tabs.query has partial support in Electron. The supported properties are: url, title, audible, active, muted.
chrome.tabs.update partial support details
chrome.tabs.update has partial support in Electron. The supported properties are: url, muted.
Tab ID -1 not supported in Electron
In Chrome, passing -1 as a tab ID signifies the currently active tab. Since Electron has no such concept, passing -1 as a tab ID is not supported and will raise an error.
chrome.webRequest API support
All features of the chrome.webRequest API are supported in Electron.
webRequest module takes precedence over chrome.webRequest
Electron's webRequest module takes precedence over chrome.webRequest if there are conflicting handlers.
ExtensionInfo Object structure
The ExtensionInfo object contains the following fields: name (string) and version (string).
Extension object structure
The Extension object has the following properties: id (string), manifest (any, copy of the extension's manifest data), name (string), path (string, the extension's file path), version (string), and url (string, the extension's chrome-extension:// URL).