Firefox 58 for developers
=========================

This article provides information about the changes in Firefox 58 that will affect developers. Firefox 58 was released on January 23, 2018.

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

### Developer Tools

* The Shape Path Editor has been enabled by default for shapes generated via `clip-path` (Firefox bug 1405339).
* The Network Monitor now has a button to pause/play recording of network traffic (Firefox bug 1005755).
* In the Network Monitor the "Flash" filter button is no longer available, and Flash requests are included in the "Others" filter (Firefox bug 1413540).
* The code for the old Responsive Design Mode (enabled by default pre-Firefox 52) has now been removed from the Devtools (Firefox bug 1305777). See Responsive Design Mode for information on the new tools.
* The option to view MDN docs from the CSS pane of the page inspector has been removed (Firefox bug 1382171) (was disabled since 55, Firefox bug 1352801).
### HTML

*No changes.*

### CSS

* The `font-display` descriptor is now available by default on all platforms (Firefox bug 1317445).
### SVG

*No changes.*

### JavaScript

* The `Promise.prototype.finally()` method has been implemented (Firefox bug 1019116).
* The `Intl.PluralRules` object has been implemented (Firefox bug 1403318).
* The `Intl.NumberFormat.prototype.formatToParts()` method has been implemented (Firefox bug 1403319).
* The `Intl.DateTimeFormat` object now supports the `hourCycle` option and the `hc` language tag (Firefox bug 1386146).
* The optional catch binding proposal has been implemented (Firefox bug 1380881).
### APIs

#### New APIs

* The `PerformanceNavigationTiming` API has been implemented (Firefox bug 1263722).
    + Gecko has also been given a pref that can be used to disable the interface if required — `dom.enable_performance_navigation_timing`, defaulting to `true` (Firefox bug 1403926).

#### DOM

* Errors reported via error objects in certain APIs — for example in the `error` property of `FileReader`, `IDBRequest`, and `IDBTransaction`, and when requests made via certain methods of `RTCPeerConnection` are unsuccessful — are now represented by `DOMException` instances. `DOMError` is now deprecated, having been removed from the DOM4 spec (Firefox bug 1120178).
* The `PerformanceResourceTiming.workerStart` property is now supported (Firefox bug 1191943).
* Budget-based background timeout throttling has been implemented — see Policies in place to aid background page performance for more details (Firefox bug 1377766).

#### DOM events

*No changes.*

#### Media and WebRTC

* The prefixed version of `HTMLMediaElement.srcObject` has been removed; make sure code is updated to use the standard `srcObject` instead of `mozSrcObject` (Firefox bug 1183495).
* Using `MediaStream.addTrack()` to add tracks to a stream obtained using `getUserMedia()`, then attempting to record the resulting stream now works as expected. Previously, only the tracks originally included in the stream returned by `getUserMedia()` were being included in the recorded media (Firefox bug 1296531).
* The WebVTT `VTTRegion` interface has always been created when interpreting WebVTT files, but the resulting regions were not previously utilized. Starting in Firefox 58, they are, if you enable the preference `media.webvtt.regions.enabled` by setting its value to `true`.

#### Canvas and WebGL

* Support for prefixed WebGL extensions has been removed (Firefox bug 1403413):
    + For `MOZ_WEBGL_compressed_texture_atc` use `WEBGL_compressed_texture_atc` instead.
    + For `MOZ_WEBGL_compressed_texture_pvrtc` use `WEBGL_compressed_texture_pvrtc` instead.
    + For `MOZ_WEBGL_compressed_texture_s3tc` use `WEBGL_compressed_texture_s3tc` instead.
    + For `MOZ_WEBGL_depth_texture` use `WEBGL_depth_texture` instead.
    + For `MOZ_WEBGL_lose_context` use `WEBGL_lose_context` instead.
### HTTP

* `frame-ancestors` is no longer ignored in `Content-Security-Policy-Report-Only` (Firefox bug 1380755).
* Firefox now implements a TLS handshake timeout with a default value of 30 seconds. The timeout value can be varied by editing the `network.http.tls-handshake-timeout` pref in about:config (Firefox bug 1393691).
* The `worker-src` CSP directive has been implemented (Firefox bug 1302667).
* The 425: Too Early status code and related `Early-Data` request header are now supported (Firefox bug 1406908).
### Security

*No changes.*

### Plugins

*No changes.*

### Other

* "Add to home screen" is now supported in Firefox for Android, part of the Progressive Web Apps effort (Firefox bug 1212648).
* WebAssembly now has a tiered compiler providing load time optimizations (Firefox bug 1277562), and new streaming APIs — `WebAssembly.compileStreaming()` and `WebAssembly.installStreaming()` Firefox bug 1347644.
Removals from the web platform
------------------------------

