Firefox 110 for developers
==========================

This article provides information about the changes in Firefox 110 that will affect developers. Firefox 110 was released on February 14, 2023.

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

### HTML

No notable changes.

### CSS

* Container queries and container query length units are now supported by default.
 For more information on these queries and the related units of length, see the CSS Container Queries documentation (Firefox bug 1809720).
* The color-gamut media query is now supported (Firefox bug 1422237).
* The `list` attribute is supported in `<input>` elements with `type="color"` on Windows and Linux (Firefox bug 960984).
* The `@page` at-rule now supports named pages, which allows a user to create page breaks for specific selectors using the `page` property (Firefox bug 1787947)
### JavaScript

* Serialization of native Error types now includes the `stack` property in workers when using `Worker.postMessage()` and `structuredClone()`.
 With this addition, cloning native error stacks now works for all methods that use the structured clone algorithm, in both the main thread and workers.
 (See Firefox bug 1774866 for more details.)
### APIs

* The `midi` permission of the Permission API is now supported.
 This allows the permission status for using the Web MIDI API to be queried using `navigator.permissions.query()` (Firefox bug 1772166).
* `ReadableStream` now supports asynchronous iteration over the chunks in a stream using the `for await...of` syntax (Firefox bug 1734244).
* WebRTC now supports sending the set of available encodings when adding a transceiver to a peer connection, and also getting the active encoding associated with a sender.
 Specifically, `RTCPeerConnection.addTransceiver()` now supports using the `sendEncodings` option in the `init` parameter object, and `active` can be used to determine whether or not the encoding is being used to send data.
 (See Firefox bug 1676855 for more details.)
* WebRTC methods `RTCRtpSender.getParameters()`, `RTCRtpSender.setParameters()`, and `RTCRtpReceiver.getParameters()` are now compliant with the specification (Firefox bug 1401592).

#### DOM

* `CSSContainerRule` is supported, allowing JavaScript to access the name and query used in an `@container` at-rule definition (Firefox bug 1787173).
* Elements now lose focus if a style is applied that makes them ineligible to hold focus, such as `hidden`, and the `blur` event is fired.
 Focus then moves to the viewport.
 Previously focus would remain with the element.
 (See Firefox bug 1810077 for more details.)
### WebDriver conformance (WebDriver BiDi, Marionette)

#### WebDriver BiDi

* Added support for the `network.beforeRequestSent` (Firefox bug 1790368), the `network.responseStarted` (Firefox bug 1790370), and the `network.responseCompleted` (Firefox bug 1790372) events.
* Added support for the `browsingContext.captureScreenshot` command to capture full page screenshots (Firefox bug 1800086).
* Added support for serialization and deserialization of generic platform objects (Firefox bug 1792524), and for `NodeList` and `HTMLCollection` platform objects (Firefox bug 1802284).
* Added a `timestamp` field to the `browsingContext.domContentLoaded` and `browsingContext.load` events (Firefox bug 1790378).
* Added a `type` field to the response for `script.evaluate` and `script.callFunction` to indicate either `success` or `exception` results (Firefox bug 1803599).

#### Marionette

* The cache for known nodes (element and shadow root references) has been moved from the parent to the web content process following recent WebDriver classic changes (Firefox bug 1692468).
* Improved the JSON serialization and deserialization algorithms to be compliant with the WebDriver classic specification (Firefox bug 1794078).
Changes for add-on developers
-----------------------------

* Added the `"webRequestFilterResponse"`API permission. This permission provides access to `webRequest.filterResponseData`. This permission can be provided as an optional permission. See `webRequest.filterResponseData` for more information on using this permission (Firefox bug 1809235).
* The `defaultZoomFactor` property of `tabs.ZoomSettings` now returns the value of the default zoom factor setting (Firefox bug 1772166)
Older versions
--------------

* Firefox 109 for developers
* Firefox 108 for developers
* Firefox 107 for developers
* Firefox 106 for developers
* Firefox 105 for developers
* Firefox 104 for developers
* Firefox 103 for developers
* Firefox 102 for developers
* Firefox 101 for developers
* Firefox 100 for developers
* Firefox 99 for developers
* Firefox 98 for developers
* Firefox 97 for developers
* Firefox 96 for developers
* Firefox 95 for developers
* Firefox 94 for developers
* Firefox 93 for developers
* Firefox 92 for developers
* Firefox 91 for developers
* Firefox 90 for developers
* Firefox 89 for developers
* Firefox 88 for developers
* Firefox 87 for developers
* Firefox 86 for developers
* Firefox 85 for developers
* Firefox 84 for developers
* Firefox 83 for developers
* Firefox 82 for developers
* Firefox 81 for developers
* Firefox 80 for developers
* Firefox 79 for developers