Firefox 69 for developers
This article provides information about the changes in Firefox 69 that will affect developers. Firefox 69 was released on September 3, 2019.
Changes for web developers
Developer tools
Debugger
- Event Listener Breakpoints let you diagnose which code a page executes in response to browser events. You can pick specific types, such as
click
orkeydown
, or whole categories of events, like all mouse input events. (Firefox bug 1526082). - Scripts shown in the debugger's source list pane can now be saved via the Download file context menu option (Firefox bug 888161).
- In the debugger's source list pane, loaded extensions are listed with their name, rather than just their UUID (Firefox bug 1486416), making it much easier to find the extension code you want to debug.
- The debugger now loads significantly faster via lazy-loading scripts (Firefox bug 1527488).
Console
- Browser Console messages from tracking protection errors, CSP errors, and CORS errors are grouped automatically to reduce noise from repeated blocked resources and storage access (Firefox bug 1522396).
- All visible logs in the console can shared by saving to a file or copying to clipboard via a new Export visible messages to context menu item (Firefox bug 1517728).
- The console's toolbar now responsively reduces its height into a single row to save vertical space (Firefox bug 972530).
- Messages from content can now be hidden in the console to focus on logs from the Firefox UI (Firefox bug 1523842).
Network
- Resources that got blocked because of CSP or Mixed Content are now shown in the Network panel, with details of the reason (Firefox bug 1556451).
- A new optional URL column in the Network panel can be enabled to show the full URL for resources (Firefox bug 1341155).
Inspector
- When you hover over an element in the Page Inspector, the infobar that appears now includes the fact that an element is a flex container, or flex item (Firefox bug 1521188).
- When inspecting a page containing a grid with a subgrid, the parent grid's overlay lines are displayed whenever the subgrid's lines are displayed; if the parent grid's overlay checkbox is unselected, then its lines are translucent (Firefox bug 1550519).
Remote debugging
- For our mobile web developers, we have migrated remote debugging from the old WebIDE into a re-designed about:debugging, making the experience of debugging GeckoView on remote devices via USB much better (Firefox bug 1462208).
General
- The DevTools panel order has been changed to reflect popularity (Firefox bug 1558630).
HTML
- In order to align more closely to the specification, the text track associated with a
<track>
element no longer loads the WebVTT file containing the text cues if the element is created in its defaultdisabled
mode
. To access or manipulate the cues when themode
isdisabled
, change themode
to eitherstarted
orhidden
; this will trigger loading of the WebVTT data (Firefox bug 1550633).
Removals
- The HTML
<keygen>
element has been removed from Firefox. It was deprecated some time ago, and its purpose has generally been supplanted by other technologies (Firefox bug 1315460).
CSS
- We implemented the
break-spaces
value of thewhite-space
property (Firefox bug 1351432). - The SVG geometry attributes (such as
width
andheight
) can now also be defined as CSS properties (Firefox bug 1383650). - The
::cue
selector — used to style the captions ("cues") displayed by WebVTT — now enforces the limitations on which CSS properties may be used within cues, as per the specification (Firefox bug 1321488). - We've restricted the properties that may apply to
::marker
as per the specification (Firefox bug 1552578) - The
overflow-block
andoverflow-inline
properties have been implemented (Firefox bug 1470695). - We added the ability to test for support of a selector when using CSS Feature Queries (
@supports
), with theselector()
method (Firefox bug 1513643). - The
user-select
property — which specifies whether or not the user is able to select text in the affected element — has been unprefixed (Firefox bug 1492739). - We implemented local-specific casing behavior for Lithuanian (Firefox bug 1322992), as seen in this example.
- We've implemented the
line-break
property of CSS Text (Firefox bug 1011369 and Firefox bug 1531715). - The
contain
property — which allows developers to define that an element and its contents are mostly independent of the rest of the DOM tree — got implemented Firefox bug 1487493.
SVG
- We've added support for gzip-compressed SVG-in-OpenType (Firefox bug 1359240).
- The
SVGGeometryElement.isPointInFill()
andSVGGeometryElement.isPointInStroke()
methods have been implemented (Firefox bug 1325319).
JavaScript
- Public class fields are enabled by default (Firefox bug 1555464). See also Class fields for more information.
- The promise rejection events
unhandledrejection
andrejectionhandled
are now enabled by default (Firefox bug 1362272). To learn more about how these work, see Promise rejection events.
HTTP
- The HTTP headers
Access-Control-Expose-Headers
,Access-Control-Allow-Methods
, andAccess-Control-Allow-Headers
now accept a wildcard value "*
" for requests without credentials (Firefox bug 1309358). This change has also been uplifted to Firefox 68 ESR.
APIs
New APIs
- The Resize Observer API is supported by default (Firefox bug 1543839).
- The Microtask API (
queueMicrotask()
) has been implemented (Firefox bug 1480236).
DOM
- The
DOMMatrix
,DOMPoint
, and related objects are now supported in workers (Firefox bug 1420580). - The
pageX
andpageY
properties have been moved fromUIEvent
toMouseEvent
, for better spec compliance (Firefox bug 1178763). These properties are no longer exposed to theCompositionEvent
,FocusEvent
,InputEvent
,KeyboardEvent
, andTouchEvent
interfaces, which all inherit fromUIEvent
. - The
Blob.text()
,Blob.arrayBuffer()
, andBlob.stream()
methods are now implemented (Firefox bug 1557121). DOMMatrix.fromMatrix()
has been implemented (Firefox bug 1560462).- We now support the six-parameter version of the
DOMMatrix.scale()
method (Firefox bug 1397945). - The arguments for
DOMMatrix.translate()
,DOMMatrix.skewX()
, andDOMMatrix.skewY()
are now all optional, as per spec (Firefox bug 1397949). - The
Navigator.userAgent
,Navigator.platform
, andNavigator.oscpu
properties no longer reveal whether a user is running 32-bit Firefox on a 64-bit OS (Firefox bug 1559747). They now sayLinux x86_64
instead ofLinux i686 on x86_64
, andWin64
instead ofWOW64
. - The remaining methods of
HTMLDocument
have been moved toDocument
. This should have no appreciable impact on your work in most cases. In particular, theclose()
,open()
, andwrite()
methods have been moved. So have the various editor related methods, includingexecCommand()
as well as various properties (Firefox bug 1549560). - We have implemented
AbstractRange
andStaticRange
(Firefox bug 1444847).
Media, Web Audio, and WebRTC
- For improved user security, and in-keeping with the latest versions of the Media Capture and Streams specification, the
navigator.mediaDevices
property is no longer present if the context is insecure. To usegetUserMedia()
,getDisplayMedia()
,enumerateDevices()
, and so forth, be sure your content is loaded using HTTPS (Firefox bug 1528031). - The Web Audio API's
AudioParam.value
property now returns the actual value of the property at the current time, taking into account all scheduled or graduated value changes. Previously, Firefox only returned the most recent explicitly-set value (as through using thevalue
setter) (Firefox bug 893020). - We've updated
MediaStreamAudioSourceNode
to use the new, lexicographical, ordering for tracks. Previously, track ordering was up to the individual browser, and could even change arbitrarily. In addition, attempting to create aMediaStreamAudioSourceNode
using a stream that has no audio tracks now throws anInvalidStateError
exception (Firefox bug 1553215). - The
facingMode
,deviceId
, andgroupId
settings are now included as members of theMediaTrackSettings
object returned by calls toMediaStreamTrack.getSettings()
(Firefox bug 1537986).
Removals
- The
DOMMatrix.scaleNonUniformSelf()
method has been removed (Firefox bug 1560119).
WebDriver conformance (Marionette)
Other
- Marionette now dynamically handles the opening and closing of modal dialogs and user prompts (Firefox bug 1477977), which also means that multiple open prompts will be handled (Firefox bug 1487358).
- Tracking protection and DOM push features are now disabled by default to avoid the removal of parts of the DOM, and extra notifications (Firefox bug 1542244).
- Automatic unloading of background tabs if Firefox runs into a low memory condition is now disabled — this badly interacts with automation when switching between tabs (Firefox bug 1553748).
Changes for add-on developers
API changes
- The UserScripts API is now enabled by default.
- The
topSites.get()
method now has new options available —includePinned
andincludeSearchShortcuts
(Firefox bug 1547669).
Other changes
- There are now Group Policy options to blacklist all extensions except the ones that have been whitelisted (Firefox bug 1522823).
See also
- Hacks release post: Firefox 69 — a tale of Resize Observer, microtasks, CSS, and DevTools
Older versions
- Firefox 68 for developers
- Firefox 67 for developers
- Firefox 66 for developers
- 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