This article provides information about the changes in Firefox 63 that will affect developers. Firefox 63 was released on October 23, 2018.
Changes for web developers
- The Fonts tab in the Page Inspector now includes an editor that makes it easy to view and edit the settings of the fonts on your page. See Edit fonts for details.
- The Accessibility inspector is now enabled by default (bug 1482454).
- When you hover over an object in the Accessibility Inspector, the item is highlighted and its role and name will be shown in an information bar on the page (bug 1473030).
- The command line in the Web Console is now shown immediately following the console output (bug 1136299).
- A new icon has been added to the content in the Network Monitor to indicate when a URL belongs to a known tracker — see Security icons in Network request list (bug 1333994).
- The default value of
false, meaning that system add-ons will not be listed on the
about:debuggingpage. You can change the settings by navigating to
- The Responsive Design Mode toolbar was simplified, and we added the option to left-align the viewport.
- The Page Inspector includes a link to the class definition for a custom element. (bug 1443923).
- Support for the
decodingattribute has been added (bug 1416328); see also
- Support for the
sidebarlink type (
rel="sidebar") has been removed. If an anchor tag includes this attribute, it will be ignored (bug 1452645).
- Support for the
:definedpseudo-class has been added (bug 1331334).
- Support for
gaphave been added in Flexbox layout (bug 1398483).
- Re-enabled support for webkit-prefixed pixel-density @media queries (bug 1444139).
- Support added for the CSS Flexible Box Layout (Flexbox) properties
align-itemsas well as the
justify-contentproperty (bug 1472843).
- Implemented the
- Implemented syntax improvements from the Media Queries Level 4 specification (bug 1472843).
- Added support for the prefers-reduced-motion media feature (bug 1365045, bug 1475462).
- Added flow relative values (
inline) for the
resizeproperty (bug 1464786).
- Implemented flexbox layout for
- The logical properties (where appropriate) are now animatable (bug 1309752).
offset-inline-end; these have been renamed to
inset-*, as described above (bug 1464782).
Symbol.prototype.descriptionproperty has been implemented (bug 1472170).
Object.fromEntries()method has been added (bug 1469019).
- When you try to access a property of an undefined object, the error message is now much improved. Considering the case where
xis undefined and you try to access
x.y, instead of
TypeError: x is undefinedthe console now returns the more descriptive
x is undefined; can't access its "y" property(bug 1259822).
- Experimental WebAssembly Module IndexedDB serialization support has been removed (bug 1469395).
- The Shadow DOM (bug 1471947) and Custom Elements (bug 1471948) APIs have been enabled by default; See Web components for more details.
- The Media Capabilities API has been implemented (bug 1409664).
- The Async Clipboard API has been implemented and enabled by default for all channels (bug 1461465). As is the case with Chrome, Firefox currently implements only the
readText()methods; however, unlike Chrome,
readText()is only available in browser extensions.
SecurityPolicyViolationEventinterface is now supported. It allows sending events when the
Content-Security-Policyis violated (bug 1472661).
- The following portions of the Web Animations API have been enabled by default (see bug 1476158):
Element.toggleAttribute()method has been implemented (bug 1469592).
- The historical, previously non-standard,
Event.returnValueproperty is now supported for compatibility purposes (bug 1452569).
- We implemented the
Window.eventproperty to improve web compatibility, now that it's become standard (bug 218415). However, due to some web compat issues (e.g. bug 1479964), this was quickly disabled in non-Nightly channels, hidden behind the
dom.window.event.enabledpref (bug 1493869).
- To bring Firefox into alignment with Edge and Chrome, the
navigator.platformproperty now returns
"Win32"even when running on 64-bit Windows (bug 1472618).
- Prior to Firefox 63, links that open new windows that had
rel="noopener", as well as calls to
noopenerwindow feature enabled would default to having all window features disabled so that you had to explicitly re-enable any standard features you wanted. Now, these windows have the same set of features enabled like any other window, and you need to explicitly turn off any you don't want (bug 1419960).
- Handling of the Alt key on the right side of the keyboard has been improved on Windows. If the user's current keyboard layout maps the Alt key to the AltGr modifier key, the value of
KeyboardEvent.keyis now reported as
"AltGraph". This behavior matches the behavior recently introduced in Chrome (bug 900750).
Media, Web Audio, and WebRTC
- Microphone access now works simultaneously in multiple tabs, even within the same content process (bug 1404977).
RTCDataChannelhas been updated to support the sctp-sdp-21 data format for the data, in addition to the older sctp-sdp-05 format previously supported.
ConstantSourceNodenode type for Web Audio API now has a default channel count of 2 rather than 1, in order to match the specification (bug 1413283).
- The Web Audio API interface
AudioScheduledSourceNode(and by extension, all the other node types based on it) now throw the correct exception when a negative value is specified for the node start time. That error is
- The minimum and maximum permitted values for an
valuehave been changed to the minimum negative single-precision floating-point value (-340,282,346,638,528,859,811,704,183,484,516,925,440) and the maximum positive single-precision floating-point value (+340,282,346,638,528,859,811,704,183,484,516,925,440) respectively (bug 1476695).
SourceBuffer.changeTypemethod, which allows you to change codecs during an active stream, has been enabled by default. This is part of the Media Source Extensions API (bug 1481166).
AudioParam.setValueCurveAtTime()method has been updated to correctly accept an array of floating-point values to indicate the parameter's values to change to over time. Previously, it required a
AudioParam.setValueCurveAtTime()has also been updated to correctly return a proper
TypeErrorwhen a non-finite value is found in the
valuesarray (bug 1472095).
- In addition,
setValueCurveAtTime()has been updated to ensure that, when the parameter finishes following the specified value curve after the duration elapses, the value of the parameter is set to the last value in the list of values to curve through (bug 1308436).
RTCRTPStreamStatsdictionary has been renamed to
RTCRtpStreamStatsfor consistency with other WebRTC dictionaries and the specification (bug 1480498).
- Support for the
kindproperty has been added (bug 1481851).
isRemoteproperty is deprecated and will be removed in Firefox 65. A warning is now output to console when this property is accessed. See this blog post on the Advancing WebRTC blog for details (bug 1393306).
Canvas and WebGL
- A new
powerPreferencecontext attribute has been added to
HTMLCanvasElement.getContext(). On macOS this allows WebGL non-performance-critical applications and applets to request the low-power GPU instead of the high-power GPU in multi-GPU systems (bug 1349799).
- The obsolete and non-standard Firefox-only methods
Window.forward()have been removed. Please use the
window.history.forward()methods instead (bug 1479486).
revokeObjectURL()methods are no longer available on
ServiceWorkerinstances due to the potential they introduced for memory leaks to occur (bug 1264182).
- Since it was deprecated in the specification anyway, the limited support for Doppler effects on
PannerNodehas been removed from the Web Audio API. The
speedOfSoundhave been removed, along with the
- Site favicons are now subject to Content Security Policy if one is configured for the site (bug 1297156).
'report-sample'expression now recognized when generating violation reports. This directive indicates that a short sample of where the violation occurred should be included in the report. Previously, Firefox always included this sample (bug 1473218).
- Firefox now uses NSS 3.39 (bug 1470914).
WebDriver conformance (Marionette)
- Marionette now returns a
setWindowRectcapability in the
WebDriver:NewSessionresponse that is true if the browser window can be repositioned and resized, which e.g. is the case for Firefox but not any mobile applications (bug 1470659).
- Added support for the
unhandledPromptBehaviorcapability, which allows to define a specific prompt behavior of the WebDriver specification (bug 1264259).
- Handling of user prompts has been added to the
WebDriver:ExecuteAsyncScriptcommands (bug 1439995).
- Deprecated command end-points without the
WebDriver:prefix have been removed (bug 1451725).
WebDriver:NewSessioncommand returns recommended strings (
platformNameas defined in the WebDriver specification (bug 1470646).
- Focus related events were missing on element interaction when Firefox was not running as the top-most application (bug 1398111).
- Performing a
pointerUpaction in a subsequent action sequence could trigger a double click because
WebDriver:ReleaseActionsdidn't reset the double click tracker (bug 1422583).
pauseactions repeatedly could cause an infinite hang (bug 1447449).
- Fixed a bug where returning an element collection from
WebDriver:ExecuteAsyncScriptwould cause a cyclic reference error (bug 1447977).
- To prevent a race condition both the
WebDriver:DismissAlertcommands now wait until the user prompt has been closed (bug 1479368).
- Log entries as emitted by the frame script were no longer limited by
MarionettePrefs.logLevelbut logged everything (bug 1482829).
WebDriver:TakeScreenshotraised an error when taking a screenshot of a window larger than 32767 pixels in width or height (bug 1485730).
WebDriver:SendAlertTextdidn't replace default user prompt value if text to send is an empty string (bug 1486485).
- Corrected the behavior of
PerformanceObserver.observe()to simply do nothing if no valid entry types are found in the specified array of entry types to observe, or if the array is empty or missing. Previously, Firefox was incorrectly throwing a
- In OpenSearch, Firefox now accepts
application/jsonas a search URL type, as an alias of
Changes for add-on developers
- The default text color for
browserActionbadges is now automatically set to black or white, to maximise contrast with the background (bug 1474110).
textcolorproperties of the
thememanifest key are now optional (bug 1413144).
browserAction.setBadgeTextColor()enable you to get and set the text color of browser action badges (bug 1424620).
- The theme
manifest.jsonnow supports the
ntp_textproperty to set the text color in a new tab, and the
ntp_backgroundproperty to set the color of a new tab (bug 1347204).
- Themes can now define the colors for sidebars, such as the bookmarks sidebar (bug 1418602). The relevant properties include:
sidebar: The background color for sidebars.
sidebar_text: The text color for sidebars.
sidebar_highlight: The background color of a selected item in a sidebar.
sidebar_highlight_text: The text color of a selected item in a sidebar.
- The method
management.install()allows web extensions to install and enable signed browser themes (bug 1369209).
- The manifest key theme_experiment was introduced (bug 1472740). This key enables the definition of experimental
themekey properties for the Firefox interface.
- The new
searchAPI enables you to retrieve the list of installed search engines and perform searches with them (bug 1352598).
topSites.get()now takes an
optionsparameter enabling you to set various options for the list of sites returned (bug 1445836).
tabs.onHighlightednow supports multi-select (bug 1474440).
tabs.highlightnow includes an optional field in the
populate— which defaults to
true. Setting it to
falseprevents the returned
windows.Windowobject from being populated with a list of tabs, to improve performance (bug 1489814).
tabs.updatenow supports changing the selection status of a tab by including
highlighted: truein the
updatePropertiesparameter (bug 1479129).
tabs.updatenow supports changing the selection status of a tab without changing the focused tab (bug 1486050) by including both
active: falsein the
tabs.querynow returns an array of
tabs.Tabobjects if multiple tabs are selected (bug 1465170).
tabs.Tabproperty now properly reflects which tabs in a browser window are selected (highlighted) and
tabs.highlightsupports changing the highlighted status of multiple tabs (bug 1464862).
isarticleproperty in the
extraParametersobject passed into
tabs.onUpdatedhas been renamed to
isArticle. The old name is retained but deprecated. This change was uplifted to Firefox 62 (bug 1461695).
tabs.onUpdatedevent can be used to track when a tab is drawing the user's attention with
attentionproperty of the
changeInfoobject (bug 1396684).
menusAPI. The method returns the element referenced by the
targetElementIdparameter that identifies the clicked element. If the
targetElementIdis no longer valid, the method returns null (bug 1325814).
menus.create()now enables you to create invisible menu items, and
menus.update()enables you to toggle menu item visibility (bug 1482529).
- Items created using the
menusAPI now support access keys (bug 1320462).
menus.update()now supports any URL scheme, even those that are usually not allowed in a match pattern (bug 1280370).
- When a tab context menu item is clicked, the "activeTab" permission is now granted for that tab, even if that's not the currently active tab (bug 1446956).
commands.onCommandis now treated as user input (bug 1408129).
webRequestAPI now enables you to filter for speculative connections (bug 1479565).
webRequest.SecurityInfoadds two new properties,
signatureSchemeName. This change was uplifted to Firefox 62 (bug 1471959).
cookies.Cookienow includes a property indicating the SameSite state of the cookie. The
cookies.SameSiteStatusenumeration defines SameSite state values (bug 1351663).
- Match patterns for URLs now explicitly match the "data" URL scheme (bug 1280370).
- 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
- Firefox 34 for developers
- Firefox 33 for developers
- Firefox 32 for developers