Are we WebExtensions yet?

Yes, I think we are.

Mozilla documentation on WebExtensions, see also the wiki page.

Chrome documentation on WebExtensions.

§ APIs

Filters: desktop onlyandroid onlycomplete onlypartial onlycomplete and partial onlyreset ( APIs)

§ alarms complete  desktop  android

Firefox docsFirefox codeChrome docs
§ 0 bugs
§ 5 functions
supportedchrome.alarms.create()rank 66
supportedchrome.alarms.getAll()rank 195
supportedchrome.alarms.clearAll()rank 180
supportedchrome.alarms.clear()rank 128
supportedchrome.alarms.get()rank 198
§ 1 events
supportedchrome.alarms.onAlarmrank 64

§ bookmarks partial  desktop

Firefox docsFirefox codeChrome docs
§ 6 bugs
1213674: Complete the implementation of chrome.bookmarks
1221764: Implement simple chrome.bookmarks events
1225916: Allow reading and writing bookmark tags
1276817: Support bookmark keywords
1276819: Support bookmark descriptions
1276821: Support live bookmarks
§ 13 functions
supportedchrome.bookmarks.search()rank 133
supportedchrome.bookmarks.getTree()rank 75
supportedchrome.bookmarks.getRecent()rank 205
supportedchrome.bookmarks.get()rank 165
supportedchrome.bookmarks.create()rank 108
supportedchrome.bookmarks.move()rank 177
supportedchrome.bookmarks.update()rank 169
supportedchrome.bookmarks.remove()rank 120
supportedchrome.bookmarks.getChildren()rank 137
not supportedchrome.bookmarks.export()rank 1008
not supportedchrome.bookmarks.import()rank 1004
supportedchrome.bookmarks.removeTree()rank 163
supportedchrome.bookmarks.getSubTree()rank 185
§ 7 events
not supportedchrome.bookmarks.onRemovedrank 160
not supportedchrome.bookmarks.onImportEndedrank 220
not supportedchrome.bookmarks.onMovedrank 201
not supportedchrome.bookmarks.onImportBeganrank 315
not supportedchrome.bookmarks.onCreatedrank 159
not supportedchrome.bookmarks.onChangedrank 182
not supportedchrome.bookmarks.onChildrenReorderedrank 215

§ browserAction complete  desktop

Firefox docsFirefox codeChrome docs
§ 9 bugs
1203738: Update browserAction and pageAction icons after pixel density change
1207591: badge background color - provide 3 recommended colors
1207597: browserAction icon should match appearance of native Firefox toolbar buttons
1207692: provide a highlight state for browserActions
1215632: Unit test to assert that a browser action opens the popup in the parents mode (private vs not-private)
1225215: BrowserAction setter methods change default value when tab ID is invalid
1237377: [meta] WebExtension popup support
1244789: Support richer user interactions in the chrome.browserAction API
1253419: Support menu-button buttons in the pageAction API.
§ 12 functions
supportedchrome.browserAction.enable()rank 168
supportedchrome.browserAction.setBadgeBackgroundColor()rank 29
supportedchrome.browserAction.setBadgeText()rank 13
supportedchrome.browserAction.setTitle()rank 34
supportedchrome.browserAction.getBadgeText()rank 140
supportedchrome.browserAction.setPopup()rank 54
supportedchrome.browserAction.disable()rank 155
supportedchrome.browserAction.getTitle()rank 253
not supportedchrome.browserAction.openPopup()rank 440
supportedchrome.browserAction.getBadgeBackgroundColor()rank 995
supportedchrome.browserAction.getPopup()rank 230
supportedchrome.browserAction.setIcon()rank 18
§ 1 events
supportedchrome.browserAction.onClickedrank 7

§ browsingData not yet

Chrome docs
§ 0 bugs

§ commands complete  desktop

Firefox docsFirefox codeChrome docs
§ 5 bugs
1240350: [tracking] Commands API support for WebExtensions
1246034: [commands] Add support for _execute_browser_action
1251795: [commands] Add support for Chrome's media keys
1272130: Command description is not localized
1272133: runtime error if commands/suggested_key isn't supplied for the target platform
§ 1 functions
supportedchrome.commands.getAll()rank 209
§ 1 events
supportedchrome.commands.onCommandrank 79

