This article provides information about the changes in Firefox 65 that will affect developers. Firefox 65 was released on January 29, 2019.
Changes for web developers
- The Flexbox inspector is now enabled by default.
- Right-click on an item in the accessibility tree from the Accessibility viewer to print it as json to the JSON viewer.
- The color contrast display of the Accessibility Picker has been updated so that if a text's background is complex (e.g. a gradient or complex image), it shows a range of color contrast values.
- The Headers tab of the Network Monitor now displays the Referrer Policy for the selected request (bug 1496742).
$0shortcut (references the currently inspected element on the page) now has autocomplete available, so for example you could type
$0.teto get autocomplete suggestions for properties like
- The edits you make in the Rules view of the Inspector are now listed in the Changes panel (bug 1503920).
- Events are now dispatched on disabled HTML elements, i.e.
disabledattributes set on them (bug 329509).
- Removing the
srcattribute of an
<iframe>element now causes
about:blankto be loaded into it, giving it parity with Chrome and Safari (bug 1507842). Previously removing
srchad no effect on the
- We have added support for the
<script>elements (bug 1460920).
crisp-edgesvalue has now been unprefixed (bug 1496617).
autonow resolves to
auto, rather than two colors (bug 1501418).
break-*properties have been implemented, and the legacy
page-break-*properties have been aliased to them (bug 775618):
anywherevalue has been implemented (bug 1505786).
- The new step position keywords
jump-both— usable inside the
steps()timing function — have been implemented (bug 1496619). This also coincides with the removal of the
frames()timing function, which was the previous way of implementing such functionality, now deprecated.
- Some new
-webkit-appearancevalues have been added, for compatibility with other browsers. In particular:
meter, which is now used as the default value for
<meter>elements in UA stylesheets. the existing value
meterbaris now an alias for
progress-bar, which is now used as the default value for
<progress>elements in UA stylesheets. the existing value
progressbaris now an alias for
textarea, which is now used as the default value for
<textarea>elements in UA stylesheets. the existing value
textfield-multilineis now an alias for
- The behavior of
user-selecthas been changed to make it align more with other browsers (bug 1506547). Specifically:
user-select: allset on an element no longer overrides other values of
user-selectset on children of that element. So for example in the following snippet:
<div style="-webkit-user-select: all">All <div style="-webkit-user-select: none">None</div> </div>The
noneset on it is now non-selectable. Previously this value would have been overriden by the
allvalue set on the parent element.
contenteditableelements nested inside
contenteditableelements are now selectable.
user-selectnow behaves consistently inside and outside shadow DOM.
- The proprietary
-moz-textvalue has been removed.
- CSS environment variables (the
env()function) have been implemented (bug 1462233).
layout.css.shape-outside.enabledpref has been removed;
shape-image-thresholdcan no longer be disabled in
- Several Firefox-only values of the
user-selectproperty have been removed —
toggle. See bug 1492958 and bug 1506547.
- As mentioned above, the
frames()timing function has been removed (bug 1496619).
Intl.RelativeTimeFormatis now supported (bug 1504334).
- Strings now have a maximum length of
2**30 - 2(~1GB) instead of
2**28 - 1(~256MB) (bug 1509542).
globalThisproperty, which always refers to the top-level global object, has been implemented (bug 1317422).
- Readable Streams have been enabled by default (bug 1505122).
- The Storage Access API has been enabled by default (bug 1513021).
Performance.toJSON()has been exposed to Web Workers (bug 1504958).
XMLHttpRequestrequests will now throw a
NetworkErrorif the requested content type is a
Blob, and the request method is not
createImageBitmap()now supports SVG images (
SVGImageElement) as an image source (bug 1500768).
- Going forward, only one
Window.open()call is allowed per event (bug 675574).
keydownevents are now fired during IME composition, to improve cross-browser compatibility for CJKT users (bug 354358, also see
keydown and keyup events are now fired during IME composition for more useful details).
SharedWorkerGlobalScope.onconnect's event object is a
MessageEventinstance — its
dataproperty is now an empty string value rather than
Fetch and Service workers
Response.redirect()method now correctly throws a
TypeErrorif a non-valid URL is specified as the first parameter (bug 1503276).
FetchEvent.resultingClientIdproperties are now supported (bug 1264177).
ServiceWorkerContainer.onmessageerrorhandler properties have been implemented (bug 1399446).
Originheader is no longer set on Fetch requests with a method of
Media, Web Audio, and WebRTC
- The WebRTC
RTCIceCandidateStatsdictionary has been updated according to the latest spec changes (bug 1324788, bug 1489040; see also
RTCIceCandidateStats has been updated to the latest spec for more details on exactly what has changed).
resumeevents (and their corresponding event handler properties —
MediaRecorder.onresume) were not previously implemented, even though compatibility tables claimed they had been. They have now been implemented (bug 1458538, bug 1514016).
Canvas and WebGL
- Mutation events have been disabled in shadow trees (bug 1489858).
- The non-standard
currentTimehas been removed (bug 1502927).
dom.webcomponents.customelements.enabledprefs have been removed — Shadow DOM and Custom Elements can no longer be disabled in
- The non-standard DOM
textevent — fired to notify the browser editor UI of IME composition string data and selection range — has been removed (bug 1288640).
keypressevent is no longer fired for non-printable keys (bug 968056), except for the Enter key, and the Shift + Enter and Ctrl + Enter key combinations (these were kept for cross-browser compatibility purposes).
- Additional CORS restrictions are now being enforced on allowable request headers (bug 1483815, see also whatwg fetch issue 382: CORS-safelisted request headers should be restricted according to RFC 7231 for more details).
WebDriver conformance (Marionette)
<input type=file>more relaxed for interactability checks, and allows those elements to be hidden without raising a
not interactableerror anymore. If a strict interactability check is wanted the capability
strictFileInteractabilitycan be used (bug 1502864).
The window manipulation commands
WebDriver:SetWindowRecthave been made more stable (bug 1492499). It means that under special conditions they don't cause an infinite hang anymore, but instead timeout after 5s if the requested window state cannot be reached (bug 1521527).
WebDriver:ElementClicknow correctly calculates the center point of the element to click, which allows interactions with dimensions of 1x1 pixels (bug 1499360).
unexpected alert openerrors more informative messages are provided (Bug 1502268).
- Support for WebP images has been added (bug 1294490).
Changes for add-on developers
- The tabs API has been enhanced to support tab successors — a tab can have a successor assigned to it, which is the ID of the tab that will be active once it is closed (bug 1500479, also see this blog post for more information). In particular:
tabs.Tabtype now has a
successorIdproperty, which can be used to store/retrieve the ID of the tab's successor.
tabs.onActivatedevent listener's callback has a new parameter available,
previousTabId, which contains the ID of the previous activated tab, if it is still open.
updatePropertiesobject has a new optional property available on it,
successorTabId, so can be used to update it.
successorTabIdis also returned by functions like
- The new function
tabs.moveInSuccession()allows manipulation of tab successors in bulk.
theme_frameproperties for Webextension themes are now supported on Firefox for Android (bug 1429488).
- Firefox 65 for developers
- Firefox 64 for developers
- Firefox 63 for developers
- Firefox 62 for developers
- Firefox 61 for developers
- Firefox 60 for developers
- 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