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