This article provides information about the changes in Firefox 60 that will affect developers. Firefox 60 is released on May 9, 2018.
Stylo comes to Firefox for Android in 60
Firefox's new parallel CSS engine — also known as Quantum CSS or Stylo — which was first enabled by default in Firefox 57 for desktop, has now been enabled in Firefox for Android.
Changes for web developers
- In the CSS Pane rules view (see Examine and edit CSS), the keyboard shortcuts for precise value increments (increase/decrease by 0.1) have changed from Alt + Up/Down to Ctrl + Up/Down on Linux and Windows, to avoid clashes with default OS-level shortcuts (see bug 1413314).
- Also in the CSS Pane rules view, CSS variable names will now auto-complete (bug 1422635). If you enter
var(into a property value and then type a dash (
-), any variables you have declared in your CSS will then appear in an autocomplete list.
- In Responsive Design Mode, a Reload when... dropdown has been added to allow users to enable/disable automatic page reloads when touch simulation is toggled, or simulated user agent is changed. See Controlling page reload behavior for more details (bug 1428816).
view_source.tabpreference has been removed so you can no longer toggle View Source mode between appearing in a new tab or new window. Page sources will always appear in new tabs from now on (bug 1418403).
Pressing the Enter key in
contenteditable now inserts
<div> elements when the caret is in an inline element or text node which is a child of a block level editing host — instead of inserting
<br> elements like it used to. If you want to use the old behavior on your app, you can do it with
document.execCommand(). See Differences in markup generation for more details (also see bug 1430551).
place-contentproperty values have been updated as per the latest CSS Box Alignment Module Level 3 spec (bug 1430817).
paint-orderproperty has been implemented (bug 1426146).
- ECMAScript 2015 modules have been enabled by default (bug 1438139). See ES6 In Depth: Modules and ES modules: A cartoon deep dive for more information, or consult MDN reference docs:
Array.prototype.values()method has been added again (bug 1420101). It was disabled due to compatibilty issues in earlier versions. Make sure your code doesn't have any custom implementation of this method.
- The Web Authentication API has been enabled (bug 1432542).
- The WebVR API has been enabled by default on macOS (bug 1438044).
- In the Web Authentication API, the
MakePublicKeyCredentialOptionsdictionary object has been renamed
PublicKeyCredentialCreationOptions; this change has been made in Firefox (bug 1436473).
dom.workers.enabledpref has been removed, meaning workers can no longer be disabled (bug 1434934).
bodyproperty is now implemented on the
Documentinterface, rather than the
HTMLDocumentinterface (bug 1276438).
PerformanceResourceTimingis now available in workers (bug 1425458).
PerformanceObserver.takeRecords()method has been implemented (bug 1436692).
KeyboardEvent.keyCodeattribute of punctuation key becomes non-zero even if the active keyboard layout doesn't produce ASCII characters. See these notes for more detail. Please do not use
KeyboardEvent.keyCodein new applications — use
Animation.updatePlaybackRate()method has been implemented (bug 1436659).
- New rules have been included for determining keyCode values of punctuation keys (bug 1036008).
- The Gecko-only options object
storageoption of the
IDBFactory.open()method (see Experimental Gecko options object) has been deprecated (bug 1442560).
- Promises can now be used within IndexedDB code (bug 1193394).
Media and WebRTC
- When recording or sharing media obtained using
getUserMedia(), muting the camera by setting the corresponding track's
falsenow turns off the camera's "in use" indicator light, to help the user more easily see that the camera is not in use (bug 1299515). See User privacy in MediaDevices.getUserMedia() for more details. See also this blog post.
- Removing a track from an
removeTrack()no longer removes the track's
RTCRtpSenderfrom the peer connection's list of senders as reported by
RTCRtpSynchronizationSourceobjects' timestamps were previously being reported based on values returned by
Date.getTime(). In Firefox 60, these have been fixed to correctly use the Performance Timing API instead (bug 1433576).
- As per spec, the
ConvolverNode()constructor now throws a
NotSupportedErrorif the referenced
AudioBufferdoes not have 1, 2, or 4 channels (bug 1443228).
- The obsolete
RTCPeerConnection.onremovestreamhas been removed; by now you should be using
removetrackevents instead (bug 1442385).
- The primary name for
RTCDataChannelis now in fact
RTCDataChannel, instead of being an alias for
DataChannel. The name
DataChannelis no longer supported (bug 1173851).
Canvas and WebGL
- If the
privacy.resistFingerprintingpreference is set to
WEBGL_debug_renderer_infoWebGL extension will be disabled from now on (bug 1337157).
X-Content-Type-Options header, when set to
application/json are no longer valid values (bug 1431095).
Fetches that include credentials can now share connections with fetches that don't include credentials. For example, if the same origin requests some web fonts as well as some credentialed user data from the same CDN, both could share a connection, potentially leading to a quicker turnaround (bug 1363284).
Removals from the web platform
- The proprietary
disabledvalues are no longer available (bug 1405087).
- The proprietary
-moz-border-left-colorsproperties have been removed from the platform completely (bug 1429723).
deviceproximityevents (see also
DeviceProximityEvent) have been disabled by default behind the
device.sensors.proximity.enabledpreference (bug 1359076).
devicelightevent (see also
DeviceLightEvent) has been disabled by default behind the
device.sensors.ambientLight.enabledpreference (bug 1359076).
Changes for add-on and Mozilla developers
- headerURL is now optional
- When creating a browser theme, any
text-shadowapplied to the header text is removed if no
headerURLis specified (see bug 1404688).
- New properties are supported:
- 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
- Firefox 29 for developers