To test the latest developer features of Firefox,
install Firefox Developer Edition Firefox 45 was released on March 8, 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
Highlights:
- Full-text search in the Page Inspector
- Heap snapshot diffing in the Memory tool
- DomContentLoaded and load events shown in the Network Monitor
- Animation inspector improvements
All devtools bugs fixed between Firefox 44 and Firefox 45.
HTML
- Content Security Policy can now be set directly on the
<meta>
element (bug 663570). - The attribute
referrer
has been renamedreferrerpolicy
on<img>
,<area>
,<a>
, and<iframe>
(bug 1187357). - Changes in the viewport, or a resize, now trigger the reselection of responsive images for
<img srcset>
(bug 1166138).
CSS
word-spacing
now allows percentage values (bug 1038663).- Our implementation of CSS Grids has been improved and is no more considered experimental; it is now activated by default in nightly and developer edition, but not for beta and release (bug 1000592):
- Gutters, that is the
grid-column-gap
,grid-row-gap
, andgrid-gap
properties are now supported (bug 1176792). - The implied minimum size of grid Items, that is the special
min-width
andmin-height
auto
behavior has been implemented (bug 1176775). align-self
andjustify-self
are now supported on grid layouts (bug 1151213).align-content
andjustify-content
are now supported on grid layouts (bug 1151214).- Resolved value of grid-template-columns,grid-template-rows in px units (bug 978212).
- The related feature
display
: contents has been supported since Firefox 37
- Gutters, that is the
- Implement full support for CSS Box Alignment for CSS Grid, support the missing values:
start,
end,
self-start,
self-end,
left,
right,last-baseline,space-evenly
(bug 1176782). CSS Box Alignment currently applies only to CSS Flexbox and CSS Grid. - [css-grid][css-flexbox] Implement grid/flex layout for <fieldset> (bug 1230207).
- The
inline-start
andinline-end
values have been added tofloat
andclear
(bug 1122918). They are enabled by default on Nightly and Aurora (Dev edition), as well as on Firefox OS; to activate it on a release or beta version, you need to flip thelayout.css.float-logical-values.enabled
totrue
. - The
text-emphasis
,text-emphasis-style
,text-emphasis-color
, andtext-emphasis-position
have been implemented; they are disabled by default (setlayout.css.text-emphasis.enabled
to true to activate them (bug 1040668). - Several
-webkit
prefixed properties and values have been added for web compatibility, behind the preferencelayout.css.prefixes.webkit
, defaulting tofalse
:- Added
-webkit-backface-visibility
,-webkit-perspective
and-webkit-perspective-origin
for web compatibility, behind the preferencelayout.css.prefixes.webkit
, defaulting tofalse
(bug 1179444).
- Added
JavaScript
- ES2015 (ES6) Classes are now enabled by default (bug 1197932).
- Expression closures are deprecated and will now present a warning in the console (bug 995610).
String.prototype.replace
does not restore RegExp static properties after executing function parameter anymore (bug 1226936).Math.random()
has been updated to the better XorShift128+ algorithm (bug 322529).
Interfaces/APIs/DOM
DOM & HTML DOM
- For compatibility, the non-standard property
Node.innerText
has been implemented (bug 264412). - The
HTMLImageElement.srcset
attribute now reacts to resize/viewport changes (bug 1166138).
WebGL
Our implementation of WebGL 2 has been extended:
- Support of programs and shaders has been added (bug 1048743).
- Support for uniforms and attributes has been added (bug 1048745).
- Framebuffer objects have been implemented (bug 1048732).
- Renderbuffer objects have been implemented (bug 1048733).
IndexedDB
No change.
Service Workers
Clients.get()
andFetchEvent.clientId
have been implemented (bug 1222464.)Clients.openWindow()
has been implemented (bug 1172870.)- The options object that can be passed as a parameter when invoking
Clients.matchAll()
can now include anincludeUncontrolled
property. This is aBoolean
— if set totrue
, the matching operation will return all service worker clients who share the same origin as the current service worker. Otherwise, it returns only the service worker clients controlled by the current service worker. The default isfalse
.
WebRTC
No change.
New APIs
No change.
Miscellaneous
- Web Speech Synthesis API has been implemented on Firefox Desktop (bug 1003439).
- The
Window.onstorage
event handler property has been added. - The interface
ComputedTiming
have been added to our experimental implementation of Web Animations API (bug 1108055). - The
Document.onselectionchange
event handler property has been added (bug 1231193). - After removing a video track from a media stream by calling
MediaStream.removeTrack()
you can nowadd another video track later usingMediaStream.addTrack()
and have it played (bug 1223696).
MathML
No change.
SVG
- SVG stroke hit-testing is buggy when cairo is the Moz2D backend (bug 676001).
- Unable to interact with elements who have large transform / translate values (bug 1217012).
Audio/Video
- Fixed: Regression (since Firefox 41) whereby audio playback was stuttering due to duration time rounding errors (bug 1222866.)
HTTP
- The
jar:
protocol has been disabled by default when accessed from Web content; you may enable this if necessary by setting thenetwork.jar.block-remote-files
preference tofalse
(bug 1215235).
Networking
No change.
Security
- Support of the
child-src
CSP policy directive has been implemented (bug 1045891). - EV certificates with a validity greater than 27 months are now considered and handled as DV certificates (bug 1222903).
Changes for add-on and Mozilla developers
Interfaces
No change.
XUL
- Tab Groups have been removed.
JavaScript code modules
No change.
XPCOM
No change.
Search plugins
Starting in Firefox 45, search plugins located in the user's profile's searchplugins
directory are no longer automatically loaded on startup. Instead, a list of user-installed plugins is maintained and only those plugins are loaded. In effect, this means that the only ways to install new search plugins are for the user to do so in the Firefox UX (via OpenSearch discovery, for instance) or for an add-on to install it. Also, when a new search plugin is installed, more information is recorded about where it came from, for future use by profile debugging and cleaning tools.
Other
- WebIDL constructors could be called without the
new
operator in chrome context. Now such code will raise aTypeError
as in Web content since Firefox 30. For example,var req = XMLHttpRequest();
needs to bevar req = new XMLHttpRequest();
.
See also
Older versions
- 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
- Firefox 21 for developers
- Firefox 20 for developers