Firefox 53 for developers
Firefox 53 was released on April 19, 2017. This article lists key changes that are useful not only for web developers but also for Firefox and Gecko developers, as well as add-on developers.
Changes for Web developers
Developer Tools
- Avoid scrolling latency on highlighters given by APZ (Firefox bug 1312103).
- Added option to copy the full CSS path of an element (Firefox bug 1323700).
- Devtools support for css-color-4 (Firefox bug 1310681).
- Markup view: add a visual hint between opening and closing tags of a collapsed node (Firefox bug 1323193).
CSS
New features
- The
mask-*
longhand properties (see CSS Masks) are all supported and available by default (see Firefox bug 1251161). - Added
caret-color
property (Firefox bug 1063162). - Implemented the
place-items
/place-self
/place-content
shorthands (Firefox bug 1319958). - Added
flow-root
value todisplay
property (Firefox bug 1322191). -moz-tab-size
now accepts<length>
values (Firefox bug 943918), and is now animatable (Firefox bug 1308110).mask-mode
:luminance doesn't work on gradient masks (Firefox bug 1346265).- [css-grid] FR Unit in
grid-template-rows
not filling viewport (Firefox bug 1346699). - flex items aren't sorted according to "order", if they're separated by an abspos sibling (Firefox bug 1345873).
Other changes
- Enable mask longhands on SVG elements (Firefox bug 1319667).
- [css-grid] Fixed:
align-self
/justify-self:stretch
/normal
doesn't work on<table>
grid items (Firefox bug 1316051). - Fixed:
clip-path: circle()
with large reference box and percentage radius does not render correctly (Firefox bug 1324713. - When applying a
text-transform
value ofuppercase
to Greek text, the accent on the disjunctive eta (ή) is no longer removed (see Firefox bug 1322989). - The availability of the
contents
value ofdisplay
was controlled through thelayout.css.display-contents.enabled
pref. In Firefox 53, this pref has been removed altogether, so the value will always be available and can no longer be disabled (Firefox bug 1295788).
JavaScript
- ECMAScript 2015 semantics for the
Function.name
properties have been implemented. This includes inferred names on anonymous functions (var foo = function() {}
) (Firefox bug 883377). - ECMAScript 2015 semantics for closing iterators have been implemented. This affects the
for...of
loop, for example (Firefox bug 1147371). - The Template Literal Revision proposal that lifts escape sequence restrictions on tagged template literals has been implemented (Firefox bug 1317375).
- The static
length
property ofTypedArray
objects was changed from 3 to 0 as per ES2016 (Firefox bug 1317306). SharedArrayBuffer
can now be used inDataView
objects (Firefox bug 1246597).- In earlier versions of the specification,
SharedArrayBuffer
objects needed to be explicitly transferred during structured cloning. In the new specification, they aren't transferable objects anymore and thus must not be in the transfer list. The new behavior used to present a console warning only, but will now throw an error (Firefox bug 1302037). - The
ArrayBuffer
length is now limited toNumber.MAX_SAFE_INTEGER
(>= 2 ** 53) (Firefox bug 1255128). Error
and other native error object prototypes likeRangeError
etc. are now ordinary objects instead of proper Error objects. (In particular,Object.prototype.toString.call(Error.prototype)
is now"[object Object]"
instead of"[object Error]"
.) (Firefox bug 1213341).
Events
- CSS Transitions: The
transitionstart
,transitionrun
, andtransitioncancel
events have been implemented (see Firefox bug 1264125 and Firefox bug 1287983). - The
CompositionEvent
constructor has been implemented (see Firefox bug 1002256). - The
MouseEvent.x
andMouseEvent.y
aliases ofMouseEvent.clientX
/MouseEvent.clientY
have been implemented (see Firefox bug 424390). - The
auxclick
event and corresponding event handler have been implemented (see Firefox bug 1304044). - The
transitioncancel
event is now fired after a transition is cancelled.
DOM
- The
pathname
andsearch
properties of links (like for<a>
and<link>
elements' interfaces previously returned the wrong parts of the URL. For example, for a URL ofhttp://z.com/x?a=true&b=false
,pathname
would return "/x?a=true&b=false"
andsearch
would return "", rather than "/x
" and "?a=true&b=false"
respectively. This has now been fixed (Firefox bug 1310483). - The
URLSearchParams()
constructor now accepts a string or sequence of strings as an init object (Firefox bug 1330678). - The
Selection.setBaseAndExtent()
method of the Selection API is now implemented (see Firefox bug 1321623). - The "fakepath" addition to
file
type<input>
values
has been implemented in Gecko, giving it parity with other browsers (see Firefox bug 1274596). Node.getRootNode()
has been implemented, replacing the deprecatedNode.rootNode
property (Firefox bug 1269155).- Own properties of
Plugin
andPluginArray
objects are no longer enumerable (Firefox bug 1270366). - Named properties of
MimeTypeArray
objects are no longer enumerable (Firefox bug 1270364). - The Permissions API now has a new permission name available —
persistent-storage
— as used when making aPermissions.query()
(see Firefox bug 1270038). This allows an origin to use a persistent box (i.e., persistent storage) for its storage, as per the Storage API. - The
Performance.timeOrigin
property has been implemented (Firefox bug 1313420).
Workers and service workers
- The Network Information API is now available in workers (see Firefox bug 1323172).
- Server-sent events can now be used in workers (see Firefox bug 1267903).
ExtendableEvent.waitUntil()
can now be called asynchronously (see Firefox bug 1263304).
WebGL
- The
WEBGL_compressed_texture_astc
WebGL extension has been implemented (Firefox bug 1250077). - The
WEBGL_debug_renderer_info
WebGL extension is now enabled by default (Firefox bug 1336645).
Audio, video, and media
General
- Beginning in Firefox 53 for Android, decoding of media is handled out-of-process for improved performance on multi-core systems (Firefox bug 1333323).
Media elements
- The
HTMLMediaElement.play()
method, used to begin playback of media in any media element, now returns aPromise
which is fulfilled when playback begins and is rejected if an error occurs (Firefox bug 1244768).
Web Audio API
- The
AudioScheduledSourceNode
interface has been added and theAudioBufferSourceNode
,ConstantSourceNode
, andOscillatorNode
interfaces are now based on it (Firefox bug 1324568). - All the different audio node types have had constructors added to them (Firefox bug 1322883).
WebRTC
- The
RTCPeerConnection
methodscreateOffer()
andcreateAnswer()
now return aPromise
that returns an object conforming to theRTCSessionDescriptionInit
dictionary instead of returning anRTCSessionDescription
directly. Existing code will continue to work, but new code can be written more simply. - Similarly, the
RTCPeerConnection
methodssetLocalDescription()
andsetRemoteDescription()
now accept as input an object conforming to the dictionaryRTCSessionDescriptionInit
dictionary. Existing code continues to work, but can be simplified. RTCPeerConnection.addIceCandidate()
now accepts as input an initialization object. This is compatible with existing code but allows new code to be written slightly more simply when used in tandem with the changes listed above (Firefox bug 1263312).- DTMF support is now enabled by default using
RTCDTMFSender
. See Using DTMF with WebRTC for more information on how this works.
HTTP/Networking
- Gecko now has a pref available in
about:config
to allow users to set their defaultReferrer-Policy
—network.http.referer.userControlPolicy
(Firefox bug 1304623). Possible values are:- 0 —
no-referrer
- 1 —
same-origin
- 2 —
strict-origin-when-cross-origin
- 3 —
no-referrer-when-downgrade
(the default)
- 0 —
- Support for Next Protocol Negotiation (NPN) has been removed in favor of Application-Layer Protocol Negotiation (ALPN) — see Firefox bug 1248198.
- The
Large-Allocation
HTTP header is now available by default, and no longer hidden behind a pref (Firefox bug 1331083).
SVG
- Partly implemented
SVGGeometryElement
interface (Firefox bug 1239100).
Removals from the web platform
HTML/XML
- The
dom.details_element.enabled
pref — which controlled enabling/disabling<details>
and<summary>
element support in Firefox — has now been removed fromabout:config
. These elements (first enabled by default in Firefox 49) can no longer be disabled. See Firefox bug 1271549. - The
mozapp
attribute of the<iframe>
element /HTMLIFrameElement
interface has been removed — this was used to enable a Firefox OS app to be embedded in a mozilla-prefixed Browser API<iframe>
(Firefox bug 1310845). - The
HTMLIFrameElement.setInputMethodActive()
method andInputMethod
interface (used to set and manage IMEs on Firefox OS apps) has been removed (Firefox bug 1313169).
CSS
- Removed
-moz
prefixed variant of:dir()
pseudo-class (Firefox bug 1270406). - The
-moz
prefixed version oftext-align-last
got removed (Firefox bug 1276808). - Removed
-moz
prefixed variant ofcalc()
method (Firefox bug 1331296). - The proprietary
-moz-samplesize
media fragment (added to aid in delivery of downsampled images to low memory Firefox OS devices; see Firefox bug 854795) has been removed (Firefox bug 1311246).
JavaScript
- The non-standard
ArrayBuffer.slice()
method has been removed (but the standardized versionArrayBuffer.prototype.slice()
is kept, see Firefox bug 1313112).
APIs
- The Wi-Fi information API, Speaker Manager API, and Tethering API, and Settings API] have been removed from the platform (see Firefox bug 1313788, Firefox bug 1317853, Firefox bug 1313789, and Firefox bug 1313155 respectively).
Other
- The
legacycaller
has been removed from theHTMLEmbedElement
andHTMLObjectElement
interfaces (Firefox bug 909656).
Changes for add-on and Mozilla developers
WebExtensions
New APIs:
Enhanced APIs:
storage.sync
page_action
,browser_action
,password
,tab
context types incontextMenus
webRequest.onBeforeRequest
now supportsrequestBody
tabs.insertCSS
now supportscssOrigin
, enabling you to insert user style sheets.
JavaScript code modules
- The asynchronous AddonManager APIs now support
Promises
as well as callbacks (Firefox bug 987512.
Older versions
- 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
- Firefox 26 for developers
- Firefox 25 for developers
- Firefox 24 for developers
- Firefox 23 for developers
- Firefox 22 for developers