Firefox 78 for developers
=========================

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

See also New in Firefox 78: DevTools improvements, new regex engine, and abundant web platform updates on Mozilla hacks.

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

### Developer Tools

#### Debugger

* You can now change the URL accessed by the remote device from the about:debugging panel. (Firefox bug 1617237)
* The **Disable JavaScript** menu item in the Debugger now only affects the current tab, and is reset when the Developer Tools are closed. (Firefox bug 1640318)
* Logpoints can map variable names in source-mapped code back to their original names, if you enable **Maps** in the Scopes pane. (Firefox bug 1536857)

#### Network Monitor

* In the Network Monitor, you can now resize the columns of the request list by dragging the column borders anywhere in the table. (Firefox bug 1618409)
* The request details panel in the Network Monitor has some UX improvements. (Firefox bug 1631302, Firefox bug 1631295)
* If a request was blocked, the request list now shows the reason, such as an add-on, CSP, CORS, or Enhanced Tracking Protection. (Firefox bug 1555057, Firefox bug 1445637, Firefox bug 1556451)

#### Other tools

* The Accessibility inspector is out of beta. You can use it to check for various accessibility issues on your site. (Firefox bug 1602075)
* Uncaught promise errors now provide all details in the Console, including their name and stack. (Firefox bug 1636590)
### CSS

* The `:is()` and `:where()` pseudo-classes are now enabled by default (Firefox bug 1632646).
* The `:read-only` and `:read-write` pseudo-classes are now supported without prefixes (Firefox bug 312971).
    + In addition, `:read-write` styles are no longer applied to disabled `<input>` and `<textarea>` elements, which was a violation of the HTML spec (Firefox bug 888884).
### JavaScript

* The `Intl.ListFormat` API is now supported (Firefox bug 1589095).
* The `Intl.NumberFormat()` constructor has been extended to support new options specified in the Intl.NumberFormat Unified API Proposal (Firefox bug 1633836). This includes among other things:
    + Support for scientific notations
    + Unit, currency and sign display formatting
* The `RegExp` engine has been updated and now supports all new features introduced in ECMAScript 2018:
    + Lookbehind assertions (Firefox bug 1225665)
    + `RegExp.prototype.dotAll` (Firefox bug 1361856)
    + Unicode property escapes (Firefox bug 1361876)
    + Named capture groups (Firefox bug 1362154)
* Due to a WebIDL spec change in mid-2020, we've added a `Symbol.toStringTag` property to all DOM prototype objects (Firefox bug 1277799).
* The garbage collection of `WeakMap` objects has been improved. `WeakMaps` are now marked incrementally (Firefox bug 1167452).
### APIs

#### DOM

* The `Element.replaceChildren` method has been implemented (Firefox bug 1626015).

#### Service workers

* Extended Support Releases (ESR): Firefox 78 is the first ESR release that supports Service workers (and the Push API). Earlier ESR releases had no support (Firefox bug 1547023).
### WebAssembly

* Wasm Multi-value is now supported, meaning that WebAssembly functions can now return multiple values, and instruction sequences can consume and produce multiple stack values (Firefox bug 1628321).
* WebAssembly now supports import and export of 64-bit integer function parameters (i64) using `BigInt` from JavaScript (Firefox bug 1608770).
### TLS 1.0 and 1.1 removal

* Support for the Transport Layer Security (TLS) protocol's version 1.0 and 1.1, is dropped from all browsers. Read TLS 1.0 and 1.1 Removal Update for the previous announcement and what actions to take if you are affected (Firefox bug 1643229).
Changes for add-on developers
-----------------------------

* `browsingData.removeCache` and `browsingData.removePluginData` now support deleting by hostname. (Firefox bug 1636784).
* When using `proxy.onRequest`, a filter that limits based on tab id or window id is now correctly applied. This could be useful for add-ons that want to provide proxy functionality just in just one window.
* Clicking within the context menu from the "all tabs" dropdown now passed the appropriate tab object. In the past, the active tab was erroneously passed.
* When using `downloads.download` with the saveAs option, the recently used directory is now remembered. While this information is not available to developers, it is very convenient to users.
Older versions
--------------

* Firefox 77 for developers
* 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