§ contentSettings not yet

Chrome docs
§ 0 bugs

§ contextMenus complete  desktop

Firefox docsFirefox codeChrome docs
§ 8 bugs
1215376: Implement onBeforeShow event
1246044: When you delete an extension which modifies the context menu and then install an extension, the menu items from the deleted extension still show up
1253418: Support browser_action and page_action contexts in browser.contextMenus API
1269062: [tracking] ContextMenus API support for Android WebExtensions
1274860: ContextType "page" is not applied correctly
1275116: documentUrlPatterns does not work in the contextMenus API
1275126: "targetUrlPatterns" in contextMenus fails with an error if the ContextType is "image"
1278685: Add a test to prove that removing all items from a context menu does not break context menus for other extensions
§ 4 functions
supportedchrome.contextMenus.removeAll()rank 50
supportedchrome.contextMenus.create()rank 15
supportedchrome.contextMenus.update()rank 95
supportedchrome.contextMenus.remove()rank 90
§ 1 events
supportedchrome.contextMenus.onClickedrank 52

§ cookies complete  desktop  android

Firefox docsFirefox codeChrome docs
§ 3 bugs
1210997: See if we can use nsCookieService for cookie matching in chrome.cookies
1254221: Support private browsing cookies in WebExtensions
1272953: Error handling for WebExtension cookies API
§ 5 functions
supportedchrome.cookies.getAllCookieStores()rank 314
supportedchrome.cookies.getAll()rank 63
supportedchrome.cookies.set()rank 60
supportedchrome.cookies.remove()rank 101
supportedchrome.cookies.get()rank 53
§ 1 events
supportedchrome.cookies.onChangedrank 154

§ debugger no

Chrome docs
§ 1 bugs
1241448: Support chrome.debugger

§ declarativeContent not yet

Chrome docs
§ 0 bugs

§ desktopCapture not yet

Chrome docs
§ 0 bugs

§ devtools.inspectedWindow not yet

Chrome docs
§ 1 bugs
1211859: Implement devtools API for open extension API

§ devtools.network not yet

Chrome docs
§ 1 bugs
1211859: Implement devtools API for open extension API

§ devtools.panels not yet

Chrome docs
§ 1 bugs
1211859: Implement devtools API for open extension API

§ downloads partial  desktop  android

Firefox docsFirefox codeChrome docs
§ 13 bugs
1213445: [tracking] Implement chrome.downloads
1245645: Implement chrome.downloads.acceptDanger()
1245648: Implement chrome.downloads.drag()
1245652: Implement chrome.downloads.onDeterminingFilename
1247791: Implement options.saveAs for chrome.downloads.download()
1247793: Implement POST for chrome.downloads.download()
1247794: support persistent identifiers in chrome.downloads.*
1254327: browser.downloads.download() doesn't handle redirects
1255507: Handle old downloads in chrome.downloads.search()
1255629: chrome.downloads.* tests with legacy downloads
1256243: extra chrome.downloads.onChanged events generated during cancel
1256269: Support endTime and estimatedEndTime in DownloadItem
1256691: Add test coverage for chrome.downloads.show() error states
§ 14 functions
supportedchrome.downloads.search()rank 121
supportedchrome.downloads.pause()rank 266
supportedchrome.downloads.getFileIcon()rank 272
supportedchrome.downloads.resume()rank 271
supportedchrome.downloads.show()rank 243
supportedchrome.downloads.removeFile()rank 252
supportedchrome.downloads.cancel()rank 218
not supportedchrome.downloads.drag()rank 311
supportedchrome.downloads.erase()rank 223
not supportedchrome.downloads.acceptDanger()rank 273
supportedchrome.downloads.showDefaultFolder()rank 257
supportedchrome.downloads.download()rank 92
not supportedchrome.downloads.setShelfEnabled()rank 247
supportedchrome.downloads.open()rank 228
§ 3 events
supportedchrome.downloads.onChangedrank 123
supportedchrome.downloads.onCreatedrank 222
supportedchrome.downloads.onErasedrank 324

