Supported APIs
Note
This documentation is for extensions for the legacy version of Microsoft Edge. For information on the new Microsoft Edge, see Microsoft Edge (Chromium) Extensions.
Important
The new Microsoft Edge program is now open to accept chromium-based extensions for the new Microsoft Edge (v77 or later). If you want to submit a new extension, visit Publish to Microsoft Edge (Chromium) Add-ons Store to learn about the submission process.
With this announcement, Microsoft is no longer accepting new extensions for the legacy version of Microsoft Edge. If you own an Extension for the legacy version, you should begin the process of porting your Extension to the new Microsoft Edge. The new Microsoft Edge is based on Chromium, so Extensions designed for the legacy version of Microsoft Edge do not work with the new version.
The following is a detailed list of API members that are supported. Development of the extension platform is ongoing, so check back frequently for updates!
Note
- For Microsoft Edge, all extension APIs are under the
browser
namespace, e.g.browser.browserAction.disable()
. - Microsoft Edge extension APIs use callbacks, not promises.
Overarching issues
The following known issues span across the extension platform and will be fixed in the near future:
- When using the CSS
url()
property, absolute URLs usingms-browser-extension://
will not work like they do in Chrome. To bypass this issue, use relative paths to resources (starting in the root extension directory) instead. window.open()
does not work in extension background scripts. Please usebrowser.windows.create()
instead.- Shared cookies are supported, however the extension background script will not have access to session cookies set in the tab before the extension is enabled. This issue does not affect persistent cookies.
- If only unsupported permissions are specified for an extension, i.e
activeTab
, attempting to sideload the extension will result in the extension being uninstalled with the following message displayed: "Something went wrong with your extensions, so we had to reinstall them. You'll need to turn them on again." - Triggering a download via a hidden anchor tag will fail from background scripts. This should be done from an extension page instead.
bookmarks
The following bookmarks
APIs are supported:
API | Known issues | Chrome incompatibilities |
---|---|---|
bookmarks | ||
bookmarks.create | ||
bookmarks.remove | ||
bookmarks.getTree | ||
bookmarks.move | ||
bookmarks.removeTree | ||
bookmarks.update |
browserAction
The following browserAction
APIs are supported:
API | Known issues | Chrome incompatibilities |
---|---|---|
browserAction | ||
browserAction.disable | ||
browserAction.enable | ||
browserAction.getBadgeBackgroundColor | ||
browserAction.setBadgeBackgroundColor | ||
browserAction.onClicked | ||
browserAction.setBadgeText | ||
browserAction.setPopup | ||
browserAction.getBadgeText | ||
browserAction.setIcon | browserAction.setIcon is not persisted. The imageData parameter is not supported. path is a required parameter. |
|
browserAction.getTitle | ||
browserAction.setTitle |
contextMenus
The following contextMenus
APIs are supported:
API | Known issues | Chrome incompatibilities |
---|---|---|
contextMenus | ||
contextMenus.ContextType | "page_action" ContextType will not show up in the page action context menu. |
Microsoft Edge does not support the "launcher" ContextType . |
contextMenus.create | When extensions do not provide a contextmenuid , the id generated is not unique. |
|
contextMenus.onClicked | ||
contextMenus.remove | ||
contextMenus.removeAll | ||
contextMenus.update |
cookies
The following cookies
APIs are supported:
API | Known issues | Chrome incompatibilities |
---|---|---|
cookies | ||
cookies.get | ||
cookies.getAll | If no URL is provided, cookies are retrieved only for URLs in currently opened tabs. In Chrome, this gets all cookies on a user's machine. | |
cookies.getAllCookieStores | Always returns the same default cookie store with ID "0". All cookies belong to this store. | |
cookies.onChanged | Not supported. | |
cookies.remove | ||
cookies.set |
extension
The following extension
APIs are supported:
API | Known issues | Chrome incompatibilities |
---|---|---|
extension | ||
extension.getBackgroundPage | ||
extension.getURL | ||
extension.getViews | ||
extension.isAllowedIncognitoAccess | ||
extension.inIncognitoContext |
i18n
The following i18n
APIs are supported:
API | Known issues | Chrome incompatibilities |
---|---|---|
i18n | ||
i18n.getAcceptLanguages | ||
i18n.getMessage | i18n.getMessage with invalid key throws exception instead of failing gracefully. i18n.getMessage argument expects strings, but should also allow an int or throw an exception. |
|
i18n.getUILanguage |
idle
The following idle
APIs are supported:
API | Known issues | Chrome incompatibilities |
---|---|---|
idle | ||
idle.setDetectionInterval | ||
idle.queryState |
notifications
The following notifications
APIs are supported:
API | Known issues | Chrome incompatibilities |
---|---|---|
notifications | ||
notifications.NotificationOptions | ||
notifications.TemplateType | ||
notifications.clear | ||
notifications.create | ||
notifications.getAll | ||
notifications.update | ||
notifications.onButtonClicked | ||
notifications.onClicked | ||
notifications.onClosed | ||
notifications.onPermissionLevelChanged | ||
notifications.getPermissionLevel |
pageAction
The following pageAction
APIs are supported:
API | Known issues | Chrome incompatibilities |
---|---|---|
pageAction | ||
pageAction.getPopup | ||
pageAction.getTitle | ||
pageAction.hide | ||
pageAction.onClicked | ||
pageAction.setIcon | The imageData parameter is not supported. path is a required parameter. |
|
pageAction.setPopup | ||
pageAction.setTitle | ||
pageAction.show |
runtime
The following runtime
APIs are supported:
API | Known issues | Chrome incompatibilities |
---|---|---|
runtime | ||
runtime.port.disconnect | ||
runtime.port.onDisconnect | ||
runtime.port.postMessage | ||
runtime.connect | ||
runtime.connectNative | ||
runtime.id | ||
runtime.getBackgroundPage | ||
runtime.getManifest | ||
runtime.getURL | ||
runtime.lastError | ||
runtime.reload | ||
runtime.sendMessage | Microsoft Edge extension pages can use runtime.sendMessage /onMessage to send messages to themselves. runtime.sendmessage is not supported from site pages. |
Microsoft Edge does not support the options parameter. |
runtime.sendNativeMessage | ||
runtime.setUninstallUrl | ||
runtime.onConnect | ||
runtime.onInstalled | ||
runtime.onMessage | tab object in runtime.onMessage event is not fully implemented. |
MessageSender.tlsChannelId is not supported in Microsoft Edge. |
storage
The following storage
APIs are supported:
API | Known issues | Chrome incompatibilities |
---|---|---|
storage | ||
storage.local.get | ||
storage.local.remove | ||
storage.local.set | ||
storage.local.clear | ||
storage.local.getBytesInUse | storage.local data is persisted in a different format than Chrome, causing a different value to be returned when calling storage.local.getBytesInUse . Ex: storage.local.set({ "k": { "s": "âas" } } returns 13 in Chrome and 50 in Microsoft Edge. |
|
storage.sync.get | If the combined amount of characters in the name and author manifest fields exceed 31 characters the storage.sync namespace may not function. |
|
storage.sync.remove | ||
storage.sync.set | ||
storage.onChanged |
tabs
The following tabs
APIs are supported:
API | Known issues | Chrome incompatibilities |
---|---|---|
tabs | ||
tabs.captureVisibleTab | ||
tabs.create | selected , pinned , and openerTabId are not supported. |
|
tabs.detectLanguage | ||
tabs.executeScript | runAt is ignored, though checked. Executing script in a specific frame is not yet supported. |
|
tabs.get | Options pages, when asking about a tab not in their window, fail this call. | |
tabs.getCurrent | ||
tabs.insertCSS | runAt is ignored, though checked. |
cssOrigin is not supported. |
tabs.onActivated | ||
tabs.onAttached | ||
tabs.onCreated | ||
tabs.onDetached | ||
tabs.onRemoved | ||
tabs.onReplaced | ||
tabs.onUpdated | After uninstall/reinstall, the URL is not received until Microsoft Edge is restarted. | |
tabs.query | pinned , audible , and muted are not yet supported. "popup" windowType is not yet supported. |
highlighted is not supported. "panel" , "app" , and "devtools" windowType are not supported. |
tabs.reload | Microsoft Edge does not support promises. | |
tabs.remove | ||
tabs.sendMessage | Messaging a specific frame is not yet supported. tabs.sendMessage never sends a response after a tab refresh if no runtime.onMessage listeners are present on the receiving tab. |
|
tabs.Tab | audible , mutedInfo , inPrivate , width , and height properties are not yet supported. |
openerTabId , selected , and highlighted properties are not supported. |
tabs.update | pinned and muted are not yet supported. |
highlighted and selected are not supported. |
webNavigation
The following webNavigation
APIs are supported:
API | Known issues | Chrome incompatibilities |
---|---|---|
webNavigation | Tab ids are incorrect. | Filtering, TransitionTypes and TransitionQualifiers not supported. For a tab, all processIds will be the same. |
webNavigation.getAllFrames | Does not include object-as-iframe elements. | |
webNavigation.getFrame | ||
webNavigation.onBeforeNavigate | ||
webNavigation.onCommitted | ||
webNavigation.onCompleted | ||
webNavigation.onCreatedNavigationTarget | ||
webNavigation.onDOMContentLoaded | ||
webNavigation.onErrorOccurred | ||
webNavigation.onHistoryStateUpdated | ||
webNavigation.onReferenceFragmentUpdated | ||
webNavigation.onTabReplaced | Not supported. | |
webNavigation.TransitionType | ||
webNavigation.TransitionQualifier |
webRequest
The following webRequest
APIs are supported:
API | Known issues | Chrome incompatibilities |
---|---|---|
webRequest | webRequest not supported for synchronous XmlHttpRequests . |
Network requests from extensions, such as options, background or popup pages, are not supported. Network requests from <object> and <embed> elements are not supported.Headers cannot be modified for cached requests. |
handlerBehaviorChanged | Handler changes are automatically handled in Microsoft Edge. Calling this has no effect. |
|
onAuthRequired | ||
onBeforeRedirect | ||
onBeforeRequest | requestBody is not supported. |
|
onBeforeSendHeaders | ||
onCompleted | ||
onErrorOccurred | ||
onHeadersReceived | ||
onResponseStarted | ||
onSendHeaders |
windows
The following windows
APIs are supported:
API | Known issues | Chrome incompatibilities |
---|---|---|
windows | Window objects do not support alwaysOnTop property in Microsoft Edge. InPrivate is not supported. |
|
windows.CreateType | "panel" and "detached_panel" are not supported in Microsoft Edge. |
|
windows.create | tabId parameter for tearing off a tab is not supported. |
|
windows.get | ||
windows.getAll | windows.getAll({populate: true}) is missing tabs property. |
|
windows.getCurrent | ||
windows.getLastFocused | ||
windows.update | Specifying position is not supported. | "minimized" /"maximized" /"fullscreen" and drawAttention are not supported in Microsoft Edge. |
windows.onCreated | WindowType filter is not supported. |
|
windows.onFocusChanged | WindowType filter is not supported. |
|
windows.WindowState | "minimized" ,"maximized" , "fullscreen" are not supported. |
"docked" is not supported in Microsoft Edge. |
windows.WindowType | "panel" , "app" , and "devtools" are not supported in Microsoft Edge. |
|
windows.WINDOW_ID_CURRENT | ||
windows.WINDOW_ID_NONE |