Firefox 54 for developers

There were scripting errors on this page. While those are being addressed by site editors, you can view partial content below.

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 the performance analysis view ({{ bug }}).
  • The network request headers view now links to the related documentation on MDN ({{ bug }}).


  • clip-path now supports basic shapes ({{ bug }}).
  • 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 ({{ bug }}).
  • <input> elements of types checkbox and radio with -moz-appearance: none; set on them are now non-replaced elements, for compatibility with other browsers ({{ bug }}).
  • Previously, an element styled with display: inline-block with a child element of type HTMLInputElement styled with display:block had a wrong baseline ({{ bug }}). 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 {{ bug }} for more information. Note that this is still disabled in Linux due to lack of contrast (see {{ bug }} for progress on this).
  • CSS Animations now send the animationcancel event as expected when an animation aborts prematurely ({{ bug }}).
  • 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 ({{ bug }} 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 sylesheet ({{ bug }}).
  • [css-grid] Intristic content with overflow:auto overlaps in grid ({{ bug }}).
  • [css-grid] Transferred min-size contribution of percentage size grid item with an intrinsic ratio ({{ bug }}).


  • \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 ({{ bug }}).
  • The DataView constructor now throws a RangeError if the byteOffset parameter is out of Number.MAX_SAFE_INTEGER (>= 2 ** 53) ({{ bug }}).
  • The Date.UTC() method has been updated to conform to ECMAScript 2017 when fewer than two arguments are provided ({{ bug }}).
  • The Function.prototype.toString() method has been updated to match the latest proposed specification ({{ bug }}).


  • The URL.toJSON() method has been implemented ({{ bug }}).
  • The URLSearchParams() constructor now accepts a record containing USVStrings as an init object ({{ bug }}).
  • 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) ({{ bug }}).
  • The dom.workers.latestJSVersion preference, which was mainly implemented to work around problems using let in workers (due to {{ bug }}, which has since been fixed) has been removed (see {{ bug }}).
  • The event.timeStamp property now returns a high-resolution monotonic time (DOMHighResTimeStamp) instead of an epoch time (DOMTimeStamp).

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 {{ bug }}).
  • The WindowOrWorkerGlobalScope.origin property has been implemented (see {{ bug }}).
  • The Client.type property has been implemented (see {{ bug }}).
  • Clients.matchAll() now returns Client objects in most recently focused order (see {{ bug }}).
  • Some changes have been made to the observed behaviour 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.



  • 5.1 surround sound playback is now enabled by default on Windows, macOS, and Linux ({{ bug }}, {{ bug }} , and {{ bug }}).

Media Capture and Streams API

Web Audio API

Encrypted MediaExtensions API

  • The MediaKeySession.keySystem string has been removed from the specification, and as such we've taken it out of Firefox 54 ({{ bug }}).
  • Support has been added for the VP9 codec in encrypted streams using Clear Key and Widevine ({{ bug }}).
  • 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.


  • 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 ({{ bug }}). This blog post explains the feature in more details.


Removals from the web platform


  • Removed the -moz prefixed versions of isolate, isolate-override, and plaintext values for the unicode-bidi property ({{ bug }}).


  • 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 {{ bug }} for further information.

See also

Older versions

Document Tags and Contributors

Last updated by: ExE-Boss,