§ extension partial  desktop  android

Firefox docsFirefox codeChrome docs
§ 2 bugs
1213426: Complete the implementation of chrome.extension
1263900: Complete test coverage for browser.extension.inIncognitoContext
§ 6 functions
supportedchrome.extension.getBackgroundPage()rank 11
supportedchrome.extension.getURL()rank 1
not supportedchrome.extension.setUpdateUrlData()rank 269
supportedchrome.extension.getViews()rank 58
supportedchrome.extension.isAllowedFileSchemeAccess()rank 217
supportedchrome.extension.isAllowedIncognitoAccess()rank 202
§ 2 events
not supportedchrome.extension.onRequestrank 20
not supportedchrome.extension.onRequestExternalrank 113

§ fontSettings not yet

Chrome docs
§ 0 bugs

§ gcm unlikely

Chrome docs
§ 0 bugs

§ history not yet

Chrome docs
§ 5 bugs
1208334: [tracking] Implement history API for open extension API
1272676: Refactor DownloadTime and HistoryTime into a shared schema type
1275633: Add typedCount to the result set returned by browser.history.search
1280357: Update browser.history.onVisited to not call PlacesUtils.promisePlaceInfo
1280582: Implement browser.history.onTitleChanged
§ 6 functions
supportedchrome.history.search()rank 72
supportedchrome.history.addUrl()rank 242
supportedchrome.history.deleteRange()rank 250
supportedchrome.history.deleteAll()rank 232
supportedchrome.history.getVisits()rank 189
supportedchrome.history.deleteUrl()rank 191
§ 2 events
supportedchrome.history.onVisitedrank 200
supportedchrome.history.onVisitRemovedrank 249

§ i18n complete  desktop  android

Firefox docsFirefox codeChrome docs
§ 1 bugs
1208763: Treat chrome-extension:// and moz-extension:// schemes as equivalent
§ 4 functions
supportedchrome.i18n.getUILanguage()rank 144
supportedchrome.i18n.getMessage()rank 10
supportedchrome.i18n.detectLanguage()rank 745
supportedchrome.i18n.getAcceptLanguages()rank 105

§ identity not yet

Chrome docs
§ 0 bugs

§ idle partial  desktop  android

Firefox docsFirefox codeChrome docs
§ 0 bugs
§ 2 functions
supportedchrome.idle.queryState()rank 181
not supportedchrome.idle.setDetectionInterval()rank 196
§ 1 events
not supportedchrome.idle.onStateChangedrank 148

§ management not yet

Chrome docs
§ 3 bugs
1220136: WebExtensions support chrome.management.uninstallSelf
1280236: Implement chrome.management.uninstall
1280237: Implement chrome.management.install

§ notifications partial  desktop  android

Firefox docsFirefox codeChrome docs
§ 4 bugs
1190681: Browser extension |notifications| API needs support for buttons in notifications
1213455: Complete the implementation of chrome.notifications
1237035: chrome.notifications.create is ignored for the first time in WebExtensions
1254300: Calling notifications.create always dismisses existing notifications
§ 5 functions
supportedchrome.notifications.clear()rank 42
supportedchrome.notifications.create()rank 28
supportedchrome.notifications.getAll()rank 188
not supportedchrome.notifications.update()rank 176
not supportedchrome.notifications.getPermissionLevel()no docsrank 221
§ 5 events
not supportedchrome.notifications.onPermissionLevelChangedno docsrank 307
not supportedchrome.notifications.onShowSettingsno docsrank 277
supportedchrome.notifications.onClosedrank 93
supportedchrome.notifications.onButtonClickedrank 65
supportedchrome.notifications.onClickedrank 40

§ omnibox not yet

