Firefox 65 for developers - Mozilla

Firefox 65 for developers
=========================

This article provides information about the changes in Firefox 65 that will affect developers. Firefox 65 was released on January 29, 2019.

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

### Developer tools

* The Flexbox inspector is now enabled by default.
* Support has been added to the JavaScript Debugger for XHR Breakpoints (Firefox bug 821610).
* Right-click on an item in the accessibility tree from the Accessibility viewer to print it as JSON to the JSON viewer.
* The color contrast display of the Accessibility Picker has been updated so that if a text's background is complex (e.g. a gradient or complex image), it shows a range of color contrast values.
* The Headers tab of the Network Monitor now displays the Referrer Policy for the selected request (Firefox bug 1496742).
* When displaying stack traces (e.g. in console logs or the JavaScript debugger), calls to framework methods are identified and collapsed by default, making it easier to home in on your code.
* In the same fashion as native terminals, you can now use reverse search to find entries in your JavaScript console history (`F9` on Windows/Linux or `Ctrl` + `R` on macOS, then type a search term, followed by `Ctrl` + `R`/`Ctrl` + `S` to toggle through results).
* The JavaScript console's `$0` shortcut (references the currently inspected element on the page) now has autocomplete available, so for example you could type `$0.te` to get autocomplete suggestions for properties like `$0.textContent`.
* The edits you make in the Rules view of the Inspector are now listed in the Changes panel (Firefox bug 1503920).
### HTML

* Events are now dispatched on disabled HTML elements, i.e. `<button>`, `<fieldset>`, `<input>`, `<select>`, and `<textarea>` elements with `disabled` attributes set on them (Firefox bug 329509).
* Removing the `src` attribute of an `<iframe>` element now causes `about:blank` to be loaded into it, giving it parity with Chrome and Safari (Firefox bug 1507842). Previously removing `src` had no effect on the `iframe` content.
* We have added support for the `referrerpolicy` attribute on `<script>` elements (Firefox bug 1460920).
### CSS

* The `image-rendering` property's `crisp-edges` value has now been unprefixed (Firefox bug 1496617).
* A `scrollbar-color` value of `auto` now resolves to `auto`, rather than two colors (Firefox bug 1501418).
* The `break-*` properties have been implemented, and the legacy `page-break-*` properties have been aliased to them (Firefox bug 775618):
    + `break-before` is now an alias for `page-break-before`.
    + `break-after` is now an alias for `page-break-after`.
    + `break-inside` is now an alias for `page-break-inside`.
* The `overflow-wrap` property's `anywhere` value has been implemented (Firefox bug 1505786).
* The new step position keywords `jump-start`, `jump-end`, `jump-none`, and `jump-both` — usable inside the `steps()` timing function — have been implemented (Firefox bug 1496619). This also coincides with the removal of the `frames()` timing function, which was the previous way of implementing such functionality, now deprecated.
* Some new `-webkit-appearance` values have been added, for compatibility with other browsers. In particular:
    + `meter`, which is now used as the default value for `<meter>` elements in UA stylesheets. The existing value `meterbar` is now an alias for `meter` (Firefox bug 1501483).
    + `progress-bar`, which is now used as the default value for `<progress>` elements in UA stylesheets. The existing value `progressbar` is now an alias for `progress-bar` (Firefox bug 1501506).
    + `textarea`, which is now used as the default value for `<textarea>` elements in UA stylesheets. The existing value `textfield-multiline` is now an alias for `textarea` (Firefox bug 1507905).
* The behavior of `user-select` has been changed to make it align more with other browsers (Firefox bug 1506547). Specifically:
    + `user-select: all` set on an element no longer overrides other values of `user-select` set on children of that element. So for example in the following snippet:
     html
    ```html
    <div style="-webkit-user-select: all">
      All
      <div style="-webkit-user-select: none">None</div>
    </div>

    ```
    The `<div>` with `none` set on it is now non-selectable. Previously this value would have been overridden by the `all` value set on the parent element.
    + non-`contenteditable` elements nested inside `contenteditable` elements are now selectable.
    + `user-select` now behaves consistently inside and outside shadow DOM.
    + The proprietary `-moz-text` value has been removed.
* CSS environment variables (the `env()` function) have been implemented (Firefox bug 1462233).

#### Removals

* The `layout.css.shape-outside.enabled` pref has been removed; `shape-outside`, `shape-margin`, and `shape-image-threshold` can no longer be disabled in `about:config` (Firefox bug 1504387).
* Several Firefox-only values of the `user-select` property have been removed — `-moz-all`, `-moz-text`, `tri-state`, `element`, `elements`, and `toggle`. See Firefox bug 1492958 and Firefox bug 1506547.
* As mentioned above, the `frames()` timing function has been removed (Firefox bug 1496619).
### SVG

*No changes.*

### JavaScript

* `Intl.RelativeTimeFormat` is now supported (Firefox bug 1504334).
* Strings now have a maximum length of `2**30 - 2` (~1GB) instead of `2**28 - 1` (~256MB) (Firefox bug 1509542).
* The `globalThis` property, which always refers to the top-level global object, has been implemented (Firefox bug 1317422).
### APIs

#### New APIs

* Readable Streams have been enabled by default (Firefox bug 1505122).
* The Storage Access API has been enabled by default (Firefox bug 1513021).

#### DOM

* `Performance.toJSON()` has been exposed to Web Workers (Firefox bug 1504958).
* `XMLHttpRequest` requests will now throw a `NetworkError` if the requested content type is a `Blob`, and the request method is not `GET` (Firefox bug 1502599).
* The `-moz-` prefixed versions of many of the Fullscreen API features have been deprecated, and will now display deprecation warnings in the JavaScript console when encountered (Firefox bug 1504946).
* `createImageBitmap()` now supports SVG images (`SVGImageElement`) as an image source (Firefox bug 1500768).

#### DOM events

