Firefox 79 for developers
=========================

This article provides information about the changes in Firefox 79 that will affect developers. Firefox 79 was released on July 28, 2020.

See also Firefox 79: The safe return of shared memory, new tooling, and platform updates on Mozilla hacks.

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

### Developer Tools

#### Console

* Network messages with response codes in the 400-499 and 500-599 ranges are now considered errors, and are displayed even if Response or XHR filters are disabled. (Firefox bug 1635460)
* Network messages for requests that are blocked (by the browser or an extension) are now styled with a "prohibited" icon in the Console. (Firefox bug 1629875)

#### Debugger

* "Blackbox" a source file is now called "ignore" a source file. (Firefox bug 1642811)
* Inline preview is now available on exceptions. (Firefox bug 1581708)
* Items in the Watch Expressions and Scopes sections now have tooltips on hover, showing their values (Firefox bug 1631545)
* In the Call Stack section, there is now a context menu option to **Restart Frame**, to execute the current stack frame from its beginning. (Firefox bug 1594467)

#### Other tools

* The new Application panel is now available, which initially provides inspection and debugging support for service workers and web app manifests.
* The Messages tab of the Network Monitor has been merged with the Responses tab. (Firefox bug 1636421)
* The Accessibility Inspector is automatically turned on when you access its tab; you no longer need to explicitly enable it. (Firefox bug 1602075)
* In Responsive Design Mode, when touch simulation is enabled, mouse-drag events are now interpreted as touch-drag or swipe events. (Firefox bug 1621781)
* When remote debugging, the URL bar now has **Back** and **Forward** buttons to help with navigation on the remote browser. (Firefox bug 1639425)
### HTML

* The `<iframe>` element's `sandbox` attribute now supports the `allow-top-navigation-by-user-activation` token (Firefox bug 1359867).
* Setting `target="_blank"` on `<a>` and `<area>` elements implicitly provides the same behavior as also setting `rel="noopener"` (Firefox bug 1522083).
### CSS

* External style sheets are now cached per document group (Firefox bug 1599160). Firefox will minimize retrieval and revalidation of cached style sheets when navigating pages on the same origin. A simple reload (for example, `F5`) will not revalidate the cached CSS files. To load current versions of the style sheets, reload the page bypassing the cache (`Cmd`/`Ctrl` + `F5`).

#### Removals

* The `prefers-color-scheme` media feature's `no-preference` value has been removed from the media queries spec, and from Firefox (Firefox bug 1643656).
### JavaScript

* `SharedArrayBuffer` has been re-enabled in a post-Spectre-safe manner. It is available to cross-origin isolated sites (Firefox bug 1619649).
    + To cross-origin isolate your site, you need to set the new `Cross-Origin-Embedder-Policy` (COEP) and `Cross-Origin-Opener-Policy` (COOP) headers.
* `Promise.any()` is now available (Firefox bug 1599769).
* `WeakRef` objects have been implemented (Firefox bug 1639246).
* Logical assignment operators are now supported (Firefox bug 1639591)
    + Logical nullish assignment (`??=`)
    + Logical AND assignment (`&&=`)
    + Logical OR assignment (`||=`)
* `Atomics` objects now also work with non-shared memory (Firefox bug 1630706).
* The `Intl.DateTimeFormat()` constructor now supports the `dateStyle` and `timeStyle` options (Firefox bug 1557718).
* The `Intl.NumberFormat()` constructor now supports more numbering systems (Firefox bug 1413504).
### HTTP

* Cross-origin isolation has been implemented using the new `Cross-Origin-Embedder-Policy` (COEP) and `Cross-Origin-Opener-Policy` (COOP) headers. This allows you to access certain features such as `SharedArrayBuffer` objects and unthrottled timers in `Performance.now()`.
### APIs

#### DOM

* The `FileReader` interface's `loadstart` event is now dispatched asynchronously, as per the spec (Firefox bug 1502403).
* `CanvasPattern.setTransform()` now supports a `DOMMatrix` object as an input parameter, as well as an `SVGMatrix` object (Firefox bug 1565997).

#### Media, WebRTC, and Web Audio

* Firefox now supports remote timestamps on statistics records whose `RTCStats.type` is `remote-outbound-rtp`. The `RTCRemoteOutboundRtpStreamStats` dictionary which is used to provide these statistics now includes the `remoteTimestamp` property, which states the timestamp on the remote peer at which the statistics were collected or generated (Firefox bug 1615191).

#### Removals

* A number of internal Gecko events — including `DOMWindowClose` — which were accidentally exposed to the web, are now internal-only as intended (Firefox bug 1557407).
### WebAssembly

* WebAssembly Bulk memory operations are now shipped (Firefox bug 1528294).
* WebAssembly Reference types are now shipped (Firefox bug 1637884).
* WebAssembly Threads (Shared memory & Atomics) are now shipped (Firefox bug 1389458, Firefox bug 1648685).
Changes for add-on developers
-----------------------------

* New API: `tabs.warmup()` (bug 1402256)
* Storage quotas are now enforced for the `sync` storage area (bug 1634615) (addons.mozilla.org blog post)
Older versions
--------------

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