Firefox 63 for developers
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
Developer tools
- 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 (Firefox 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 (Firefox bug 1473030).
- The command line in the Web Console is now shown immediately following the console output (Firefox 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 (Firefox bug 1333994).
- The default value of
devtools.aboutdebugging.showSystemAddons
is nowfalse
, meaning that system add-ons will not be listed on theabout:debugging
page. You can change the settings by navigating toabout:config
(Firefox bug 1425347). - 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. (Firefox bug 1443923).
HTML
- Support for the
<img>
element'sdecoding
attribute has been added (Firefox bug 1416328); see alsoHTMLImageElement.decoding
.
Removals
- Support for the
sidebar
link type (rel="sidebar"
) has been removed. If an anchor tag includes this attribute, it will be ignored (Firefox bug 1452645).
CSS
- Support for the
:defined
pseudo-class has been added (Firefox bug 1331334). - Support for
row-gap
,column-gap
andgap
have been added in Flexbox layout (Firefox bug 1398483). - Re-enabled support for webkit-prefixed pixel-density @media queries (Firefox bug 1444139).
- Support added for the CSS Flexible Box Layout (Flexbox) properties
align-self
,align-content
, andalign-items
as well as thejustify-content
property (Firefox bug 1472843). - Implemented the
path()
function foroffset-path
(Firefox bug 1429298). - Implemented syntax improvements from the Media Queries Level 4 specification (Firefox bug 1422225).
- Renamed
offset-*
properties toinset-block-start
,inset-block-end
,inset-inline-start
, andinset-inline-end
(Firefox bug 1464782). - Added support for the prefers-reduced-motion media feature (Firefox bug 1365045, Firefox bug 1475462).
- Added flow relative values (
block
,inline
) for theresize
property (Firefox bug 1464786). - Implemented flexbox layout for
safe
&unsafe
values inalign-self
,align-content
, andjustify-content
(Firefox bug 1297774). - The logical properties (where appropriate) are now animatable (Firefox bug 1309752).
Removals
- Removed
offset-block-start
,offset-block-end
,offset-inline-start
, andoffset-inline-end
; these have been renamed toinset-*
, as described above (Firefox bug 1464782).
SVG
No changes.
JavaScript
- The
Symbol.prototype.description
property has been implemented (Firefox bug 1472170). - The
Object.fromEntries()
method has been added (Firefox bug 1469019). - When you try to access a property of an undefined object, the error message is now much improved. Considering the case where
x
is undefined and you try to accessx.y
, instead of "TypeError: x is undefined" the console now returns the more descriptive x is undefined; can't access its "y" property (Firefox bug 1259822).
Removals
- Experimental WebAssembly Module IndexedDB serialization support has been removed (Firefox bug 1469395).
APIs
New APIs
- The Shadow DOM (Firefox bug 1471947) and Custom Elements (Firefox bug 1471948) APIs have been enabled by default; See Web components for more details.
- The Media Capabilities API has been implemented (Firefox bug 1409664).
- The Async Clipboard API has been implemented and enabled by default for all channels (Firefox bug 1461465). As is the case with Chrome, Firefox currently implements only the
writeText()
andreadText()
methods; however, unlike Chrome,readText()
is only available in browser extensions. - The
SecurityPolicyViolationEvent
interface is now supported. It allows sending events when theContent-Security-Policy
is violated (Firefox bug 1472661).
DOM
-
The following portions of the Web Animations API have been enabled by default (see Firefox bug 1476158):
- The
Animation
propertiesready
andfinished
, specifying theAnimation
object'sready
andfinished
Promise
s. - The
Animation
object'seffect
property. - The interfaces
KeyframeEffect
andAnimationEffect
.
- The
-
The
Element.toggleAttribute()
method has been implemented (Firefox bug 1469592). -
The historical, previously non-standard,
Event.returnValue
property is now supported for compatibility purposes (Firefox bug 1452569). -
We implemented the
Window.event
property to improve web compatibility, now that it's become standard (Firefox bug 218415). However, due to some web compat issues (e.g. Firefox bug 1479964), this was quickly disabled in non-Nightly channels, hidden behind thedom.window.event.enabled
pref (Firefox bug 1493869). -
To bring Firefox into alignment with Edge and Chrome, the
navigator.platform
property now returns"Win32"
even when running on 64-bit Windows (Firefox bug 1472618). -
Prior to Firefox 63, links that open new windows that had
rel="noopener"
, as well as calls toWindow.open()
with thenoopener
window 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 (Firefox bug 1419960).
DOM events
- 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 theAlt
key to theAltGr
modifier key, the value ofKeyboardEvent.key
is now reported as"AltGraph"
. This behavior matches the behavior recently introduced in Chrome (Firefox bug 900750).
Media, Web Audio, and WebRTC
- Microphone access now works simultaneously in multiple tabs, even within the same content process (Firefox bug 1404977).
RTCDataChannel
has been updated to support the sctp-sdp-21 data format for the data, in addition to the older sctp-sdp-05 format previously supported.- The
ConstantSourceNode
node type for Web Audio API now has a default channel count of 2 rather than 1, in order to match the specification (Firefox 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 isRangeError
(Firefox bug 1413284). - The minimum and maximum permitted values for an
AudioParam
object'svalue
have 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 (Firefox bug 1476695). - The
SourceBuffer.changeType
method, which allows you to change codecs during an active stream, has been enabled by default. This is part of the Media Source Extensions API (Firefox bug 1481166). - The
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 aFloat32Array
(Firefox bug 1421091). AudioParam.setValueCurveAtTime()
has also been updated to correctly return a properTypeError
when a non-finite value is found in thevalues
array (Firefox 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 (Firefox bug 1308436). - The
RTCRTPStreamStats
dictionary has been renamed toRTCRtpStreamStats
for consistency with other WebRTC dictionaries and the specification (Firefox bug 1480498). - Support for the
RTCRtpStreamStats
dictionary'skind
property has been added (Firefox bug 1481851). - The
RTCRtpStreamStats
dictionary'sisRemote
property 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 (Firefox bug 1393306).
Canvas and WebGL
- A new
powerPreference
context attribute has been added toHTMLCanvasElement.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 (Firefox bug 1349799).
Removals
- The obsolete and non-standard Firefox-only methods
Window.back()
andWindow.forward()
have been removed. Please use thewindow.history.back()
andwindow.history.forward()
methods instead (Firefox bug 1479486). - The
URL.createObjectURL()
andURL.revokeObjectURL()
methods are no longer available onServiceWorker
instances due to the potential they introduced for memory leaks to occur (Firefox bug 1264182). - Since it was deprecated in the specification anyway, the limited support for Doppler effects on
PannerNode
has been removed from the Web Audio API. TheAudioListener
propertiesdopplerFactor
andspeedOfSound
have been removed, along with thePannerNode
methodsetVelocity()
(Firefox bug 1148354).
CSSOM
No changes.
HTTP
- The
Clear-Site-Data
header is implemented and no longer behind a preference (Firefox bug 1470111).
Security
- Site favicons are now subject to Content Security Policy if one is configured for the site (Firefox bug 1297156).
- CSP
script-src
directive's'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 (Firefox bug 1473218). - Firefox now uses NSS 3.39 (Firefox bug 1470914).
Plugins
No changes.
WebDriver conformance (Marionette)
New features
- Marionette now returns a
setWindowRect
capability in theWebDriver:NewSession
response 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 (Firefox bug 1470659). - Added support for the
unhandledPromptBehavior
capability, which allows to define a specific prompt behavior of the WebDriver specification (Firefox bug 1264259). - Handling of user prompts has been added to the
WebDriver:ExecuteScript
andWebDriver:ExecuteAsyncScript
commands (Firefox bug 1439995).
API changes
- Deprecated command end-points without the
WebDriver:
prefix have been removed (Firefox bug 1451725). - The
WebDriver:NewSession
command returns recommended strings (linux
,mac
,windows
) forplatformName
as defined in the WebDriver specification (Firefox bug 1470646).
Bug fixes
- Focus related events were missing on element interaction when Firefox was not running as the top-most application (Firefox bug 1398111).
- Performing a
pointerDown
andpointerUp
action in a subsequent action sequence could trigger a double click becauseWebDriver:ReleaseActions
didn't reset the double click tracker (Firefox bug 1422583). - Executing
pause
actions repeatedly could cause an infinite hang (Firefox bug 1447449). - Fixed a bug where returning an element collection from
WebDriver:ExecuteScript
andWebDriver:ExecuteAsyncScript
would cause a cyclic reference error (Firefox bug 1447977). - To prevent a race condition both the
WebDriver:AcceptAlert
andWebDriver:DismissAlert
commands now wait until the user prompt has been closed (Firefox bug 1479368). - Log entries as emitted by the frame script were no longer limited by
MarionettePrefs.logLevel
but logged everything (Firefox bug 1482829). WebDriver:TakeScreenshot
raised an error when taking a screenshot of a window larger than 32767 pixels in width or height (Firefox bug 1485730).WebDriver:SendAlertText
didn't replace default user prompt value if text to send is an empty string (Firefox bug 1486485).
Other
- Corrected the behavior of
PerformanceObserver.observe()
to 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 aTypeError
(Firefox bug 1403027). - In OpenSearch, Firefox now accepts
application/json
as a search URL type, as an alias ofapplication/x-suggestions+json
(Firefox bug 1425827).
Changes for add-on developers
API changes
Theming
-
The default text color for
browserAction
badges is now automatically set to black or white, to maximize contrast with the background (Firefox bug 1474110). -
The
accentcolor
andtextcolor
properties of thetheme
manifest key are now optional (Firefox bug 1413144). -
browserAction.getBadgeTextColor()
andbrowserAction.setBadgeTextColor()
enable you to get and set the text color of browser action badges (Firefox bug 1424620). -
The theme
colors
key inmanifest.json
now supports thentp_text
property to set the text color in a new tab, and thentp_background
property to set the color of a new tab (Firefox bug 1347204). -
Themes can now define the colors for sidebars, such as the bookmarks sidebar (Firefox 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 (Firefox bug 1369209). -
The manifest key theme_experiment was introduced (Firefox bug 1472740). This key enables the definition of experimental
theme
key properties for the Firefox interface.
Search
- The new
search
API enables you to retrieve the list of installed search engines and perform searches with them (Firefox bug 1352598). topSites.get()
now takes anoptions
parameter enabling you to set various options for the list of sites returned (Firefox bug 1445836).
Tabs
tabs.onHighlighted
now supports multi-select (Firefox bug 1474440).tabs.highlight
now includes an optional field in thehighlightInfo
object —populate
— which defaults totrue
. Setting it tofalse
prevents the returnedwindows.Window
object from being populated with a list of tabs, to improve performance (Firefox bug 1489814).tabs.update
now supports changing the selection status of a tab by includinghighlighted: true
in theupdateProperties
parameter (Firefox bug 1479129).tabs.update
now supports changing the selection status of a tab without changing the focused tab (Firefox bug 1486050) by including bothhighlighted: true
andactive: false
in theupdateProperties
parameter.tabs.query
now returns an array oftabs.Tab
objects if multiple tabs are selected (Firefox bug 1465170).- The
tabs.Tab
property now properly reflects which tabs in a browser window are selected (highlighted) andtabs.highlight
supports changing the highlighted status of multiple tabs (Firefox bug 1464862). - The
isarticle
property in thefilter
object passed intotabs.onUpdated
has been renamed toisArticle
. The old name is retained but deprecated. This change was uplifted to Firefox 62 (Firefox bug 1461695). - The
tabs.onUpdated
event can be used to track when a tab is drawing the user's attention withattention
property of thechangeInfo
object (Firefox bug 1396684).
Menus
- Added
menus.getTargetElement()
to themenus
API. The method returns the element referenced by thetargetElementId
parameter that identifies the clicked element. If thetargetElementId
is no longer valid, the method returns null (Firefox bug 1325814). menus.create()
now enables you to create invisible menu items, andmenus.update()
enables you to toggle menu item visibility (Firefox bug 1482529).- Items created using the
menus
API now support access keys (Firefox bug 1320462). - The
targetUrlPatterns
parameter ofmenus.create()
andmenus.update()
now supports any URL scheme, even those that are usually not allowed in a match pattern (Firefox 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 (Firefox bug 1446956).
Other
commands.onCommand
is now treated as user input (Firefox bug 1408129).- The
webRequest
API now enables you to filter for speculative connections (Firefox bug 1479565). webRequest.SecurityInfo
adds two new properties,keaGroupName
, andsignatureSchemeName
. This change was uplifted to Firefox 62 (Firefox bug 1471959).cookies.Cookie
now includes a property indicating the SameSite state of the cookie. Thecookies.SameSiteStatus
enumeration defines SameSite state values (Firefox bug 1351663).- Match patterns for URLs now explicitly match the "data" URL scheme (Firefox bug 1280370).
Older versions
- 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