* Going forward, only one `Window.open()` call is allowed per event (Firefox bug 675574).
* The `keyup` and `keydown` events are now fired during IME composition, to improve cross-browser compatibility for CJKT users (Firefox bug 354358.

#### Web workers

* `SharedWorkerGlobalScope.connect`'s event object is a `MessageEvent` instance — its `data` property is now an empty string value rather than `null` (Firefox bug 1508824).

#### Fetch and Service workers

* The `Response.redirect()` method now correctly throws a `TypeError` if a non-valid URL is specified as the first parameter (Firefox bug 1503276).
* The `ServiceWorkerContainer.register()` and `WorkerGlobalScope.importScripts()` (when used by a service worker) methods will now accept any files with a valid JavaScript MIME type (Firefox bug 1354577).
* The `FetchEvent.replacesClientId` and `FetchEvent.resultingClientId` properties are now supported (Firefox bug 1264177).
* The `ServiceWorkerGlobalScope.onmessageerror` and `ServiceWorkerContainer.onmessageerror` handler properties have been implemented (Firefox bug 1399446).
* The `Origin` header is no longer set on Fetch requests with a method of `HEAD` or `GET` (Firefox bug 1508661).

#### Media, Web Audio, and WebRTC

* The WebRTC `RTCIceCandidateStats` dictionary has been updated according to the latest spec changes (Firefox bug 1324788, Firefox bug 1489040; RTCIceCandidateStats has been updated to the latest spec for more details on exactly what has changed).
* The `MediaRecorder` `pause` and `resume` events (and their corresponding event handler properties were not previously implemented, even though compatibility tables claimed they had been. They have now been implemented (Firefox bug 1458538, Firefox bug 1514016).

#### Canvas and WebGL

* The WebGL `EXT_texture_compression_bptc` and `EXT_texture_compression_rgtc` texture compression extensions have been exposed to WebGL1 and WebGL2 contexts (Firefox bug 1507263).

#### Removals

* Mutation events have been disabled in shadow trees (Firefox bug 1489858).
* The non-standard `MediaStream` property `currentTime` has been removed (Firefox bug 1502927).
* The `dom.webcomponents.shadowdom.enabled` and `dom.webcomponents.customelements.enabled` prefs have been removed — Shadow DOM and Custom Elements can no longer be disabled in `about:config` (Firefox bug 1503019).
* The non-standard DOM `text` event — fired to notify the browser editor UI of IME composition string data and selection range — has been removed (Firefox bug 1288640).
* The `keypress` event is no longer fired for non-printable keys (Firefox bug 968056), except for the `Enter` key, and the `Shift` + `Enter` and `Ctrl` + `Enter` key combinations (these were kept for cross-browser compatibility purposes).
### Security

* Additional CORS restrictions are now being enforced on allowable request headers (Firefox bug 1483815, see also whatwg fetch issue 382: CORS-safelisted request headers should be restricted according to RFC 7231 for more details).
### Networking

*No changes.*

### Plugins

*No changes.*

### WebDriver conformance (Marionette)

#### API changes

* `WebDriver:ElementSendKeys` now handles `<input type=file>` more relaxed for interactability checks, and allows those elements to be hidden without raising a `not interactable` error anymore. If a strict interactability check is wanted the capability `strictFileInteractability` can be used (Firefox bug 1502864).

#### Bug fixes

* The window manipulation commands `WebDriver:FullscreenWindow`, `WebDriver:MinimizeWindow`, `WebDriver:MaximizeWindow`, and `WebDriver:SetWindowRect` have been made more stable (Firefox bug 1492499). It means that under special conditions they don't cause an infinite hang anymore, but instead timeout after 5s if the requested window state cannot be reached (Firefox bug 1521527).
* `WebDriver:ElementClick` now correctly calculates the center point of the element to click, which allows interactions with dimensions of 1x1 pixels (Firefox bug 1499360).

#### Others

* For `unexpected alert open` errors more informative messages are provided (Firefox bug 1502268).
### Other

* Support for WebP images has been added (Firefox bug 1294490).
    + In addition, to facilitate cross-browser compatibility in certain situations the WebP MIMEType (`image/webp`) has been added to the standard HTTP Request `Accept` header for HTML files (Firefox bug 1507691).
* The AV1 codec is now supported by default on Windows (Firefox bug 1452146).
Changes for add-on developers
-----------------------------

### API changes

#### Tabs

* The tabs API has been enhanced to support tab successors — a tab can have a successor assigned to it, which is the ID of the tab that will be active once it is closed (Firefox bug 1500479, also see this blog post for more information). In particular:
    + The `tabs.Tab` type now has a `successorId` property, which can be used to store/retrieve the ID of the tab's successor.
    + The `tabs.onActivated` event listener's callback has a new parameter available, `previousTabId`, which contains the ID of the previous activated tab, if it is still open.
    + The `tabs.update()` function's `updateProperties` object has a new optional property available on it, `successorTabId`, so can be used to update it.
    + `successorTabId` is also returned by functions like `tabs.get()` and `tabs.query()`.
    + The new function `tabs.moveInSuccession()` allows manipulation of tab successors in bulk.
### Manifest changes

*No changes.*

### Other

* The `headerURL`/`theme_frame` properties for WebExtension themes are now supported on Firefox for Android (Firefox bug 1429488).
See also
--------

* Hacks release post: Firefox 65: WebP support, Flexbox Inspector, new tooling & platform updates
Older versions
--------------

* 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
* Firefox 45 for developers
* Firefox 44 for developers
* Firefox 43 for developers
* Firefox 42 for developers
* Firefox 41 for developers
* Firefox 40 for developers
* Firefox 39 for developers
* Firefox 38 for developers
* Firefox 37 for developers
* Firefox 36 for developers
* Firefox 35 for developers
* Firefox 34 for developers


Firefox 54 for developers - Mozilla

Firefox 54 for developers
=========================

Firefox 54 was released on June 13, 2017. This article lists key changes that are useful for web developers.

Changes for Web developers
--------------------------

### Developer Tools

* The network request summary now includes the amount of data actually transferred ("transferred size"), as does the performance analysis view (Firefox bug 1168376).
* The network request headers view now links to the related documentation on MDN (Firefox bug 1320233).
### CSS

* `clip-path` now supports basic shapes (Firefox bug 1247229).
* Firefox's implementations of CSS Flexbox and CSS alignment now implement updated spec language for interactions between the properties `align-items` and `align-self` as well as between `justify-items` and `justify-self` (Firefox bug 1340309).
* `<input>` elements of types `checkbox` and `radio` with `-moz-appearance``: none;` set on them are now non-replaced elements, for compatibility with other browsers (Firefox bug 605985).
* Previously, an element styled with `display`: `inline-block` with a child element of type `HTMLInputElement` styled with `display:block` had a wrong baseline (Firefox bug 1330962). This is now fixed.
* When Mozilla introduced dedicated content threads to Firefox (through the Electrolysis or e10s project), support for styling `<option>` elements was removed temporarily. Starting in Firefox 54, you can apply foreground and background colors to `<option>` elements again, using the `color` and `background-color` attributes. See Firefox bug 910022 for more information. Note that this is still disabled in Linux due to lack of contrast (see Firefox bug 1338283 for progress on this).
* CSS Animations now send the `animationcancel` event as expected when an animation aborts prematurely (Firefox bug 1302648).
* Transparent colors (i.e. those with an alpha channel of 0) were being serialized to the `transparent` color keyword in certain situations; this has been fixed so that Firefox follows the spec (as well as other browsers' implementations). See (Firefox bug 1339394 for further information.
* The proprietary `:-moz-table-border-nonzero` pseudo-class is no longer available to web content; it is now restricted to Firefox's internal UA stylesheet (Firefox bug 1341925).
* [css-grid] Intrinsic content with overflow:auto overlaps in grid (Firefox bug 1348857).
* [css-grid] Transferred min-size contribution of percentage size grid item with an intrinsic ratio (Firefox bug 1349320).
### JavaScript

* `\b` and `\B` in `RegExp` with the `"u"` (Unicode) and `"i"` (case insensitive) flags now treat U+017F (LATIN SMALL LETTER LONG S) and U+212A (KELVIN SIGN) as word characters (Firefox bug 1338373).
* The `DataView` constructor now throws a `RangeError` if the `byteOffset` parameter is out of `Number.MAX_SAFE_INTEGER` (>= 2 \*\* 53) (Firefox bug 1317382).
* The `Date.UTC()` method has been updated to conform to ECMAScript 2017 when fewer than two arguments are provided (Firefox bug 1050755).
* The `Function.prototype.toString()` method has been updated to match the latest proposed specification (Firefox bug 1317400).
### DOM & HTML DOM

* The `URL.toJSON()` method has been implemented (Firefox bug 1337702).
* The `URLSearchParams()` constructor now accepts a record containing strings as an init object (Firefox bug 1331580).
* Values returned in `KeyboardEvent.key` for printable keys when the control key is also pressed have been corrected on macOS (except when the Command key is pressed) (Firefox bug 1342865).
* The `dom.workers.latestJSVersion` preference, which was mainly implemented to work around problems using `let` in workers (due to Firefox bug 855665, which has since been fixed) has been removed (see Firefox bug 1219523).
* The `event.timeStamp` property now returns a high-resolution monotonic time (`DOMHighResTimeStamp`) instead of a value representing Unix time in milliseconds.
### Web Workers and Service Workers

* `WorkerGlobalScope.close` is now available on `DedicatedWorkerGlobalScope` and `SharedWorkerGlobalScope` instead. This change was made to stop `close()` being available on service workers, as it isn't supposed to be used there and always throws an exception when called (see Firefox bug 1336043).
* The `origin` property has been implemented (see Firefox bug 1306170).
* The `Client.type` property has been implemented (see Firefox bug 1339844).
* `Clients.matchAll()` now returns `Client` objects in most recently focused order (see Firefox bug 1266747).
* Some changes have been made to the observed behavior when the `Request()` constructor is passed an existing `Request` object instance to make a new instance. The following new behaviors are designed to retain security while making the constructor less likely to throw exceptions:
    + If this object exists on another origin to the constructor call, the `Request.referrer` is stripped out.
    + If this object has a `Request.mode` of `navigate`, the `mode` value is converted to `same-origin`.
### Audio/Video

#### General

* 5.1 surround sound playback is now enabled by default on Windows, macOS, and Linux (Firefox bug 1334508, Firefox bug 1321502, and Firefox bug 1323659).

#### Media Capture and Streams API

* Usage of a `MediaStream` object as the input parameter to `URL.createObjectURL()` has been deprecated — the console will now show a warning (see Firefox bug 1334564). You are advised to use `HTMLMediaElement.srcObject` instead.

#### Web Audio API

* The method `AnalyserNode.getFloatFrequencyData()` now correctly represents silent samples in the returned buffer with the value `-Infinity` (Firefox bug 1336098).
* `AudioParam.setValueCurveAtTime()` now throws a `TypeError` exception if any of the specified values aren't finite (Firefox bug 1308437).

#### Encrypted MediaExtensions API

* The `MediaKeySession.keySystem` string has been removed from the specification, and as such we've taken it out of Firefox 54 (Firefox bug 1335555).
* Support has been added for the VP9 codec in encrypted streams using Clear Key and Widevine (Firefox bug 1338064).
* Previously, MSE was only allowed to use WebM/VP8 video if the system was considered "fast enough." Now playback of VP8-encoded `webm/video` media is always supported, regardless of system performance.

#### WebRTC

* TCP ICE candidate support, originally added in Firefox 41, is now enabled by default. This allows the ICE layer to consider candidates that use TCP rather than the preferred UDP for transmission. This can be useful in environments in which UDP is blocked (Firefox bug 1176382). This blog post explains the feature in more details.
Removals from the web platform
------------------------------

### CSS

* Removed the `-moz` prefixed versions of `isolate`, `isolate-override`, and `plaintext` values for the `unicode-bidi` property (Firefox bug 1333675).
### HTTP

* HTTP/1 Pipelining support has been removed in Firefox 54. Maintaining it as we make the move into a new world full of HTTP/2 and other substantial, standardized improvements to networking performance is not worthwhile given pipelining's compatibility and performance issues. The `network.http.pipelining` preference (as well as the other preferences that start with "network.http.pipelining") is now ignored. See Firefox bug 1340655 for further information.
Older versions
--------------

* 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
* Firefox 45 for developers
* Firefox 44 for developers
* Firefox 43 for developers
* Firefox 42 for developers
* Firefox 41 for developers
* Firefox 40 for developers
* Firefox 39 for developers
* Firefox 38 for developers
* Firefox 37 for developers
* Firefox 36 for developers
* Firefox 35 for developers
* Firefox 34 for developers
* Firefox 33 for developers
* Firefox 32 for developers
* Firefox 31 for developers
* Firefox 30 for developers
* Firefox 29 for developers
* Firefox 28 for developers
* Firefox 27 for developers
* Firefox 26 for developers
* Firefox 25 for developers
* Firefox 24 for developers
* Firefox 23 for developers


Firefox 48 for developers - Mozilla

Firefox 48 for developers
=========================

To test the latest developer features of Firefox, install Firefox Developer Edition Firefox 48 was released on August 2, 2016. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.

Changes for Web developers
--------------------------

### Developer Tools

* The position of elements can now be changed within the content (Firefox bug 1139187).
* Implemented `console.clear()` to clear the console output (Firefox bug 659625).
* Added HTTP log inspection to the Web Console (Firefox bug 1211525).
* Added a Firebug theme (Firefox bug 1244054).
* Added the DOM Inspector (Firefox bug 1201475).
* Font inspector has been enabled by default again (Firefox bug 1280121).
* Improved suggestions for CSS properties (Firefox bug 1168246).
* Cookies, localstorage and sessionstorage entries are editable via double-click (Firefox bug 1231154, Firefox bug 1231179, Firefox bug 1231155).
### HTML

* The `<details>` and `<summary>` elements have been activated by default on Nightly and Aurora (DevTools), but not on Beta or Release:
    + The default style for these elements has been adapted to match the spec (Firefox bug 1258657).
    + The `toggle` event is now sent to the `<details>` element when this one is opened or closed (Firefox bug 1225412).
* The `meta` attributes now also supports the `no-referrer-when-downgrade` and `origin-when-cross-origin` values (Firefox bug 1178337).
### CSS

* The `calc()` has been improved to be closer to the specification:
    + `calc()` is now supported on the `line-height` property (Firefox bug 594933).
    + Added support for nested CSS `calc()` (Firefox bug 968761).
* Our experimental implementation of CSS grids has been updated:
    + Fragmentation for grid layout has been implemented (Firefox bug 1144096).
    + [css-grid] Percentage tracks are now treated as `auto` if grid container size is indefinite (Firefox bug 1264607).
    + `<fieldset>` now supports grid and flex layouts (Firefox bug 1230207).
* The `luminance` value for `mask-mode` has been added; the `auto` value has been renamed to `match-source`, to match the spec (Firefox bug 1228354).
* Interpolation of `clip-path` basic shapes in CSS animations and transitions is now supported (Firefox bug 1110460).
* Support for horizontal-in-vertical (*tate-chu-yoko*) text has been added via the `all` value of the `text-combine-upright` property (Firefox bug 1097499).
* Support for the experimental `color-adjust` property has been added, allowing pages to specify that background colors and images should be printed (Firefox bug 1209273).
* The `::first-letter` pseudo-element now also matches punctuation characters of type Pd that precede or immediately follow the actual first letter; this is a new requirement of CSS Pseudo-element module level 4 (Firefox bug 1260366).
* Several `-webkit` prefixed properties and values have been added for web compatibility, behind the preference `layout.css.prefixes.webkit`, defaulting to `false`:
    + `-webkit-text-fill-color` (Firefox bug 1247777).
    + `-webkit-text-stroke`, `-webkit-text-stroke-color`, `-webkit-text-stroke-width` (Firefox bug 1248708).
    + `-webkit-background-clip` (as background-clip) text value (Firefox bug 759568).
    + `-webkit-box-direction`, `-webkit-box-orient` (Firefox bug 1262049.
    + The value `-webkit-inline-box` is now an alias of `inline-flex` on the `display` property. (Firefox bug 1257661).
    + `-webkit-flex-direction`, `-webkit-flex-wrap`, `-webkit-flex-flow`, `-webkit-order`, `-webkit-flex`, `-webkit-flex-grow`, `-webkit-flex-shrink`, `-webkit-flex-basis`, `-webkit-justify-content`, `-webkit-align-items`, `-webkit-align-self` and `-webkit-align-content` were added as aliases for the unprefixed properties and the values `-webkit-flex` and `-webkit-inline-flex` for the `display` property as aliases for the unprefixed values (Firefox bug 1274096).
    + Added `-webkit-box-flex`, `-webkit-box-ordinal-group`, `-webkit-box-align` and `-webkit-box-pack` properties and `-webkit-box` value to `display` as aliases for modern CSS Flexbox (Firefox bug 1208635).
* The `text` value of `background-clip` is now available in all type of Firefox (and not only non-release builds) (Firefox bug 1263516).
* The `absolute` value of `position` properties on the top layer element (Firefox bug 1236828).
* Added an internal-only syntax for `@supports` to detect pref (Firefox bug 1259889).
### JavaScript

#### New APIs

* The `String.prototype.padStart()` and `String.prototype.padEnd()` methods have been implemented (Firefox bug 1260509).
* The ES2015 `Symbol.unscopables` and `Array.prototype[@@unscopables]` properties have been implemented (Firefox bug 1054759 and Firefox bug 1258163).
* The ES2015 `Symbol.isConcatSpreadable` symbol has been implemented (Firefox bug 1041586).
* The ES2015 `Array[@@species]` getter has been implemented (Firefox bug 1165052).
* The ES2015 `ArrayBuffer[@@species]` getter and `%TypedArray%[@@species]` getter have been implemented (Firefox bug 1165053).
* The `Intl.getCanonicalLocales()` method of the ECMAScript Internationalization API draft has been implemented (Firefox bug 1263040).

#### Deprecations and removals

* The deprecated old Proxy API (`Proxy.create` and `Proxy.createFunction()`) has been removed. Use the standard `Proxy` object instead (Firefox bug 892903).
* The `String.prototype.contains()` method has been removed (it was deprecated since version 40). Use the `String.prototype.includes()` method instead (Firefox bug 1103588).
* The non-standard `RegExp.multiline` property (not `RegExp.prototype.multiline`) has been removed. Use the standard m flag instead (Firefox bug 1219757).
* The `Object.prototype.__defineGetter__()` and `Object.prototype.__defineSetter__()` methods can no longer be called at the global scope without any object. (Firefox bug 1253016).
### Interfaces/APIs/DOM

#### DOM & HTML DOM

* Dropped the "Moz" prefix from the `CSSKeyframeRule` and `CSSKeyframesRule` interfaces (Firefox bug 1256178).
* The `NavigatorConcurrentHardware` mixin has been implemented, which adds the `Navigator.hardwareConcurrency` property to the `Navigator` interface. This lets websites and apps get at least an approximation of how many processing cores are available to run `Worker`s in (Firefox bug 1008453).
* The `Node.isSameNode()` method, which was removed in Firefox 10, has returned after being added back into the specification after a lengthy absence (Firefox bug 1256299).
* Firefox now returns proper exceptions instead of numbers when things go wrong during a call to `Navigator.registerProtocolHandler()`.
* `Element.animate()` is now activated by default (Firefox bug 1245000).
* The two methods `Element.insertAdjacentText()` and `Element.insertAdjacentElement()` have been implemented (Firefox bug 811259).
* `Document.scrollingElement` got enabled by default (Firefox bug 1265032).
* `Node.localName`, `Node.namespaceURI` and `Node.prefix` were moved to the `Element` and `Attr` APIs (Firefox bug 1055776).
* Per the latest specification, the values of `KeyboardEvent.code` returned for the following keys have been changed see (Firefox bug 1264150):
    + `"OSLeft"` and `"OSRight"` are now `"MetaLeft"` and `"MetaRight"`.
    + `"VolumeDown"`, `"VolumeUp"`, and `"VolumeMute"` are now `"AudioVolumeDown"`, `"AudioVolumeUp"`, and `"AudioVolumeMute"`.
    + `"IntlHash"` has been removed.
    + All keys whose `code` values were reported as "" in earlier versions of Firefox are now reported as "Unidentified".

#### Canvas 2D

* The `CanvasRenderingContext2D.ellipse()` method has been implemented (Firefox bug 910138).

#### WebRTC

* The two methods `MediaStream.clone()` and `MediaStreamTrack.clone()` have been implemented (Firefox bug 1208371).
* The `iceRestart` entry is now supported in the `RTCOfferOptions` code dictionary, allowing `createOffer()` to be used to request ICE restarts (Firefox bug 906986).
* The `RTCPeerConnection.createOffer()` method now prefers the VP9 video codec by default; previously VP8 was preferred (Firefox bug 1242324.
* WebM/VP8 video that includes video resolution changes that has been recorded using `MediaRecorder` can now be played back successfully.

#### Others

* The Web Crypto API is now available in Web workers (Firefox bug 842818).
* The `CustomEvent` interface is now available in Web Workers (Firefox bug 1003432).
* The `DOMApplicationsManager.getNotInstalled()` method has been removed (Firefox bug 1255036).
* Several Firefox OS APIs that were erroneously exposed to the Web have now been hidden as they should have been — `mozContact`, `MozContactChangeEvent`, `navigator.mozContacts`, `MozPowerManager`, `MozSettingsEvent` (see Firefox bug 1043562, Firefox bug 1256414, and Firefox bug 1256046).
* Support for UTF-16 has been removed from `TextEncoder` (Firefox bug 1257877).
* `RTCStatsReport` is now a true `maplike` interface: in addition to `forEach()`, `get()`, and `has()`, the methods `entries()`, `values()`, `keys()`, as well as the `size` getter have been implemented (Firefox bug 906986).
* The `Request.cache` property has been added allowing to control the cache behavior (Firefox bug 1120715).
* Handling of dead keys on Mac OS X has been changed to work the same as other platforms; they no longer fire a `keypress` event when no text is generated when the focused element isn't editable (when the focused element is editable, dead key causes composition events instead of keyboard events on Mac OS X). Also, like on other platforms, the value of `KeyboardEvent.key` is now `"Dead"` for dead keypresses which don't generate text in other situations.
HTTP
----

* Support for the `Upgrade-Insecure-Requests` header has been added (Firefox bug 1243586).
* The `block-all-mixed-content` CSP directive has been implemented (Firefox bug 1122236)
Changes for add-on and Mozilla developers
-----------------------------------------

* The Social Worker API has been removed.
* Added the `-moz-bool-pref()` CSS `@supports` function to allow hiding portions of chrome stylesheets behind boolean preferences. (Firefox bug 1259889)
Older versions
--------------

* Firefox 47 for developers
* Firefox 46 for developers
* Firefox 45 for developers
* Firefox 44 for developers
* Firefox 43 for developers
* Firefox 42 for developers
* Firefox 41 for developers
* Firefox 40 for developers
* Firefox 39 for developers
* Firefox 38 for developers
* Firefox 37 for developers
* Firefox 36 for developers
* Firefox 35 for developers
* Firefox 34 for developers
* Firefox 33 for developers
* Firefox 32 for developers
* Firefox 31 for developers
* Firefox 30 for developers
* Firefox 29 for developers
* Firefox 28 for developers
* Firefox 27 for developers
* Firefox 26 for developers
* Firefox 25 for developers
* Firefox 24 for developers
* Firefox 23 for developers
* Firefox 22 for developers
* Firefox 21 for developers
* Firefox 20 for developers
* Firefox 19 for developers
* Firefox 18 for developers
* Firefox 17 for developers


Firefox 102 for developers - Mozilla

Firefox 102 for developers
==========================

This article provides information about the changes in Firefox 102 that will affect developers. Firefox 102 was released on June 28, 2022.

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

### HTML

No notable changes.

### CSS

The `update` media feature that can be used to query the ability of the output device to modify the appearance of content after it is rendered is now available by default (Firefox bug 1422312).

### JavaScript

No notable changes.

### APIs

* The non-standard interfaces `IDBMutableFile`, `IDBFileHandle`, `IDBFileRequest`, and the method `IDBDatabase.createMutableFile()` have been disabled by default in preparation for removal in a future release (Firefox bug 1764771).
* Transform streams are now supported, allowing you to pipe from `ReadableStream` to a `WritableStream`, executing a transformation on the chunks.
 The update includes the new interfaces `TransformStream` and `TransformStreamDefaultController` and the method `ReadableStream.pipeThrough()` (Firefox bug 1767507).
* Readable byte streams are now supported, allowing efficient zero-byte transfer of data from an underlying byte source to a consumer (bypassing the stream's internal queues).
 The new interfaces are `ReadableStreamBYOBReader`, `ReadableByteStreamController` and `ReadableStreamBYOBRequest` (Firefox bug 1767342).
### Security

* Support of the `wasm-unsafe-eval` CSP policy directive has been implemented.
 A document with a CSP that restricts scripts will no longer load and execute WebAssembly unless the CSP uses `'wasm-unsafe-eval'` or the existing `'unsafe-eval'` keyword (Firefox bug 1740263).

#### DOM

* The Firefox-only property `Window.sidebar` has been moved behind a preference (and permanently removed in version 119) (Firefox bug 1768486).
### WebDriver conformance

#### WebDriver BiDi

* There are some improvements to Webdriver BiDi's `browsingContext.navigate`
    + Fixed edge cases where the navigation could incorrectly timeout (Firefox bug 1766217).
    + Added support for hash changes (Firefox bug 1763127).
    + Added support navigation to error pages (Firefox bug 1763124).

#### Marionette

* Allow marionette to connect to a windowless instance of Firefox (Firefox bug 1726465).
* Fixed issue where `WebDriver:Navigate` with a PageLoadStrategy of "none" returns before navigation has started (Firefox bug 1754132).
* Fixed a potential race condition in `WebDriver:SwitchToWindow` when switching to a different tab (Firefox bug 1749666).
Changes for add-on developers
-----------------------------

* The `scripting` API, which provides features to execute script, insert and remove CSS, and manage the registration of content scripts is available to Manifest V2 extensions (Firefox bug 1766615).
* The `nonPersistentCookies` option of the `privacy.websites` `cookieConfig` property has been deprecated (Firefox bug 1754924).
* Manifest V3 preview features:
    + With the introduction of support for the 'wasm-unsafe-eval' CSP keyword in Firefox (Firefox bug 1740263), Manifest V3 extensions are now required to specify this keyword in the content\_security\_policy manifest key to use WebAssembly. For backwards-compatibility, Manifest V2 extensions can still use WebAssembly without the keyword (Firefox bug 1766027).
Older versions
--------------

* 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
* 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 90 for developers - Mozilla

Firefox 90 for developers
=========================

This article provides information about the changes in Firefox 90 that will affect developers. Firefox 90 was released on July 13th, 2021.

**Note:** See also Getting lively with Firefox 90 on Mozilla Hacks.

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

### Developer Tools

* The response view now shows a preview for web fonts (Firefox bug 872078).
### HTML

* A fix to the way that form payloads are handled around newline normalization and escaping in multipart/formdata. This meets the updated specification, and matches other browser implementations. (Firefox bug 1686765).
* Firefox now sets an image's intrinsic size and resolution based on EXIF information (if present and self-consistent). This allows a server to, for example, send a low-quality placeholder image to speed up loading. It also enables a number of other use cases (Firefox bug 1680387).
### CSS

* `-webkit-image-set()` has been implemented as an alias of the standard `image/image-set()` function (Firefox bug 1709415).
### JavaScript

* Private class static and instance fields and methods are now supported by default (Firefox bug 1708235 and Firefox bug 1708236).
* The `in` operator can now be used to check if a class private method or field has been defined. This offers a more compact approach for handling potentially undefined features, as oppose to wrapping code in `try/catch` blocks (Firefox bug 1648090).
* Custom date/time formats specified as options to the `Intl.DateTimeFormat()` constructor can now include `dayPeriod` — a value indicating that the approximate time of day (e.g. "in the morning", "at night", etc.) should be included as a `narrow`, `short`, or `long` string (Firefox bug 1645115).
* The relative indexing method `at()` has been added to the `Array`, `String` and `TypedArray` global objects. (Firefox bug 1681371)
### HTTP

* The HTTP fetch metadata request headers (`Sec-Fetch-*`) are now supported. These headers provide servers with additional context about requests, including whether they are same-origin, cross-origin, same-site, or user-initiated, and where/how the requested data is to be used. This allows servers to mitigate against several types of cross-origin attacks (Firefox bug 1695911).

#### Removals

* FTP has now been removed from Firefox (Firefox bug 1574475). This follows deprecation in Firefox 88. Note that web extensions can still register themselves as FTP protocol handlers.
### APIs

#### DOM

* Support was added for the deprecated `WheelEvent` properties: `WheelEvent.wheelDelta`, `WheelEvent.wheelDeltaX`, and `WheelEvent.wheelDeltaY`. This allows Firefox to work with a small subset of pages that were broken by recent compatibility improvements to `WheelEvent` (Firefox bug 1708829).
* The `CanvasRenderingContext2D` interface of the `Canvas API` now provides a `createConicGradient()` method. This returns a `CanvasGradient` much like the existing `linear` and `radial` gradients, but allows a gradient to move around a point defined by coordinates. See Firefox bug 1627014 for more details.
* Support for the `matrix` protocol has been added and can now be passed into the `Navigator.registerProtocolHandler()` method as a valid scheme.
### WebDriver conformance (Marionette)

* Marionette now restricts to a single active WebDriver session (Firefox bug 1691047).
* Added support for the new type of user prompts in Firefox (Firefox bug 1686741)
* Window handles make use of a unique id now, and don't change for process
 swaps as caused by cross-group navigations (Firefox bug 1680479).
* Fixed an inappropriate abortion of the current WebDriver command when a
 new user prompt was opened in a background tab (Firefox bug 1701686).
* Fixed the `WebDriver:GetWindowHandles` command to now correctly
 handle unloaded tabs (Firefox bug 1682062).
* Fixed the `WebDriver:NewSession` command to always return the
 `proxy` capability even if empty (Firefox bug 1710935).

#### Removals

* With the removal of the FTP support in Firefox 90
 the `ftpProxy` capability is no longer evaluated, and when used will
 throw an `invalid argument` error (Firefox bug 1703805).
Changes for add-on developers
-----------------------------

* The `matrix` URI scheme is now supported and can be defined as a protocol within the `protocol_handlers` key in an extensions `manifest.json`
* Starting with this version, the Cache API can be used in the extension pages and worker globals. For more details, see (Firefox bug 1575625).
Older versions
--------------

* 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
* 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 32 for developers - Mozilla

Firefox 32 for developers
=========================

Changes for Web developers
--------------------------

### Developer Tools

Highlights:

* Web Audio Editor
* *Code completion and inline documentation in Scratchpad]*
* User agent styles in the Inspector's Rules view
* Element picker button has moved
* Node dimensions added to the Inspector's infobar
* Full page screenshot button added
* HiDPI images added to the tools
* Nodes that have `display:none` are shown differently in the Inspector

All devtools bugs fixed between Firefox 31 and Firefox 32.

### CSS

* Enabled `mix-blend-mode` by default (Firefox bug 952643).
* Enabled `position:sticky` by default in release builds (only enabled on Nightly and Aurora before) (Firefox bug 916315).
* Implemented `box-decoration-break` and removed the non-standard `-moz-background-inline-policy` (Firefox bug 613659).
* Allowed `flex-grow` and `flex-shrink` to transition between zero and nonzero values, like 'flex-grow: 0.6'(Firefox bug 996945).
### HTML

* Experimentally implemented, behind a pref, `<img>` `srcset` property, To activate it set `dom.image.srcset.enable` to `true` (Firefox bug 870021).
* **id** and **class** are now true global attributes and also apply to XML elements, in a namespace or not (Firefox bug 741295).
### JavaScript

* The following new ECMAScript 2015 built-in methods got implemented:
    + `Array.from()` (Firefox bug 904723),
    + `Array.prototype.copyWithin()` (Firefox bug 934423),
    + `Number.isSafeInteger()` (Firefox bug 1003764).
### Interfaces/APIs/DOM

* The `Navigator.languages` property and `languagechange` event have been implemented (Firefox bug 889335).
* The `Navigator.vibrate()` method behavior has been adapted to the latest specification: too long vibrations are now truncated (Firefox bug 1014581).
* The `KeyboardEvent.getModifierState()` and `MouseEvent.getModifierState()` methods have been extended to support the `Accel` virtual modifier (Firefox bug 1009388).
* The `KeyboardEvent.code` property have been experimentally implemented: it is disabled on release build (Firefox bug 865649).
* Scoped selectors for `Document.querySelector()` and `Document.querySelectorAll()`, for example `querySelector(":scope > li")` have been implemented (Firefox bug 528456).
* The experimental implementation of the `Document.timeline` interface, related to the Web Animation API, has been added (Firefox bug 998246). It is controlled by `layout.web-animations.api.enabled` preference, enabled only on Nightly and Aurora for the moment.
* The Data Store API has been made available to Web Workers (Firefox bug 949325). It still is only activated for certified applications.
* The ServiceWorker `InstallPhaseEvent` and `InstallEvent` interfaces have been implemented (Firefox bug 967264).
* The MSISDN Verification API, only activated for privileged apps, has been added (Firefox bug 988469).
* The Gamepad API is now supported on Firefox for Android (Firefox bug 852935).
* To match the spec and the evolution of the CSS syntax, minor changes have been done to `CSS.escape()`. The identifier now can begins with `'--'` and the second dash must not be escaped. Also vendor identifier are no more escaped. (Firefox bug 1008719)
* To complete our Hit Regions implementation, `MouseEvent.region` has been implemented (Firefox bug 979692).
* The `CanvasRenderingContext2D.drawFocusIfNeeded()` method is now enabled by default (Firefox bug 1004579).
* The `Navigator.doNotTrack` properties now returns `'1'` or `'0'`, reflecting the HTTP value, instead of `'yes'` or `'no'` (Firefox bug 887703).
* XMLHttpRequest.responseURL was implemented (Firefox bug 998076)..
### MathML

* Add support for the `<menclose>` notation `phasorangle`.
### SVG

*No change.*

### WebRTC

* New constraints for WebRTC's `getUserMedia()`, `width`, `height`, and `framerate`, have been added, to limit stream dimensions and frame rate (Firefox bug 907352):

```js
{
  mandatory: {
    width: { min: 640 },
    height: { min: 480 },
  },
  optional: [
    { width: 650 },
    { width: { min: 650 }},
    { frameRate: 60 },
    { width: { max: 800 }},
  ]
}
```

* WebRTC methods which previously used callback functions as input parameters are now also available using JavaScript promises.
### Audio/Video

*No change.*

Security
--------

* Privileged code now gets Xray vision for JavaScript `Object` and `Array` instances.
Changes for add-on and Mozilla developers
-----------------------------------------

Xray vision is now applied to JavaScript objects that are not themselves DOM objects: Xrays for JavaScript objects.

A `getDataDirectory()` method has been added to `Addon` instances. This method returns the preferred location, within the current profile, for add-ons to store data.

### Add-on SDK

#### Highlights

* Added `exclude` option to `PageMod`.
* Added `anonymous` option to `Request`.
* Add-on Debugger now includes a Console and a Scratchpad.

#### Details

GitHub commits made between Firefox 31 and Firefox 32. This will not include any uplifts made after this release entered Aurora.

Bugs fixed between Firefox 31 and Firefox 32. This will not include any uplifts made after this release entered Aurora.

### XPCOM

* The `nsIUDPSocket` interface now provides multicast support through the addition of the new `nsIUDPSocket.multicastLoopback`, `nsIUDPSocket.multicastInterface`, and `nsIUDPSocket.multicastInterfaceAddr` attributes, as well as the `nsIUDPSocket.joinMulticast()` and `nsIUDPSocket.leaveMulticast()` methods.
### Older versions

* Firefox 31 for developers
* Firefox 30 for developers
* Firefox 29 for developers
* Firefox 28 for developers
* Firefox 27 for developers
* Firefox 26 for developers
* Firefox 25 for developers
* Firefox 24 for developers
* Firefox 23 for developers
* Firefox 22 for developers
* Firefox 21 for developers
* Firefox 20 for developers
* Firefox 19 for developers
* Firefox 18 for developers
* Firefox 17 for developers
* Firefox 16 for developers
* Firefox 15 for developers
* Firefox 14 for developers
* Firefox 13 for developers
* Firefox 12 for developers
* Firefox 11 for developers
* Firefox 10 for developers
* Firefox 9 for developers
* Firefox 8 for developers
* Firefox 7 for developers
* Firefox 6 for developers
* Firefox 5 for developers
* Firefox 4 for developers
* Firefox 3.6 for developers
* Firefox 3.5 for developers
* Firefox 3 for developers
* Firefox 2 for developers
* Firefox 1.5 for developers


Firefox 79 for developers - Mozilla

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


Firefox 50 for developers - Mozilla

Firefox 50 for developers
=========================

To test the latest developer features of Firefox, install Firefox Developer EditionFirefox 50 was released on November 15, 2016. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.

Changes for Web developers
--------------------------

### HTML

* The default style of `<bdo>` now sets `unicode-bidi` with the `isolate-override` value (Firefox bug 1249497).
* Setting the `<track>` element's `src` attribute now works correctly (Firefox bug 1281418).
* The `referrerpolicy` attribute on `<area>`, `<a>`, `<img>`, `<iframe>` and `<link>` elements is now available by default (Firefox bug 1223838, Firefox bug 1264165).
### CSS

* Border-radiused corners with dashed and dotted styles are now rendered with the specified style instead of a solid style (Firefox bug 382721).
* The non-standard `:-moz-full-screen-ancestor` pseudo-class selector has been removed (Firefox bug 1199529).
* The `box-sizing``: padding-box` has been removed, since it's no longer a part of the spec and Firefox was the only major browser implementing it (Firefox bug 1166728).
* The three values `isolate`, `isolate-override`, and `plaintext` of the `unicode-bidi` property have been unprefixed (Firefox bug 1141895).
* In quirks mode, the bullet of a list item now inherits the size of the list, like in standards mode (Firefox bug 648331).
* The `:in-range` and `:out-of-range` pseudo-classes have changed behavior to not match disabled or read-only inputs (Firefox bug 1264157).
* The `:any-link` pseudo-class is now unprefixed (Firefox bug 843579).
* The `space` value for `border-image-repeat` has been implemented (Firefox bug 720531).
### JavaScript

* The ES2015 `Symbol.hasInstance` property has been implemented (Firefox bug 1054906).
* The ES2017 `Object.getOwnPropertyDescriptors()` method has been implemented (Firefox bug 1245024).
* The behavior of \W in `RegExp` with unicode and ignoreCase flags is changed to match recent draft spec. Now it doesn't match to K, S, k, s, and KELVIN SIGN (U+212A), and LATIN SMALL LETTER LONG S (U+017F) (Firefox bug 1281739).
### Developer Tools

* The Web Console now understands source maps.
* The Storage Inspector now lets you delete individual items from IndexedDB object stores.
* The Memory tool is enabled by default.
* The Box model view is moved into the Computed view.
* The Web Console now displays stack traces for XHR or Fetch() network requests.

All devtools bugs fixed between Firefox 49 and Firefox 50.

### HTTP

* The experimental (and deprecated) SPDY 3.1 is now disabled by default Firefox bug 1287132.
* Support for `X-Content-Type-Options` has been added (Firefox bug 471020).
* The cookie prefixes `__Host-` and `__Secure-` have been implemented. See `Set-Cookie` and Firefox bug 1283368.
* The `Referrer-Policy` header has been implemented Firefox bug 1264164.
### Security

* The `ping` attribute of `<a>` element now abides by the `connect-src` CSP 1.1 policy directive (Firefox bug 1100181).
* Support for the `sandbox` CSP directive has been added (Firefox bug 671389).
* It's now possible to set a content security policy for workers (Firefox bug 959388).
* The `Navigator.sendBeacon()` method no longer throws an exception if the beacon data couldn't be sent due to a Content Security Policy restriction; instead, it returns `false` as expected (Firefox bug 1234813).
* Support for RC4 encryption was deprecated in Firefox 36 and disabled by default in Firefox 44. The one-year grace period has ended, so Firefox 50 removes all support for RC4 (Google Chrome removed support for RC4 in August 2016). From now on, any time Firefox encounters RC4 encryption, it will report an `SSL_ERROR_NO_CYPHER_OVERLAP` error.
### Networking

* When an error has happened during an asynchronous `XMLHttpRequest`, the `XMLHttpRequest.getAllResponseHeaders()` method now returns an empty string (Firefox bug 1286744).
* Instead of returning a `NetworkError`, asynchronous `XMLHttpRequest` that fails for CORS or other network constraints now raises an `error` that can be caught like any other error (Firefox bug 709991).
* `XMLHttpRequest.getResponseHeader()` and `XMLHttpRequest.getAllResponseHeaders()` now also return empty headers by default. This can be controlled via the preference `network.http.keep_empty_response_headers_as_empty_string` (Firefox bug 918721).
* The `only-if-cached` option has been added to `Request.cache` (Firefox bug 1272436).
### DOM

* The `once` option for `EventTarget.addEventListener()` is now supported (Firefox bug 1287706).
* The interface `NodeList` are now iterable and the methods `forEach()`, `values()`, `NodeList.entries()` and `NodeList.keys()` are now available (Firefox bug 1290636).
* The interface `DOMTokenList` are now iterable and the methods `forEach()`, `values()`, `DOMTokenList.entries()` and `DOMTokenList.keys()` are now available (Firefox bug 1290636).
* The methods `Document.createElement()` and `Document.createElementNS()` now have an optional `options` parameter for creating custom elements (Firefox bug 1276579).
### SVG

* The `allowReorder` attribute has been dropped and the behavior it was setting is now the default for SVG `<switch>` elements (Firefox bug 1279690).
* The `defer` keyword for the `preserveAspectRatio` attribute on SVG `<image>` elements has been removed to follow the latest SVG2 specification (Firefox bug 1280425).
### Drag and Drop API

* The `DataTransfer.items` property has been implemented, allowing access to multiple items being dragged and dropped using the HTML Drag and Drop API. To allow this, the `DataTransferItem` and `DataTransferItemList` interfaces are now supported as well (Firefox bug 906420). This is enabled by default.
* The old, obsolete Firefox specific drag and drop API events `dragdrop` and `draggesture` are no longer supported. Be sure to update any code still using them to use the HTML drag and drop API (Firefox bug 1162050.
### Pointer Lock API

* The Pointer Lock API is now unprefixed (Firefox bug 991899).
* Before Firefox 50, `requestPointerLock()` asked for permission using a doorhanger, and pointer lock would not be enabled until the user granted permission. From Firefox 50, pointer lock is like the fullscreen API: it's granted immediately, but a notification is displayed explaining to the user how to exit (Firefox bug 1273351).
### IndexedDB

* A `close` event is now sent to the `IDBDatabase` object when the corresponding database is unexpectedly closed (Firefox bug 1151017).
### Service Workers

* The `WindowClient.navigate()` method has been implemented. This method lets you open a specified URL into a client window which is being controlled by the service worker (Firefox bug 1218148).
### WebGL

* The `EXT_shader_texture_lod` WebGL extension has been implemented (Firefox bug 1111689).
* The texImage methods have been updated for WebGL 2 to implement PBOs (`PIXEL_UNPACK_BUFFER`) (Firefox bug 1280499).
### WebRTC

* Adding a track to a `MediaStream` now generates the `addtrack` event as described in the specification. The event is of type `MediaStreamTrackEvent` and is fired on the stream to which the track was added. You can use either `MediaStream.addEventListener('addtrack', ...)` or the `onaddtrack` property to handle `"addtrack"` events.
* The `MediaStreamTrack` interface now supports the `ended` event and its event handler.
* Firefox now supports the `MediaStreamTrack.readyState` property, which indicates whether the track is live or permanently ended.
* The `MediaStreamTrack` methods `getConstraints()` and `getSettings()` have been implemented; these let you get the most recently applied set of customized property constraints and the actual values of all of the track's constrainable properties, respectively. The accompanying data types have been documented as well.
* The `RTCDataChannel.stream` property has been removed. This was replaced with `RTCDataChannel.id` in Firefox 24, but was supported for backward compatibility. Please be sure to update your code to use the `id` property if you haven't done so yet.
### Web Audio API

* The `PannerNode` interface now supports the 3D Cartesian space properties for the position (`PannerNode.positionX`, `PannerNode.positionY`, and `PannerNode.positionZ`) and directionality (`PannerNode.orientationX`, `PannerNode.orientationY`, `PannerNode.orientationZ`) of an audio source.
* The interface `IIRFilterNode`, which implements a general infinite impulse response (IIR) filter, has been implemented.
* Throttling in background tabs of timers created by `setInterval()` and `setTimeout()` no longer occurs if a Web Audio API `AudioContext` is actively playing sound. This should help prevent issues with timing-sensitive audio playback (such as music players generating individual notes using timers) in the background (Firefox bug 1181073).
### Audio/Video

* The `AlignSetting` enum (representing possible values for `VTTCue.align`) incorrectly previously included the value `"middle"` instead of `"center"`. This has been corrected (Firefox bug 1276130).
* The non-standard and experimental method `HTMLMediaElement.seekToNextFrame()` now seeks to the next frame in the media asynchronously, rather than synchronously, and returns a `Promise` which resolves once the seek is complete.
* The implementation of `HTMLTrackElement` has been corrected to allow `<track>` elements to load resources even if not in a document (Firefox bug 871747).
### Battery API

* The `Navigator.battery` property, which has been deprecated since Firefox 43, is now obsolete and has been removed. Use the `navigator.getBattery()` method instead to get a battery `Promise`, which will resolve when the `BatteryManager` is available for use; the `BatteryManager` is passed into the fulfillment handler for the promise (Firefox bug 12593355).
### Files and directories

* A subset of the File and Directory Entries API has been implemented, to improve compatibility with sites that were previously only compatible with Google Chrome (Firefox bug 1265767).
    + The asynchronous API interfaces have been implemented, with the caveat that only reading of files is supported; for example, the `FileSystemFileEntry.createWriter()` method is a no-op.
    + These interfaces have been implemented:
        - `FileSystem`
        - `FileSystemEntry` (properties only; the methods have not been implemented)
        - `FileSystemFileEntry` (except for `createWriter()`)
        - `FileSystemDirectoryEntry` (except for `removeRecursively()`)
        - `FileSystemDirectoryReader`
    + `HTMLInputElement.webkitdirectory` as well as the `webkitdirectory` attribute of the `<input>` element have been implemented; this lets you configure a file input to accept directories instead of files (Firefox bug 1258489).
    + `HTMLInputElement.webkitEntries` has been implemented; this returns an array of `FileSystemEntry`-based objects representing the selected items.
    + `File.webkitRelativePath` has been implemented; this contains the path of the file relative to the root of the containing `FileSystemDirectoryEntry` that was among the items in the list returned by `HTMLInputElement.webkitGetEntries()`.
    + See File and Directory Entries API support in Firefox for details about what we do and do not support in this API.
    + These APIs are now enabled by default; some were previously available but only behind a preference (Firefox bug 1288683).
* We've implemented `DataTransferItem.webkitGetAsEntry()` as part of the File and Directory Entries API; this lets you obtain a `FileSystemEntry` representing a dropped file (Firefox bug 1289255). This is enabled by default.
* The `HTMLInputElement.directory` property, part of the Directory Upload API proposal, has been renamed to `allowdirs` (Firefox bug 1288681). This property is hidden behind a preference.
Older versions
--------------

* Firefox 49 for developers
* Firefox 48 for developers
* Firefox 47 for developers
* Firefox 46 for developers
* Firefox 45 for developers
* Firefox 44 for developers
* Firefox 43 for developers
* Firefox 42 for developers
* Firefox 41 for developers
* Firefox 40 for developers
* Firefox 39 for developers
* Firefox 38 for developers
* Firefox 37 for developers
* Firefox 36 for developers
* Firefox 35 for developers
* Firefox 34 for developers
* Firefox 33 for developers
* Firefox 32 for developers
* Firefox 31 for developers
* Firefox 30 for developers
* Firefox 29 for developers
* Firefox 28 for developers
* Firefox 27 for developers
* Firefox 26 for developers
* Firefox 25 for developers
* Firefox 24 for developers
* Firefox 23 for developers
* Firefox 22 for developers
* Firefox 21 for developers
* Firefox 20 for developers
* Firefox 19 for developers


Firefox 61 for developers - Mozilla

Firefox 61 for developers
=========================

This article provides information about the changes in Firefox 61 that will affect developers. Firefox 61 was released on June 26, 2018.

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

### Developer tools

* The new-look Console UI has been enabled by default for the Browser Console & Browser Toolbox (Firefox bug 1362023/Firefox bug 1347127). The old UI has been removed.
* In the Network Monitor, clicking *Open in New Tab* in a `POST` request's context menu correctly resends the request with the expected `POST` parameters (Firefox bug 1407515).
* CSS variables now autocomplete with color swatches, allowing you to see exactly what color value is stored in each variable (Firefox bug 1451211).
    + In addition, hovering over a CSS variable name brings up a tooltip showing what color value is stored in that variable (Firefox bug 1431949).
* The main toolbox's toolbar has been redesigned. Highlights are better responsiveness for narrow and wide viewports with a new overflow dropdown, cleaned up meatball menu, and sortable tabs to let you move up your most used panels (Firefox bug 1226272).
* The Network Monitor's toolbar now includes a dropdown menu providing easier access to the 'Copy All As HAR' and 'Save All As HAR' commands, as well as an 'Import…' option (Firefox bug 1403530).
* The Network Monitor's details pane now includes a Cache tab, which displays information about previously cached resources (Firefox bug 859051).
* The Network Monitor's main toolbar got redesigned to be more responsive on smaller viewports and visually aligned with the Console.
* The Network Monitor's main toolbar now includes a Throttling dropdown which was only available in the Responsive Design Mode before. It allows you to throttle your network speed to emulate various different network speed conditions (Firefox bug 1349559).
* The Browser Console now hides CSS errors by default for readability and performance reasons (Firefox bug 1452143).
* The Browser Console now includes a command to restart the browser. Use `Ctrl` + `Alt` + `R` (Windows, Linux) or `Cmd` + `Alt` + `R` (Mac) to restart the browser with the same tabs open as before the restart.
* DevTools' web extension APIs `devtools.network.onRequestFinished` (Firefox bug 1311171) and `devtools.network.getHAR` (Firefox bug 1311177) got implemented (enabling extensions like har-export-trigger).
* The Firebug theme got removed since the transition of Firebug users into DevTools is complete (Firefox bug 1378108).
### HTML

*No changes.*

### CSS

* CSS parsing has been parallelized (Firefox bug 1346988).
* Support for `font-variation-settings` and `font-optical-sizing` has been enabled by default (Firefox bug 1447163).
* The `grid-gap`, `grid-row-gap`, and `grid-column-gap` properties have been renamed to `gap`, `row-gap`, and `column-gap`, as they are no longer grid-specific (Firefox bug 1398482). See Box alignment; Gaps between boxes for additional details. The old names have been kept as aliases for web compatibility purposes.
* The `flex-basis` `content` value is now supported (Firefox bug 1105111).
* Percentage values of `column-gap` are now supported in CSS multi-column layout (Firefox bug 1398537).
* The CSS `:host` pseudo-class is now supported; this selects a custom element from inside its shadow DOM (Firefox bug 992245).
* `overflow` now accepts two-value syntax (Firefox bug 1453148).
* Flex items that are sized according to their content are now sized using `max-content`, not `fit-content` (Firefox bug 1282821). See the `width` value definitions for more details of these values.
* `font-weight`, `font-stretch` and `font-style` now support additional values as defined by CSS Fonts level 4 (Firefox bug 1436048):
    + `font-weight` now accepts a floating-point value between 1 and 1000 inclusive.
    + `font-stretch` now accepts percentage values.
    + `font-style` now accepts an angle after the `oblique` keyword.
* The `@font-face` descriptor equivalents of the three properties mentioned in the above entry also support the new syntax listed above, and additionally now support a two-value syntax allowing us to specify a range of descriptor values supported by a font-face (Firefox bug 1436061, Firefox bug 1436048).
### SVG

* The `ping`, `rel`, `referrerPolicy`, `relList`, `hreflang`, `type` and `text` properties have been added to the `<a>` element (`SVGAElement`) to be consistent with the HTML `<a>` element (Firefox bug 1451823).
* The `<textPath>` element (`SVGTextPathElement`) now supports the SVG2 `path` and `side` attributes (Firefox bug 1446617 and Firefox bug 1446650).
* The `SVGGeometryElement` interface is now supported for more elements and not just for the `<path>` element (Firefox bug 1325320).
### JavaScript

* The `String.prototype.trimStart()` and `String.prototype.trimEnd()` methods have been implemented (see Firefox bug 1434007). `trimLeft` and `trimRight` remain as aliases for web compatibility reasons.
### APIs

#### New APIs

* The `PerformanceServerTiming` API has been implemented. It surfaces server-side metrics sent via the `Server-Timing` header (Firefox bug 1423495).

#### DOM

* The `anchors`, `applets`, `embeds`, `forms`, `head`, `images`, `links`, `plugins`, and `scripts` properties have been moved from the `HTMLDocument` interface onto `Document` (Firefox bug 1415588).
* `DOMTokenList.replace()` now returns a boolean value to indicate whether the replacement occurred successfully, rather than void (Firefox bug 1444909).
* The Fetch API's `Request.credentials` property now defaults to `"same-origin"` per the latest revision of the specification (Firefox bug 1394399).
* The `Request.destination` property has been implemented (Firefox bug 1402892).
* The `MutationObserver` option dictionary, `MutationObserverInit`, no longer has `false` as the default value of all of its Boolean properties. Now, only `childList` and `subtree` have default values (of `false` still). The other properties have no default values (Firefox bug 973638).
* The Payment Request API method `PaymentRequest.show()` now supports using a `Promise` to let the client side code provide updated payment details prior to activating the payment interface (Firefox bug 1441709).

#### DOM events

*No changes.*

#### Service workers

The "Forget" button, available in Firefox's customization options, now clears service workers and their caches (Firefox bug 1252998).

#### Web Audio, Media and WebRTC

* The `AudioContext()` constructor now accepts an optional `options` parameter. This lets you configure the preferred latency and/or sample rate for the new context.
* Firefox now throws the correct exceptions when instantiation of an `AudioBuffer` fails.

#### WebVR

* The WebVR API has been enabled by default on macOS (Firefox bug 1244242).

#### Canvas and WebGL

*No changes.*

#### CSSOM

* The `CSSStyleRule.selectorText` property is now fully implemented and no longer read-only (Firefox bug 37468).
* The `MediaList` interface implementation is now a little closer to the specification. It is not all the way there yet; for example, stringifier attributes haven't been implemented yet (Firefox bug 1455807).
### HTTP

* The cookie directive `SameSite` has been implemented. See Set-Cookie and HTTP cookies (Firefox bug 795346).
### Networking

* Firefox 61 and later no longer support using the FTP protocol (that is, URLs with the `"ftp://"` scheme) to load subresources from within HTML content. FTP is still supported as a top-level URL entered directly into the URL bar or loaded as a standalone document (Firefox bug 1404744).
### Security

*No changes.*

### Plugins

*No changes.*

### Other

*No changes.*

Removals from the web platform
------------------------------

### Developer tools

`Cmd`/`Ctrl` + `Shift` + `O` no longer shows/hides the DevTools options panel — use `F1` instead (Firefox bug 1409456).

### HTML

*No changes.*

### CSS

`@-moz-document` has been disabled in content pages (Firefox bug 1422245).

### APIs

* The `File` interface's property `lastModifiedDate` has been removed (Firefox bug 1458883).
* The `Node.setUserData` and `Node.getUserData` methods have been removed from the platform completely (Firefox bug 749981).
* The `Element.createShadowRoot()` method has been removed. Use `Element.attachShadow()` instead (Firefox bug 1453789).
* The `MediaStream` overload of the `URL.createObjectURL()` method has been removed (Firefox bug 1454889).
### SVG

* The deprecated (and never properly implemented) `SVGViewElement``.viewTarget` property has been removed (Firefox bug 1455763).
* The following deprecated properties have been removed from `SVGSVGElement` (Firefox bug 1133172):
    + `pixelUnitToMillimeterX`
    + `pixelUnitToMillimeterY`
    + `screenPixelToMillimeterX`
    + `screenPixelToMillimeterY`
* The non-standard `SVGNumber()` constructor has been removed (Firefox bug 1455940).
### Other

*No changes.*

Changes for add-on and Mozilla developers
-----------------------------------------

### WebExtensions

* Autocomplete popups are now themeable (Firefox bug 1417883).
* `tabs.onUpdated` now has a filter template (Firefox bug 1329507).
* The default document colors can now be overridden, using `browserSettings.overrideDocumentColors` (Firefox bug 1417810).
* tabs.query has been optimized with the implementation of some useful search/filter option parameters (Firefox bug 1445316).
* You can now use `permissions.request` from an `about:addons` preferences page (Firefox bug 1382953).
* You can now force web pages to use system fonts instead of the fonts they specify using the `browserSettings.useDocumentFonts` property (Firefox bug 1400805).
* You can now cause browser search autocomplete suggestions to automatically open in a new tab rather than the current tab using the `browserSettings.openUrlbarResultsInNewTabs` property (Firefox bug 1432645).
* You can control whether the user can close a tab using double-click with the `browserSettings.closeTabsByDoubleClick` property (Firefox bug 1435142).
* The `toolbar`, `toolbar_text`, `toolbar_field`, `toolbar_field_text`, and `toolbar_field_border` theme manifest properties now also apply to the findbar (Firefox bug 1418605).
* In `sidebarAction.getPanel()`, `sidebarAction.getTitle()`, `sidebarAction.setPanel()`, `sidebarAction.setTitle()`, and `sidebarAction.setIcon()`, you can now specify a `windowId` so that the features will be set/got only for a specific window (Firefox bug 1390464).
* `tabs.hide()` and `tabs.show()` are now enabled by default (Firefox bug 1455040).
    + The first time an extension hides a tab, the browser will tell the user that the tab is being hidden, show them how they can access the hidden tab, and give them the option of disabling the extension instead (Firefox bug 1438363).
Older versions
--------------

* 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
* Firefox 45 for developers
* Firefox 44 for developers
* Firefox 43 for developers
* Firefox 42 for developers
* Firefox 41 for developers
* Firefox 40 for developers
* Firefox 39 for developers
* Firefox 38 for developers
* Firefox 37 for developers
* Firefox 36 for developers
* Firefox 35 for developers
* Firefox 34 for developers
* Firefox 33 for developers
* Firefox 32 for developers
* Firefox 31 for developers
* Firefox 30 for developers


Firefox 88 for developers - Mozilla

Firefox 88 for developers
=========================

This article provides information about the changes in Firefox 88 that will affect developers. Firefox 88 was released on April 19, 2021.

**Note:** See also Never too late for Firefox 88 on Mozilla Hacks.

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

### Developer Tools

* The toggle button for switching between raw and formatted response views has been implemented (Firefox bug 1693147). For examples, see Network request details > Response tab.
### HTML

*No changes.*

### CSS

* The `:user-valid` and `:user-invalid` pseudo-classes have been implemented (Firefox bug 1694141).
* The `image/image-set()` functional notation is now enabled (Firefox bug 1698133), and was made available for `content` and `cursor` in Firefox bug 1695402 and Firefox bug 1695403.
* The default `monospace` font for MacOS has been changed to Menlo (Firefox bug 1342741).
* The `collapse` value of `visibility` is now implemented for ruby annotations (Firefox bug 1697529).
* The `alternate` value for `ruby-position` has been implemented, and is the new initial value for the property (Firefox bug 1694748).
* The `outline` CSS property has been updated to follow the outline created by `border-radius`. As part of this work the non-standard `-moz-outline-radius` property has been removed. (Firefox bug 315209 and Firefox bug 1694146.)

#### Removals

* The `:-moz-submit-invalid` pseudo-class has been hidden behind a preference, thereby removing it from web content (Firefox bug 1694129).
* Default styling for the non-standard `:-moz-ui-invalid` and `:-moz-ui-valid` has been removed (Firefox bug 1693969).
### JavaScript

* Added support for RegExp match indices (Firefox bug 1519483).
* `Intl.DisplayNames()` and `Intl.ListFormat()` now have stricter checking that `options` passed to the constructor are objects, and will throw an exception if a string or other primitive is used instead (Firefox bug 1696881).
### HTTP

* FTP has been disabled on all releases (preference `network.ftp.enabled` now defaults to `false`), with the intent of removing it altogether in Firefox 90 (Firefox bug 1691890). Complementing this change, the extension setting `browserSettings.ftpProtocolEnabled` has been made read-only, and web extensions can now register themselves as protocol handlers for FTP (Firefox bug 1626365).
### Security

*No changes.*

### APIs

#### DOM

* Code can now use the new static method `AbortSignal.abort()` to return an `AbortSignal` that is already set as `aborted` (Firefox bug 1698468).
### WebDriver conformance (Marionette)

* Marionette will no longer be enabled unless the `--marionette` command line argument or the `MOZ_MARIONETTE` environment variable is specified. As such the `marionette.enabled` preference is no longer used. With this change the state of `navigator.webdriver` now correctly reflects the enabled state of Marionette (Firefox bug 1593343).
* Fixed a bug where pointer actions other than `down` and `up` inappropriately led to buttons being pressed (Firefox bug 1686361).
* Fixed a race condition in `WebDriver:GetCurrentURL` that could have led the command to return the URL of the previously opened page, or even a hang in Marionette (Firefox bug 1664881).
Changes for add-on developers
-----------------------------

* `url` can now be used to limit the properties for which the `tabs.onUpdated` event is triggered (Firefox bug 1680279).
Older versions
--------------

* 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
* 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 95 for developers - Mozilla

Firefox 95 for developers
=========================

 This article provides information about the changes in Firefox 95 that will affect developers.
 Firefox 95 was released on December 7, 2021.

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

### HTML

* The `inputmode` global attribute is now supported on all platforms, instead of just Android.
 This provides a hint to browsers about the type of virtual keyboard that would be best suited to editing a particular element (Firefox bug 1205133).
### CSS

* The CSS `cursor` property is now supported on Firefox for Android,
 making it easier for Android users with a mouse to determine which elements are clickable (Firefox bug 1672609).
### JavaScript

No notable changes

### APIs

* The `Crypto.randomUUID()` function is now supported. This returns a cryptographically strong 36 character fixed-length UUID (Firefox bug 1723674).

#### Media, WebRTC, and Web Audio

* `SpeechSynthesisEvent.elapsedTime` now returns the elapsed time in seconds rather than milliseconds, matching an update to the specification (see Firefox bug 1732498).
### WebDriver conformance (Marionette)

* The `port` used by Marionette is now written to the `MarionetteActivePort` file in the profile directory. This can be used to easily retrieve the `port`, which before was only possible by parsing the `prefs.js` file of the profile. (Firefox bug 1735162).
* `WebDriver:NewSession` now waits for the initial tab to have completed loading to prevent unexpected unloads of the window proxy. (Firefox bug 1736323).
Changes for add-on developers
-----------------------------

* Added `overrideContentColorScheme` in `browserSettings` to provide the ability to control the preference `layout.css.prefers-color-scheme.content-override` and set pages' preferred color scheme (light or dark) independently of the browser theme (Firefox bug 1733461).
* Added `globalPrivacyControl` in `privacy.network` to provide visibility into whether the user has enabled Global Privacy Control inside the browser. (Firefox bug 1670058).
* Added the `"webRequestFilterResponse.serviceWorkerScript"` API permission. This permission provides access to `webRequest.filterResponseData` for requests originated for service worker scripts. This permission can be provided as an optional permission. See `webRequest.filterResponseData` for more information on using these permissions (Firefox bug 1636629).
Older versions
--------------

* 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
* 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 37 for developers - Mozilla

Firefox 37 for developers
=========================

Firefox 37 was released on March 31st, 2015. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.

Changes for Web developers
--------------------------

### Developer Tools

Highlights:

* Security panel in the Network Monitor
* Animations panel in the Page Inspector
* *Support for running a custom build step in WebIDE*

All devtools bugs fixed between Firefox 36 and Firefox 37.

### CSS

* `display: contents` is now activated by default (Firefox bug 1102374 and Firefox bug 1105369).
* CSS multi-column layout is now working on elements with `display: table-caption` (Firefox bug 1109571).
* Relative positioning (`position: relative`) of table cells has been implemented (Firefox bug 35168).
* The quirks mode behavior of `empty-cells` has been removed: it now defaults to `show` like in standard mode (Firefox bug 1020400).
### HTML

* The value `<a rel="noreferrer">` now also works when the link is opened in new tab (Firefox bug 1031264).
* The `'.'` followed by the extension is now allowed in `<input accept>`: when used, a file selector filters with this given extension to be proposed to the user (Firefox bug 826176).
### JavaScript

* The `Map`, `Set`, `WeakMap` and `WeakSet` constructors now ignore null iterable (Firefox bug 1092538).
* The `Map`, `Set`, `WeakMap` and `WeakSet` constructors now supports monkey-patched `prototype.set` or `prototype.add` (Firefox bug 804279).
* The Non-standard `String.prototype.quote()` method has been removed (Firefox bug 1103181).
* The `RegExp.prototype.flags` property has been implemented (Firefox bug 1108467).
* Several `Array` methods have been implemented for typed arrays as well:
    + The `every()` and `some()` methods (Firefox bug 1116390).
    + The `find()` and `findIndex()` methods (Firefox bug 1078975).
    + The `fill()` method (Firefox bug 1113722).
    + The `indexOf()` and `lastIndexOf()` methods (Firefox bug 1107601).
    + The `join()` method (Firefox bug 1115817).
    + The `reduce()` and `reduceRight()` methods (Firefox bug 1117350).
    + The `reverse()` method (Firefox bug 1111516).
    + The `keys()`, `values()`, and `entries()` methods (Firefox bug 1119217).
* The ES2015 `Proxy` enumerate trap for `for...in` statements is implemented (Firefox bug 783829).
* The `configurable` attribute of the `Function.length` property is now `true` per the ES2015 specification (Firefox bug 911142).
* The development of ParallelJS (PJS) has been discontinued due to the limited future prospects, little attention and code complexity. The experimental implementation that had been enabled only on the Nightly channel, including the `Array.prototype.mapPar`, `filterPar` and `reducePar` methods, has been completely removed.
### Interfaces/APIs/DOM

* The `StereoPannerNode` Web Audio node has been implemented (Firefox bug 1100349).
* The `Promise`-based version of `OfflineAudioContext` is now available (Firefox bug 1087944).
* The experimental, not activated by default, implementation of Service Workers progresses: `ServiceWorkerGlobalScope.update()` has been implemented Firefox bug 1065366.
* The IndexedDB API can now be used in Web workers (Firefox bug 701634).
* Our experimental implementation of WebGL 2.0 is going forward!
    + The `WebGL2RenderingContext.getBufferSubData()` method has been implemented to provide access to Buffer Objects (Firefox bug 1048731).
* In keeping with the evolving WebRTC specification, we have deprecated `RTCIceServer.url` in favor of `RTCIceServer.urls`, which lets you specify more than one URL for a given ICE server.
* Some key names of `KeyboardEvent.key` are changed for conforming the latest DOM Level 3 Events spec. See the tables of `KeyboardEvent.key` values in MDN. The green cells are new values. And purple values are still unstable. Be careful if you use them (meta bug for these changes is Firefox bug 900372).
* The `console` interface is now working on `ServiceWorker` and `SharedWorker`. It was previously available but not working (Firefox bug 1058644).
* The value of `KeyboardEvent.key` was incorrectly being reported as `"RomanCharacters"` when the `英数` (`Eisu`) key was pressed. Now it correctly returns `"Eisu"`.
### MathML

*No change.*

### SVG

* SVG2's `<marker orient="auto-start-reverse">` has been implemented (Firefox bug 1107584).
### Audio/Video

*No change.*

Networking
----------

* WebSockets now supports the `permessage` compression method, if the server does support it (Firefox bug 792831).
Security
--------

* The usage of weak protocols or ciphers, like SSL 3.0 and RC4, are now logged in the console, to warn sites that are using it (Firefox bug 1092835).
* The CSP 1.1 `referrer` directive is now supported (Firefox bug 965727).
Changes for add-on and Mozilla developers
-----------------------------------------

### Add-on SDK

*No change.*

### XUL

*No change.*

Older versions
--------------

* Firefox 36 for developers
* Firefox 35 for developers
* Firefox 34 for developers
* Firefox 33 for developers
* Firefox 32 for developers
* Firefox 31 for developers
* Firefox 30 for developers
* Firefox 29 for developers
* Firefox 28 for developers
* Firefox 27 for developers
* Firefox 26 for developers
* Firefox 25 for developers
* Firefox 24 for developers
* Firefox 23 for developers
* Firefox 22 for developers
* Firefox 21 for developers
* Firefox 20 for developers
* Firefox 19 for developers
* Firefox 18 for developers
* Firefox 17 for developers
* Firefox 16 for developers
* Firefox 15 for developers
* Firefox 14 for developers
* Firefox 13 for developers
* Firefox 12 for developers
* Firefox 11 for developers
* Firefox 10 for developers
* Firefox 9 for developers
* Firefox 8 for developers
* Firefox 7 for developers
* Firefox 6 for developers


Firefox 107 for developers - Mozilla

Firefox 107 for developers
==========================

This article provides information about the changes in Firefox 107 that will affect developers. Firefox 107 was released on November 15, 2022.

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

### HTML

No notable changes

### MathML

* Deprecated `lquote` and `rquote` attributes of the `<ms>` MathML element for custom opening and closing quotes are now disabled.
 This behavior is configured via the `mathml.ms_lquote_rquote_attributes.disabled` preference which is set to `true` by default (Firefox bug 1793387).
### CSS

* The `contain-intrinsic-size` shorthand CSS property can now be applied to specify the size of a UI element that is subject to size containment.
 This allows a user agent to determine the size of an element without needing to render its child elements.
 The shorthand properties `contain-intrinsic-width` and `contain-intrinsic-height` are also supported, along with the logical properties `contain-intrinsic-block-size` and `contain-intrinsic-inline-size`.
 (Firefox bug 1597529).
* Color font is now supported via the font-palette property (Firefox bug 1791558). Support has also been added for the @font-palette-values CSS at-rule and its descriptors font-family, base-palette, and override-colors. Together they help to define the color palette (Firefox bug 1791558).
### JavaScript

No notable changes

### APIs

#### Removals

* The non-standard and deprecated `SVGSVGElement.useCurrentView` property has been removed.
 (See Firefox bug 1174097 for more details.)
### WebDriver conformance (WebDriver BiDi, Marionette)

#### WebDriver BiDi

* Added Realm support to `target` argument for `script.evaluate`, `script.callFunction`, and `script.disown` commands (Firefox bug 1779231).
* Added support for JSON serialization of complex objects with container value fields, eg. `WeakMap` and `Uint8Array` (Firefox bug 1770754).
* Added support for the `context` parameter of the `browsingContext.create` command, which allows opening a new tab related to an existing one (Firefox bug 1765619).
* Improved reliability of the `browsingContext.navigate` command when called with the `wait` parameter set to `none` (Firefox bug 1763109).

#### Marionette

* The command `WebDriver:ElementSendKeys` now only sets the caret if the element is not focused yet (Firefox bug 1791736).
* Updated the command `WebDriver:PerformAction` to no longer accept `undefined` as value for various parameters of the `pointerMove` and `wheel` actions (Firefox bug 1781066).
* Updated the Selenium Atoms to match a recent WebDriver specification change (Firefox bug 1771942).
Changes for add-on developers
-----------------------------

### Other

* The `error` property returned when an error occurs in `scripting.executeScript` now represents any value the script throws or rejects with, instead of being just an object with a message property Firefox bug 1740608.
Older versions
--------------

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