### HTML

* You can no longer nest an `<a>` element inside a `<map>` element to create a hotspot region — an `<area>` element needs to be used instead (Firefox bug 1317937).
### CSS

* The following proprietary Mozilla system metric pseudo-classes are no longer available to web content (Firefox bug 1396066):
    + `:-moz-system-metric(images-in-menus)`
    + `:-moz-system-metric(mac-graphite-theme)`
    + `:-moz-system-metric(scrollbar-end-backward)`
    + `:-moz-system-metric(scrollbar-end-forward)`
    + `:-moz-system-metric(scrollbar-start-backward)`
    + `:-moz-system-metric(scrollbar-start-forward)`
    + `:-moz-system-metric(scrollbar-thumb-proportional)`
    + `:-moz-system-metric(touch-enabled)`
    + `:-moz-system-metric(windows-default-theme)`
* The following proprietary Mozilla media features are no longer available to web content (Firefox bug 1396066):
    + `-moz-color-picker-available`
    + `-moz-is-glyph`
    + `-moz-mac-graphite-theme`
    + `-moz-mac-yosemite-theme`
    + `-moz-os-version`
    + `-moz-overlay-scrollbars`
    + `-moz-physical-home-button`
    + `-moz-scrollbar-end-backward`
    + `-moz-scrollbar-end-forward`
    + `-moz-scrollbar-start-backward`
    + `-moz-scrollbar-start-forward`
    + `-moz-scrollbar-thumb-proportional`
    + `-moz-swipe-animation-enabled`
    + `-moz-windows-accent-color-in-titlebar`
    + `-moz-windows-classic`
    + `-moz-windows-compositor`
    + `-moz-windows-default-theme`
    + `-moz-windows-glass`
    + `-moz-windows-theme`
* The proprietary Mozilla `:-moz-styleeditor-transitioning` pseudo-class is no longer available to web content (Firefox bug 1396099).
### JavaScript

* The non-standard `Date.prototype.toLocaleFormat()` method has been removed (Firefox bug 818634).
* The non-standard and deprecated `Object.prototype.watch()` and `unwatch()` methods have been removed and will no longer work (Firefox bug 638054). Consider using setters and getters or proxies instead.
* The legacy Iterator protocol, the `StopIteration` object, the legacy generator functions and the non-standard `Function.prototype.isGenerator()` method have been removed. Use the ES2015 iteration protocols and standards-compliant iterators and generators instead (Firefox bug 1083482, Firefox bug 1413867, Firefox bug 1119777).
* The non-standard Array comprehensions and Generator comprehensions have been removed (Firefox bug 1414340).
### APIs

* The proprietary `moz-blob` and `moz-chunked-text` values of the `XMLHttpRequest.responseType` property were removed completely in Firefox 58 (Firefox bug 1397145, Firefox bug 1397151, Firefox bug 1120171).
* The `dom.abortController.enabled` and `dom.abortController.fetch.enabled` prefs that controlled exposure of the Abort API functionality have now been removed, since those features are now enabled by default (Firefox bug 1402317).
* The proprietary `mozSrcObject` property was removed in Firefox 58 (Firefox bug 1183495). Use the standard `HTMLMediaElement.srcObject` property instead.
### SVG

*No changes.*

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

### WebExtensions

* browserSettings
    + browserSettings.webNotificationsDisabled has been implemented (bug 1364942)
* browsingData
    + browsingData.localStorage now supports deleting localStorage by host (bug 1388428)
* pkcs11 API to manage security devices (Bug 1357391)
* privacy
    + first party isolation can now be toggled though firstPartyIsolate (bug 1409045)
    + resist fingerprinting pref can now be toggle through resistFingerprinting (bug 1397611)
* tabs
    + tabs.discard has been implemented (Bug 1322485)
    + isArticle, isInReaderMode properties of Tab implemented (Bug 1381992)
    + toggleReaderMode() method implemented (Bug 1381992)
    + openInReaderMode option of tabs.created implemented (Bug 1408993)
    + tabs.onUpdated now notifies when entering/exiting reader mode (Bug 1402921)
* theme
    + getCurrent() method to obtain current theme properties (Bug 1349944)
    + onUpdated method to receive WebExtension theme updates (Bug 1349944)
    + colors.bookmark\_text now supported as alias of colors.toolbar\_text (Bug 1412595)
    + colors.toolbar\_top\_separator, colors.toolbar\_bottom\_separator and colors.toolbar\_vertical\_separator implemented (Bug 1347190)
* webRequest
    + webRequest.onBeforeRequest now includes a "frameAncestors" parameter
Older versions
--------------

* 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 29 for developers
* Firefox 28 for developers
* Firefox 27 for developers