files/en-us/mozilla/firefox/releases/57/index.md
This article provides information about the changes in Firefox 57 (a.k.a. Firefox Quantum) that will affect developers. Firefox 57 was released on November 14, 2017.
Firefox 57 has been given the release name Quantum, after the Firefox Quantum engineering project that has aimed to rebuild Firefox from the ground up, bringing with it major performance, stability, and visual improvements. This is the first version of Firefox to ship some of these improvements, so we wanted to mark the occasion.
[!NOTE] To read more about the Quantum features in this release, see Firefox Quantum Developer Edition: the fastest Firefox ever with Photon UI and better tooling by Dan Callahan.
Firefox's new parallel CSS engine — also known as Quantum CSS or Stylo — is enabled by default in Firefox 57 for desktop, with Mobile versions of Firefox to follow later on. Developers shouldn't notice anything significantly different, aside from a whole host of performance improvements. There are however a number of minor functional differences in Stylo, implemented to fix non-standard Gecko behavior that should be eliminated. We will report on such differences on reference pages and in the release notes as appropriate (see Quantum CSS notes).
No changes.
minimal-ui and standalone values of the display-mode media query are now supported (Firefox bug 1369815). See also the Web app manifest display field.grid-row-gap and grid-column-gap properties are no longer reset by the {{CSSxRef("grid")}} shorthand (Firefox bug 1387410).layout.css.clip-path-shapes.enabled preference has been removed (Firefox bug 1399767). This preference allowed disabling the {{CSSxRef("<basic-shape>")}} support in {{CSSxRef("clip-path")}}. This support was shipped in Firefox 54 and can no longer be disabled.Following bugs have been fixed in Quantum:
radial-gradient(circle gold,red) will work in the old Gecko style system, even though they shouldn't because of the missing comma between circle and gold (Firefox bug 1383323).open attribute if they have an {{CSSxRef("animation")}} active on them (Firefox bug 1382124).text-shadow without a color specified (Firefox bug 726550).animation-fill-mode: forwards set) can trigger a transition set on the same element, although only once (see Firefox bug 1192592 and these test cases for more information). In general declarative animations should not trigger transitions.font-size inheritance differently from Quantum CSS, meaning that for some language settings inherited font sizes end up being smaller than expected (see Firefox bug 1391341).domain() or url-prefix() URL matching functions for a {{CSSxRef("@document", "@-moz-document")}} rule. Quantum CSS does not use the same mechanism and it does not consider tokens invalid when they contain brackets or quotes (Firefox bug 1362333).menu), getting the font value fails to return the expected font (it returns nothing). This has been fixed in Quantum. (Firefox bug 1374885).calc(1*2*3) is not parsed successfully; Quantum CSS fixes this (Firefox bug 1379467).calc() is supported everywhere that the spec explains it should be (Firefox bug 1350857). In Gecko it is not.normal or none. As per spec, they shouldn't be (Firefox bug 1387931).background-position: 10px 10px; and background-position: 20px 20px, 30px 30px; (see Firefox bug 1390446).No changes.
for each...in loop, originally part of ECMAScript for XML (E4X), has been removed. Please use {{JSxRef("Statements/for...of", "for...of")}} instead. (Firefox bug 1083470).Object.prototype.watch() and Object.prototype.unwatch() methods are deprecated, will now throw a warning when used, and will be removed soon (Firefox bug 934669).Iterator and StopIteration objects as well as the legacy iteration protocol have been removed (Firefox bug 1098412).files property of the {{DOMxRef("HTMLInputElement")}} interface is now settable (Firefox bug 1384030).HTMLDocument.getSelection() method has been moved to the {{DOMxRef("Document/getSelection","Document")}} interface so it is available to XML documents (Firefox bug 718711).messageerror event is now implemented, and can have code run in response to it firing via event handlers implemented on message targets — see the messageerror event of {{DOMxRef("MessagePort.messageerror_event", "MessagePort")}}, {{DOMxRef("DedicatedWorkerGlobalScope.messageerror_event", "DedicatedWorkerGlobalScope")}}, {{DOMxRef("Worker.messageerror_event", "Worker")}}, {{DOMxRef("BroadcastChannel.messageerror_event", "BroadcastChannel")}}, and {{DOMxRef("Window.messageerror_event", "Window")}} (Firefox bug 1359017).No changes.
Support for messages of arbitrary size (up to 1GiB, although 256kiB is more interoperable) is now supported on {{DOMxRef("RTCDataChannel")}} through use of the end-of-record (EOR) flag on SCTP messages. See Understanding message size limits for more information (Firefox bug 979417).
[!NOTE] Because Firefox doesn't yet support the SCTP Stream Schedulers and User Message Interleaving protocol that provides the ability to interleave SCTP messages from multiple sources, sending large data objects can cause significant delays on all other SCTP traffic. See Firefox bug 1381145 to track progress on implementing and deploying stream schedulers support in Firefox.
The {{DOMxRef("RTCDataChannel.send()")}} method can now throw a TypeError exception if the size of the message you're trying to send is not compatible with the receiving {{Glossary("user agent")}} (this is implemented as part of Firefox bug 979417).
The MediaStream Recording API has been updated so that {{domxref("MediaRecorder/error_event", "error")}} events sent to report problems that occur while recording are now of type {{DOMxRef("MediaRecorderErrorEvent")}} rather than being generic events.
Updated the documentation around {{DOMxRef("OfflineAudioContext")}} since its constructor's inputs can now be specified in an object rather than as a list of parameters (Firefox bug 1388591).
The Web Audio API now properly supports multi-channel output (Firefox bug 1378070).
resource:// URLs no longer leak information (Firefox bug 863246)No changes.
-screenshot flag that allows you to take website screenshots directly from the command line (Firefox bug 1378010).<link rel="preload"> (see Preloading content with rel="preload") has been disabled in Firefox 57 because of various web compatibility issues (e.g., Firefox bug 1405761). An improved version that works for non-cacheable resources is expected to land in Firefox 58.No changes.
[!NOTE] Starting in Firefox 57, all support for XPCOM-based add-ons has been removed. All extensions must be converted into the new browser extensions (also known as WebExtensions) or they will not work.
The following APIs have been added or extended:
bookmarks.BookmarkTreeNodeTypetheme_icons property for light/dark theme iconsonCreatedonRemovedonUpdatedcolorCode and iconUrl in contextualIdentities.ContextualIdentityincognito option in downloads.download()estimatedEndTime property in downloads.DownloadItemFindProxyForURL() can now return an objectruntime.openOptionsPage() support on AndroidloadReplace option in tabs.update()discarded property in tabs.Tab, tabs.onUpdated, and tabs.query()tabs.create() can open "view-source:" URLsopenerTabId property in tabs.Tab, tabs.create(), tabs.query(), and tabs.update()colors.toolbarcolors.toolbar_fieldcolors.toolbar_field_textcolors.toolbar_textwindowId option to theme.update()filterResponseData()proxyInfo property in webRequest eventsallowScriptsToClose option in windows.create()