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