Chrome docs
§ 7 bugs
1166831: [tracking] Omnibox API support for WebExtensions
1267810: [Omnibox] Add support for chrome.omnibox.onInputStarted
1267811: [Omnibox] Add support for chrome.omnibox.onInputChanged
1267813: [Omnibox] Add support for chrome.omnibox.onInputEntered
1267814: [Omnibox] Add support for chrome.omnibox.onInputCancelled
1267817: [Omnibox] Add support for chrome.omnibox.setDefaultSuggestion
1276598: Provide ability to apply custom filter for search results of the location bar

§ pageAction complete  desktop

Firefox docsFirefox codeChrome docs
§ 4 bugs
1237377: [meta] WebExtension popup support
1263005: [tracking] PageAction API support for Android WebExtensions
1263152: pageAction methods do not handle invalid tab IDs elegantly
1270742: [PageAction] Add support for chrome.pageAction icons on Android
§ 7 functions
supportedchrome.pageAction.hide()rank 99
supportedchrome.pageAction.show()rank 32
supportedchrome.pageAction.setTitle()rank 98
supportedchrome.pageAction.setPopup()rank 132
supportedchrome.pageAction.getTitle()rank 283
supportedchrome.pageAction.getPopup()rank 595
supportedchrome.pageAction.setIcon()rank 77
§ 1 events
supportedchrome.pageAction.onClickedrank 71

§ permissions not yet

Chrome docs
§ 3 bugs
1197420: Implement permissions API and optional_permissions manifest property for open extension API
1197451: Support clipboard access in open extension API
1203233: Can't use geolocation in a WebExtension

§ power not yet

Chrome docs
§ 0 bugs

§ printerProvider not yet

Chrome docs
§ 0 bugs

§ privacy not yet

Chrome docs
§ 0 bugs

§ proxy not yet

Chrome docs
§ 0 bugs

§ runtime partial  desktop  android

Firefox docsFirefox codeChrome docs
§ 6 bugs
1190682: [tracking] Implement |connectNative| for open extension API
1213473: Complete the implementation of chrome.runtime
1223425: port.onDisconnect isn't fired when extension is disabled/uninstalled
1247435: Implement browser.runtime.onStartup
1252871: Implement chrome.runtime.onInstalled
1259944: runtime.sendMessage does not handle the three-argument form correctly.
§ 14 functions
supportedchrome.runtime.getBackgroundPage()rank 80
supportedchrome.runtime.openOptionsPage()rank 124
supportedchrome.runtime.sendNativeMessage()rank 122
supportedchrome.runtime.connectNative()rank 179
supportedchrome.runtime.setUninstallURL()rank 69
supportedchrome.runtime.getURL()rank 62
supportedchrome.runtime.getManifest()rank 23
not supportedchrome.runtime.requestUpdateCheck()rank 143
not supportedchrome.runtime.reload()rank 86
supportedchrome.runtime.sendMessage()rank 4
supportedchrome.runtime.connect()rank 47
supportedchrome.runtime.getPlatformInfo()rank 149
not supportedchrome.runtime.getPackageDirectoryEntry()rank 281
not supportedchrome.runtime.restart()
§ 11 events
not supportedchrome.runtime.onSuspendCanceledrank 255
not supportedchrome.runtime.onRestartRequiredrank 336
not supportedchrome.runtime.onBrowserUpdateAvailable
supportedchrome.runtime.onConnectrank 41
not supportedchrome.runtime.onMessageExternalrank 78
not supportedchrome.runtime.onUpdateAvailablerank 127
not supportedchrome.runtime.onStartuprank 82
not supportedchrome.runtime.onInstalledrank 16
not supportedchrome.runtime.onConnectExternalrank 184
supportedchrome.runtime.onMessagerank 3
not supportedchrome.runtime.onSuspendrank 131

§ sessions not yet

Chrome docs
§ 0 bugs

§ storage partial  desktop  android

