Firefox 77 for developers
=========================

This article provides information about the changes in Firefox 77 that will affect developers. Firefox 77 was released on June 2, 2020.

**See also the accompanying hacks post — New in Firefox 77: DevTool improvements and web platform updates.**

Changes for web developers
--------------------------

### Developer tools

* Firefox Developer Edition offers a Compatibility panel in the Page Inspector, to show the browsers supported by the CSS properties used on the page. (Firefox bug 1625134)
* The Debugger has a Settings menu in its toolbar; the only menu option (yet) is **Disable JavaScript**. (Firefox bug 1630957)
* The Network Monitor toolbar has an **Actions** menu for managing log data (Firefox bug 1459175):
    + **Persist Logs**
    + **Import HAR File**
    + **Save All as HAR**
    + **Copy All as HAR**
* The Request Blocking panel of the Network Monitor has a context menu for enabling, disabling or removing all request block items. (Firefox bug 1588076)
* If you change the selected source line in the Debugger by clicking a frame in the Call Stack, and then click **Step over** (`F10`), the debugger executes until reaching the line following the newly-selected line (disregarding whatever line the debugger originally stopped at). (Firefox bug 1630642)
* You can set a watchpoint that pauses execution when a value is either read or assigned ("get or set"), as well as just read ("get") or just assigned ("set"). (Firefox bug 1580585
### HTML

* Firefox now displays the label value on an `<option>` element when the element's content is empty. (Firefox bug 40545)
### SVG

* Firefox now supports the `transform-origin` presentation attribute (Firefox bug 1581691).
### JavaScript

* `String.prototype.replaceAll()` is now supported (Firefox bug 1608168).
### APIs

#### IndexedDB

* The `IDBCursor.request` property has been implemented (Firefox bug 1536540).
### WebDriver conformance (Marionette)

* Certain commands could have caused a hang of Marionette when the currently selected top-level browsing context gets removed (e.g., closing the window by a click) (Firefox bug 1619481).
* Known issue: Because of changes in Firefox 77 an open user prompt could be closed too early when navigating away from the current page. This problem will be fixed in Firefox 78 (Firefox bug 1631362).
Changes for add-on developers
-----------------------------

### API changes

* `tabs.goBack` and `tabs.goForward` are now supported. (Firefox bug 1603796)
* `browsingData.remove` with type `serviceWorkers` and `indexedDB` now supports deleting by hostname. (Firefox bug 1632990 and Firefox bug 1551301)
* The `tabs.duplicate` API now supports `duplicateProperties`, enabling the position and active status of a duplicated tab to be specified. (Firefox bug 1560218)
* The `permissions` API events `permissions.onAdded` and `permissions.onRemoved` are now supported. (Firefox bug 1444294)
* Multiple `Content-Security-Policy` header changes requested in `webRequest.onHeadersReceived` are merged. (Firefox bug 1462989)
* `webRequest` events will no longer be triggered for `data:` URLs. (Firefox bug 1631933)
### Manifest changes

* The following permissions are now optional, they can be specified in the `optional_permissions` manifest key and requested using the `permissions` API:
    + `browsingData` (Firefox bug 1630417)
    + `devtools` (Firefox bug 1606862) – by setting this permission, an extension can introduce developer tools panels in an update without the extension being disabled (in Chrome) or blocked from updating (in Firefox).
    + `pkcs11` (Firefox bug 1630418)
    + `proxy` (Firefox bug 1548011)
    + `sessions` (Firefox bug 1630414).
### Other

* Use of the `unlimitedStorage` permission no longer results in a prompt during extension installation or update. See Requesting the right permissions for more information. (Firefox bug 1630413)
* Changes related to `SameSite` cookies mean that when setting host permissions to bypass tracking protection for extension pages hosts must be specified as a full domain or with wildcards. However, for Content scripts tracking protection can only be bypassed for hosts specified with a full domain.
Older versions
--------------

* Firefox 76 for developers
* Firefox 75 for developers
* Firefox 74 for developers
* Firefox 73 for developers
* Firefox 72 for developers
* Firefox 71 for developers
* Firefox 70 for developers
* Firefox 69 for developers
* Firefox 68 for developers
* Firefox 67 for developers
* Firefox 66 for developers
* Firefox 65 for developers
* Firefox 64 for developers
* Firefox 63 for developers
* Firefox 62 for developers
* Firefox 61 for developers
* Firefox 60 for developers
* Firefox 59 for developers
* Firefox 58 for developers
* Firefox 57 for developers
* Firefox 56 for developers
* Firefox 55 for developers
* Firefox 54 for developers
* Firefox 53 for developers
* Firefox 52 for developers
* Firefox 51 for developers
* Firefox 50 for developers
* Firefox 49 for developers
* Firefox 48 for developers
* Firefox 47 for developers
* Firefox 46 for developers