Firefox 60 for developers
This article provides information about the changes in Firefox 60 that will affect developers. Firefox 60 was 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
Developer tools
- 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
toCtrl
+Up
/Down
on Linux and Windows, to avoid clashes with default OS-level shortcuts (see Firefox bug 1413314). - Also in the CSS Pane rules view, CSS variable names will now auto-complete (Firefox 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 (Firefox bug 1428816).
- The
view_source.tab
preference 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 (Firefox bug 1418403).
HTML
Pressing the Enter key in designMode
and 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 Firefox bug 1430551).
CSS
- The
align-content
,align-items
,align-self
,justify-content
, andplace-content
property values have been updated as per the latest CSS Box Alignment Module Level 3 spec (Firefox bug 1430817). - The
paint-order
property has been implemented (Firefox bug 1426146).
SVG
No changes.
JavaScript
- ECMAScript 2015 modules have been enabled by default in (Firefox bug 1438139). See ES6 In Depth: Modules and ES modules: A cartoon deep dive for more information, or consult MDN reference docs:
<script src="main.js" type="module">
and<script nomodule src="fallback.js">
import
andexport
statements.
- The
Array.prototype.values()
method has been added again (Firefox bug 1420101). Make sure your code doesn't have any custom implementation of this method.
APIs
New APIs
- The Web Authentication API has been enabled in (Firefox bug 1432542).
DOM
- In the Web Authentication API, the
MakePublicKeyCredentialOptions
dictionary object has been renamedPublicKeyCredentialCreationOptions
; this change has been made in Firefox (Firefox bug 1436473). - The
dom.workers.enabled
pref has been removed, meaning workers can no longer be disabled since (Firefox bug 1434934). - The
body
property is now implemented on theDocument
interface, rather than theHTMLDocument
interface (Firefox bug 1276438). PerformanceResourceTiming
is now available in workers (Firefox bug 1425458).- The
PerformanceObserver.takeRecords()
method has been implemented (Firefox bug 1436692). - The
KeyboardEvent.keyCode
attribute 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 useKeyboardEvent.keyCode
in new applications — useKeyboardEvent.key
orKeyboardEvent.code
instead. - The
Animation.updatePlaybackRate()
method has been implemented (Firefox bug 1436659). - New rules have been included for determining keyCode values of punctuation keys (Firefox bug 1036008).
- The Gecko-only options object
storage
option of theIDBFactory.open()
method (see Experimental Gecko options object) has been deprecated (Firefox bug 1442560). - Promises can now be used within IndexedDB code (Firefox bug 1193394).
DOM events
No changes.
Service workers
No changes.
Media and WebRTC
- When recording or sharing media obtained using
getUserMedia()
, muting the camera by setting the corresponding track'sMediaStreamTrack.enabled
property tofalse
now turns off the camera's "in use" indicator light, to help the user more easily see that the camera is not in use (Firefox bug 1299515). See User privacy for more details. See also this blog post. - Removing a track from an
RTCPeerConnection
usingremoveTrack()
no longer removes the track'sRTCRtpSender
from the peer connection's list of senders as reported bygetSenders()
(Firefox bug 1290949). - The
RTCRtpContributingSource
andRTCRtpSynchronizationSource
objects' timestamps were previously being reported based on values returned byDate.getTime()
. In Firefox 60, these have been fixed to correctly use the Performance Timing API instead (Firefox bug 1433576). - As per spec, the
ConvolverNode()
constructor now throws aNotSupportedError
DOMException
if the referencedAudioBuffer
does not have 1, 2, or 4 channels (Firefox bug 1443228). - The obsolete
RTCPeerConnection
event handlerRTCPeerConnection.onremovestream
has been removed; by now you should be usingremovetrack
events instead (Firefox bug 1442385). - The primary name for
RTCDataChannel
is now in factRTCDataChannel
, instead of being an alias forDataChannel
. The nameDataChannel
is no longer supported (Firefox bug 1173851).
Canvas and WebGL
- If the
privacy.resistFingerprinting
preference is set totrue
, theWEBGL_debug_renderer_info
WebGL extension will be disabled from now on (Firefox bug 1337157).
CSSOM
No changes.
HTTP
SameSite
cookies are now supported (Firefox bug 795346). SeeSet-Cookie
for more information.
Security
The X-Content-Type-Options
header, when set to no-sniff
, now follows the specification for JavaScript MIME types. In particular, text/json
and application/json
are no longer valid values (Firefox bug 1431095).
Plugins
No changes.
Other
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 (Firefox bug 1363284).
Removals from the web platform
HTML
No changes.
CSS
- The proprietary
-moz-user-input
property'senabled
anddisabled
values are no longer available (Firefox bug 1405087). - The proprietary
-moz-border-top-colors
,-moz-border-right-colors
,-moz-border-bottom-colors
, and-moz-border-left-colors
properties have been removed from the platform completely (Firefox bug 1429723).
JavaScript
The non-standard expression closure syntax has been removed (Firefox bug 1426519).
APIs
No changes.
SVG
No changes.
Other
No changes.
Changes for add-on and Mozilla developers
WebExtensions
Theme API:
- headerURL is now optional
- When creating a browser theme, any
text-shadow
applied to the header text is removed if noheaderURL
is specified (see Firefox bug 1404688). - New properties are supported:
- tab_line
- tab_selected
- popup
- popup_border
- popup_text
- tab_loading
- icons
- icons_attention
- frame_inactive
- button_background_active
- button_background_hover
Older versions
- 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