To test the latest developer features of Firefox,
install Firefox Developer EditionFirefox 46 was released on April 26, 2016. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.
Changes for Web developers
Developer Tools
{{page('/en-US/docs/Tools/Release_notes', 'Firefox_46')}}
HTML
- When faced with an invalid
type
value, {{HTMLElement("ul")}} no longer maps todecimal
, but now behaves as if notype
value were specified ({{bug(241719)}}). - The attribute
pattern
on {{HTMLElement("input")}} is now treated as {{jsxref("RegExp", "a regular expression", "", 1)}} with"u"
(unicode) flag ({{bug(1227906)}}).
CSS
- Our implementation of CSS Grids has been updated:
- The keywords
auto-fill
andauto-fit
are now allowed in therepeat()
function ({{bug(1118820)}}). - The
true
value has been renamed tounsafe
; this affects the properties {{cssxref("justify-content")}}, {{cssxref("align-content")}}, {{cssxref("justify-self")}}, {{cssxref("align-self")}}, {{cssxref("justify-items")}} and {{cssxref("align-items")}} ({{bug(1230478)}}).
- The keywords
- The properties {{cssxref("text-emphasis")}}, {{cssxref("text-emphasis-style")}}, {{cssxref("text-emphasis-color")}} and {{cssxref("text-emphasis-position")}} are now enabled by defaut ({{bug(1231485)}}).
- Gecko now accepts the
-webkit-
prefixed version of some properties; it requires to switchlayout.css.prefixes.webkit
totrue
({{bug(1213126)}}). - The experimental support of the {{cssxref("@font/font-display", "font-display")}} descriptor (of {{cssxref("@font")}}; it requires to switch
layout.css.font-display.enabled
totrue
({{bug(1157064)}}). - Added support for
@media (-webkit-transform-3d)
as a media query for 3D transform support, if about:config preflayout.css.prefixes.webkit
is set totrue
({{bug(1239799)}}). - {{cssxref("linear-gradient()")}} support for the omission of
0deg
units ({{bug(1239153)}}). - Added {{cssxref("-webkit-filter")}} for web compatibility, behind the preference
layout.css.prefixes.webkit
, defaulting tofalse
({{bug(1236506)}}). - [css-align] "unsafe start" (formerly "true start") should serialize to "start" etc ({{bug(1230398)}}).
JavaScript
- The ES2015 (ES6) {{jsxref("RegExp.prototype.unicode", "RegExp unicode (u) flag", "", 1)}} has been implemented ({{bug(1135377)}}).
- The ES2015 (ES6) block-level functions have been implemented ({{bug(1071646)}}).
- The ES2015 (ES6) {{jsxref("TypedArray.prototype.sort()")}} method has been implemented ({{bug(1121937)}}).
- The ES2015 (ES6) {{jsxref("Functions/arguments/@@iterator", "arguments[@@iterator]")}} has been implemented ({{bug(1067049)}}).
- The experimental EcmaScript Shared Memory API has been implemented. See the {{jsxref("SharedArrayBuffer")}} and {{jsxref("Atomics")}} objects. To use this experimental API set
javascript.options.shared_memory
totrue
in about:config. - Redeclaration of
let
andconst
variables now throws a {{jsxref("SyntaxError")}} instead of a {{jsxref("TypeError")}} as per the ECMAScript specification ({{bug(1198833)}}). - In Strict mode, setting properties on {{Glossary("primitive")}} values will now throw a {{jsxref("TypeError")}} ({{bug(603201)}}).
- The non-standard {{jsxref("WeakMap.prototype.clear()")}} and {{jsxref("WeakSet.prototype.clear()")}} methods have been removed ({{bug(1101817)}}).
- The non-standard, static
RegExp.multiline
property is now deprecated ({{bug(1220457)}}). - Built-in accessor function names now have a "get" or "set" prefix ({{bug(1180290)}}, {{bug(1235656)}}).
- {{jsxref("Operators/Array_comprehensions", "JS1.7/JS1.8 (legacy) array comprehensions", "#Differences_to_the_older_JS1.7JS1.8_comprehensions", 1)}} and {{jsxref("Operators/Generator_comprehensions", "JS1.7/JS1.8 (legacy) generator comprehensions", "#Differences_to_the_older_JS1.7JS1.8_comprehensions", 1)}} have been removed ({{bug(1220564)}}).
Interfaces/APIs/DOM
DOM & HTML DOM
- The deprecated {{domxref("Window.showModalDialog()")}} method is no more available when Firefox runs in multi-process mode (e10s) ({{bug(1234700)}}).
- Added support for {{domxref("Document.elementsFromPoint")}} ({{bug(1164427)}}).
- When a non-existent option of a {{HTMLElement("select")}} element is programmatically selected, instead of being incorrectly left unchanged, the {{htmlattrxref("selectedIndex", "select")}} value is now set to
-1
, the {{htmlattrxref("selectedOptions", "select")}} to an empty {{domxref("HTMLCollection")}}, and {{htmlattrxref("value", "select")}} to an empty string ({{bug(1203668)}}).
Canvas
- The remaining parts of the experimental {{domxref("OffscreenCanvas")}} API has been implemented; new features: {{domxref("OffscreenCanvas.OffscreenCanvas", "OffscreenCanvas()")}} constructor, {{domxref("OffscreenCanvas.toBlob()")}}, and {{domxref("OffscreenCanvas.transferToImageBitmap()")}}. To use this experimental API set
gfx.offscreencanvas.enabled
totrue
in about:config ({{bug(1172796)}}). - The {{domxref("ImageBitmap.close()")}} method is now supported ({{bug(1172796)}}).
- A new {{domxref("ImageBitmapRenderingContext")}} rendering context is now implemented. Use
"bitmaprenderer"
with {{domxref("OffscreenCanvas.getContext()")}} or {{domxref("HTMLCanvasElement.getContext()")}} to obtain this context. ({{bug(1172796)}}).
WebGL
- The {{domxref("WEBGL_compressed_texture_es3")}} extension has been implemented, allowing the use of ETC2 compressed texture formats ({{bug(917505)}}). To use this extension, set the preference
webgl.enable-draft-extensions
totrue
in about:config.
IndexedDB
No change.
Service Workers
- {{domxref("FetchEvent.request")}} is now non-nullable (see {{bug("1238213")}}.)
- {{domxref("Navigator.serviceWorker")}} has now been marked as SameObject (see {{bug("1238205")}}.)
- {{domxref("ExtendableMessageEvent.ports")}} has now been marked as SameObject (see {{bug("1238225")}}.)
Fetch
- {{domxref("Request.mode")}} now has a new value available,
navigate
, for supporting requests generated while navigating between documents (see {{bug("1209081")}}.)
WebRTC
No change.
New APIs
- In SVG, the {{domxref("SVGStyleElement")}} interface now implements the {{domxref("LinkStyle")}} mixin ){{bug(1239128)}}.
Miscellaneous
- The asynchronous {{domxref("FileReader")}} is now available in Web workers ({{bug(901097)}}).
- Our experimental implementation of Web Animations API has been updated:
- {{domxref("AnimationEffectTimingReadOnly")}} and {{domxref("AnimationEffectReadOnly.timing")}} have been implemented ({{bug(1214536)}}).
- The Permissions API has now been enabled by default, for all release versions, not just Nightly as it previously was ({{bug(1221106)}}.)
- Sanitization of WOFF fonts has been loosened a bit ({{bug (1244693)}}).
MathML
No change.
SVG
No change.
Audio/Video
No change.
HTTP
No change.
Networking
- Support of {{rfc(7686)}} has been added: by default there is no attempt to resolve domain with the TLD
.onion
. This is controlled by the preferencenetwork.dns.blockDotOnion
. Add-ons supporting Tor can swap this pref. ({{bug(1228457)}})
Security
No change.
Changes for add-on and Mozilla developers
Interfaces
No change.
XUL
No change.
JavaScript code modules
No change.
XPCOM
No change.
Other
No change.
See also
Older versions
{{Firefox_for_developers(45)}}