Firefox docsFirefox codeChrome docs
§ 8 bugs
1213475: Complete the implementation of chrome.storage
1213990: Clear localStorage when a WebExtension is uninstalled
1220494: [tracking] Implement chrome.storage.sync
1253740: [kinto] Port over the code from the prototype
1253741: [kinto] Hook up Firefox Accounts
1253744: [kinto] Put chrome.storage.sync behind a feature flag
1253746: [kinto] Mock out server calls so that tests can run
1277612: [kinto] Migrate browser.storage.local to use kinto collections
§ 1 events
supportedchrome.storage.onChangedrank 45

§ system.cpu not yet

Chrome docs
§ 0 bugs

§ system.memory not yet

Chrome docs
§ 0 bugs

§ system.storage not yet

Chrome docs
§ 0 bugs

§ tabs partial  desktop

Firefox docsFirefox codeChrome docs
§ 13 bugs
1190328: Test coverage for tabs extension API
1209869: tabs.sendMessage does not send messages to tab pages
1213477: Complete the implementation of chrome.tabs
1219940: [tracking] Support Mega as a WebExtension
1223254: Figure out when tabs API callbacks should fire, and make them fire at the right time
1238314: Implement browser.tabs opener functionality
1240631: Callback not called for chrome.tabs.move when tab is invalid
1246693: Provide WebExtension Thumbnail API
1260548: Basic tabs API support for Android WebExtensions
1260550: Support messaging interfaces in the tabs API on Android
1269456: Add permissions item to allow use of tabs.create/tabs.update
1274871: tabs.executeScript gives an unhelpful error
1281354: reported current window is incorrect after tab is detached
§ 24 functions
supportedchrome.tabs.executeScript()rank 6
supportedchrome.tabs.getZoomSettings()rank 357
supportedchrome.tabs.move()rank 126
supportedchrome.tabs.getZoom()rank 254
supportedchrome.tabs.connect()rank 118
supportedchrome.tabs.query()rank 2
not supportedchrome.tabs.sendRequest()rank 48
supportedchrome.tabs.create()
supportedchrome.tabs.duplicate()rank 233
supportedchrome.tabs.detectLanguage()rank 207
supportedchrome.tabs.insertCSS()rank 59
supportedchrome.tabs.get()rank 25
supportedchrome.tabs.getCurrent()rank 57
supportedchrome.tabs.update()rank 8
supportedchrome.tabs.setZoom()rank 261
supportedchrome.tabs.setZoomSettings()rank 381
not supportedchrome.tabs.getSelected()rank 17
supportedchrome.tabs.remove()rank 24
supportedchrome.tabs.captureVisibleTab()rank 51
supportedchrome.tabs.reload()rank 49
supportedchrome.tabs.sendMessage()rank 9
supportedchrome.tabs.highlight()rank 193
supportedchrome.tabs.removeCSS()no docs
not supportedchrome.tabs.getAllInWindow()rank 44
§ 13 events
supportedchrome.tabs.onHighlightedrank 175
not supportedchrome.tabs.onActiveChangedrank 111
supportedchrome.tabs.onUpdatedrank 5
supportedchrome.tabs.onAttachedrank 139
supportedchrome.tabs.onMovedrank 183
supportedchrome.tabs.onDetachedrank 170
not supportedchrome.tabs.onHighlightChangedrank 493
supportedchrome.tabs.onZoomChangerank 333
supportedchrome.tabs.onCreatedrank 35
not supportedchrome.tabs.onSelectionChangedrank 96
supportedchrome.tabs.onRemovedrank 26
supportedchrome.tabs.onActivatedrank 36
supportedchrome.tabs.onReplacedrank 83

§ tabsCapture not yet

Chrome docs
§ 0 bugs

§ topSites not yet

Chrome docs
§ 0 bugs

§ tts unlikely

Chrome docs
§ 0 bugs

§ ttsEngine unlikely

Chrome docs
§ 0 bugs

§ webNavigation partial  desktop  android

