Firefox 115 for developers
==========================

This article provides information about the changes in Firefox 115 that affect developers. Firefox 115 was released on July 04, 2023.

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

### HTML

* The `modulepreload` keyword for the `rel` attribute of the `<link>` element is now supported.
 This allows early (and asynchronous) fetching of module scripts and their dependencies in parallel, which are then stored in the document's module map (Firefox bug 1425310).
### CSS

* The CSS `animation-composition` property is now supported by default. You can use this property to specify the composite operation to use when multiple animations affect the same property simultaneously. (Firefox bug 1823862).
* The `supports-conditions` in the CSS `@import` at-rule `supports()` function is now supported by default. This feature allows stylesheets to be imported only if the specified feature is supported in the user's browser. (Firefox bug 1830779).
### JavaScript

* The `Array.fromAsync()` static method is now supported.
 The method asynchronously returns a new, shallow-copied `Array` instance from an async iterable, iterable, or array-like object (Firefox bug 1795816).
* The `Array` and `TypedArray` methods `Array.toReversed()`, `Array.toSorted()`, `Array.toSpliced()`, `Array.with()`, `TypedArrays.toReversed()`, `TypedArrays.toSorted()`, and `TypedArrays.with()` are now supported.
 These methods return a new array with elements that have been shallow copied (similarly named methods without the `to` prefix modify the array elements in place).
 (Firefox bug 1811057).
### SVG

No notable changes.

### HTTP

* The `Sec-Purpose` HTTP fetch metadata request header is now included in requests to Prefetch resources.
 This allows servers to provide any special handling that might be needed, such as adjusting the caching expiry for the request (Firefox bug 1836328).
### APIs

* The `Response.json()` static method is now supported, making it easier to construct `Response` objects for returning JSON data.
 The method will be useful for service workers and any other code that needs to respond to browser requests with JSON data (Firefox bug 1758943).
* The `URL.canParse()` static method can now be used to parse and validate an absolute URL, or a relative URL and base URL.
 This provides a fast and easy way to check if URLs are valid, instead of constructing them within a `try...catch` block and handling exceptions.
 (Firefox bug 1823354).
* The `URLSearchParams.has()` and `URLSearchParams.delete()` methods now support the optional `value` argument.
 This allows matching a search parameter on both the `name` and `value`, making it possible to work with query strings that contain multiple search parameters that have the same name.
 (Firefox bug 1831587).

#### Removals

* The deprecated `mozPreservesPitch` alias of HTMLMediaElement.preservesPitch has been disabled by default, and may be fully removed in a future release (Firefox bug 1831205).
### WebDriver conformance (WebDriver BiDi, Marionette)

#### WebDriver BiDi

* The payload now always includes stack traces for responses and events without capping it after the first 50 "throw" usages in a realm (Firefox bug 1791715).
* When using `input.performActions`, any ongoing wheel transaction is now reset at the end of the command to not retain state and to not leak into following actions within the same tab (Firefox bug 1821733).
* When using a `pointerMove` action with `input.performActions`, an invalid element origin now correctly raises a "no such error" failure (Firefox bug 1832028).
* A race condition for the initial page load has been fixed that could appear when directly interacting with a newly opened tab or window (Firefox bug 1832891).

#### Marionette

* Both the commands `WebDriver:GetComputedLabel` and `WebDriver:GetComputedRole` now correctly wait for the requested accessibility object for an element to exist if it just got inserted into the DOM (Firefox bug 1828816).
* All instances of `window.setTimeout()` in our privileged code running in content processes now use a variant timer that is not affected by the throttling of the timers in case the given tab for automation is in the background.
Changes for add-on developers
-----------------------------

* To support its deprecation from Manifest V3 extensions, manifest key property `browser_style` defaults to `false` in `options_ui` and `sidebar_action` for Manifest V3 extensions (Firefox bug 1830710). See Manifest v3 migration for information about transitioning from `browser_style` in Manifest V3 extensions.
* The `commands.onChanged` event, which enables web extensions to listen for changes to command shortcuts, has been added (Firefox bug 1801531).
* Support has been added for `storage.session`, which provides the ability to store data in memory for the duration of the browser session (Firefox bug 18237131).
Older versions
--------------

* Firefox 114 for developers
* Firefox 113 for developers
* Firefox 112 for developers
* Firefox 111 for developers
* Firefox 110 for developers
* 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