Firefox docsFirefox codeChrome docs
§ 9 bugs
1190329: Test coverage for webNavigation extension API
1190687: Implement webNavigation.onCreatedNavigationTarget
1213478: Complete the implementation of chrome.webNavigation
1242561: Import missing events API schema file
1248418: Implement errorOccurred in the webNavigation.getFrame/getAllFrames frame details
1248426: processId in the webNavigation API
1252129: Filter out webNavigation events related to new window initialization phase
1262957: use NavHistoryService visit's transitionType to enhance the webNavigation transition types and qualifiers
1264936: Support server_redirect transitionQualifiers on sub-frame WebNavigation events
§ 2 functions
supportedchrome.webNavigation.getFrame()rank 306
supportedchrome.webNavigation.getAllFrames()rank 231
§ 9 events
supportedchrome.webNavigation.onReferenceFragmentUpdatedrank 206
supportedchrome.webNavigation.onCompletedrank 100
supportedchrome.webNavigation.onHistoryStateUpdatedrank 135
not supportedchrome.webNavigation.onCreatedNavigationTargetrank 114
not supportedchrome.webNavigation.onTabReplacedrank 152
supportedchrome.webNavigation.onBeforeNavigaterank 87
supportedchrome.webNavigation.onCommittedrank 97
supportedchrome.webNavigation.onDOMContentLoadedrank 107
supportedchrome.webNavigation.onErrorOccurredrank 125

§ webRequest partial  desktop  android

Firefox docsFirefox codeChrome docs
§ 12 bugs
1190689: Implement webRequest auth handler
1201979: Support requestBody in onBeforeRequest
1210990: Implement content-side hooks to handle WebRequest decisions which affect or are affected by the DOM.
1213483: Complete the implementation of chrome.webRequest
1254204: Support a suspend/resume mechanism in WebRequest
1255894: Support a webRequest.onResponseData event to filter HTTP response bytes as they come
1256122: webRequest.onHeadersReceived no redirect to extension page
1256600: Keep WebRequest resilient to introduction of nsILoadInfo.frame(Outer|Inner)WindowId
1268885: Support full native paths in the requestBody.raw[x].file property
1270138: WebExtensions: chrome.webRequest listener fires for incorrect tab on load requests
1273138: WebExtensions: webRequest listeners do not fire for XMLHttpRequest GET requests
1273281: Prevent extensions from changing security headers without a separate permission
§ 1 functions
supportedchrome.webRequest.handlerBehaviorChanged()rank 199
§ 9 events
supportedchrome.webRequest.onCompletedrank 88
supportedchrome.webRequest.onHeadersReceivedrank 68
supportedchrome.webRequest.onBeforeRedirectrank 102
not supportedchrome.webRequest.onAuthRequiredrank 129
supportedchrome.webRequest.onBeforeSendHeadersrank 81
supportedchrome.webRequest.onErrorOccurredrank 89
supportedchrome.webRequest.onResponseStartedrank 134
supportedchrome.webRequest.onSendHeadersrank 142
supportedchrome.webRequest.onBeforeRequestrank 38

§ webstore not yet

Chrome docs
§ 0 bugs

§ windows complete  desktop

Firefox docsFirefox codeChrome docs
§ 5 bugs
1213484: Complete the implementation of chrome.windows
1253129: Support focused=false in the browser.windows.create
1261963: createData should be optional for browser.windows.create
1273146: WebExtensions: chrome.windows.create - callback parameter (window) does not have window.tabs property
1275275: New windows should not be animated to their final size/position
§ 7 functions
supportedchrome.windows.get()rank 73
supportedchrome.windows.getCurrent()rank 43
supportedchrome.windows.create()rank 27
supportedchrome.windows.getAll()rank 33
supportedchrome.windows.update()rank 39
supportedchrome.windows.remove()rank 70
supportedchrome.windows.getLastFocused()rank 109
§ 3 events
supportedchrome.windows.onRemovedrank 67
supportedchrome.windows.onCreatedrank 117
supportedchrome.windows.onFocusChangedrank 55

§ Chrome store compatibility

Using a naive regex and some basic assumptions and a limited data set of 10,000+ add-ons from the Chrome store, this is a guess how many of those add-ons would work in Firefox Desktop.

DateAmount
2016-05-0639.69%
2016-04-2638.88%
2016-04-0738.88%
2016-03-3138.71%
Source on github.