Experimental features in Firefox

In order to test new features, Mozilla publishes a test version of the Firefox browser, Firefox Nightly, every day. Experimental features, for example implementations of proposed Web platform standards, are available. This page lists features that are in Nightly versions of Firefox along with information on how to activate them, if necessary. You can test your Web sites and applications before these features get released and ensure everything will still work with the latest Web technology capabilities.

To test these experimental features, you need to download Firefox Nightly or Firefox Developer Edition.

Editor's note: When adding features to these tables, please try to include a link to the relevant bug or bugs using the bug macro.

HTML

Feature Firefox Nightly Firefox Developer Edition Firefox Beta Firefox Release Preference

<dialog>
Dialog element including DOM APIs to interact with it. Implementation of modal dialogs and accessibility still missing.

See bug 840640.

Disabled
(available since 53)
Disabled
(available since 53)
--- --- dom.dialog_element.enabled

CSS

Feature Firefox Nightly Firefox Developer Edition Firefox Beta Firefox Release Preference

Subgrids
This feature allows to turn grid items into grid containers but let their layout depend on the outer grid.

See bug 1240834.

Enabled
(available since 69)
Disabled
(available since 69)
Disabled
(available since 69)
Disabled
(recognized but not implemented yet)
layout.css.grid-template-subgrid-value.enabled
Display stray control characters in CSS as hex boxes
This feature renders control characters (Unicode category Cc) other than tab (U+0009), line feed (U+000A), form feed (U+000C), and carriage return (U+000D) as a hexbox when they are not expected.
Enabled
(available since 43)
Disabled
(available since 43)
Disabled
(available since 43)
Disabled
(available since 43)
layout.css.control-characters.enabled or layout.css.control-characters.visible

The column-span CSS property
The column-span CSS property is part of the CSS Multi-column Layout Module specification and allows you to specify how many columns an element spans across.

See bug 616436.

Disabled
(available since 65)
Disabled
(available since 65)
Disabled
(available since 65)
Disabled
(available since 65)
layout.css.column-span.enabled
Individual transform properties
translate, scale, and rotate. These specify transforms individually and independently of the transform property.

They got implemented in bug 1207734 and will be enabled by default in bug 1424133.
Disabled
(available since 60)
Disabled
(available since 60)
Disabled
(available since 60)
Disabled
(available since 60)
layout.css.individual-transform.enabled
The initial-letter CSS property
The initial-letter CSS property is part of the CSS Inline Layout specification and allows you to specify how dropped, raised, and sunken initial letters are displayed.

See bug 1223880.
Disabled
(available since 50)
Disabled
(available since 50)
Disabled
(available since 50)
Disabled
(available since 50)
layout.css.initial-letter.enabled

The Motion Path properties
The Motion Path Module Level 1 specification defines the offset-path, offset-distance, offset-position, offset-rotate, offset-anchor, and offset CSS properties, which allow to position and animate elements along a path.

See bug 1186329.

Enabled
(available since 63)
Disabled
(available since 63)
Disabled
(available since 63)
Disabled
(available since 63)
layout.css.motion-path.enabled
-webkit-appearance alias for -moz-appearance
We've added this alias for web compatibility purposes, and are currently testing it out before final release.
Enabled
(available since 63)
Enabled
(available since 63)
Enabled
(available since 63)
Enabled
(available since 63)
layout.css.webkit-appearance.enabled
clip-path: path()
Supporting path() values on the clip-path property.

Implemented since bug 1246764 and will be enabled by default in bug 1488530.
Disabled
(available since 64)
Disabled
(available since 64)
Disabled
(available since 64)
Disabled
(available since 64)
layout.css.clip-path-path.enabled
Disabling scroll anchoring supression
A flag to disable the scroll-anchoring supression features detailed the Guide to Scroll Anchoring added in bug 1584285

Enabled
(in 71)

No No No layout.css.scroll-anchoring.suppressions.enabled
CSS Shadow Parts
Allows shadow hosts to selectively expose chosen elements from their shadow tree to the outside page for styling purposes.
Enabled
(available since 69)
Disabled
(available since 69)
Disabled
(available since 69)
Disabled
(available since 69)
layout.css.shadow-parts.enabled

JavaScript

See also ECMAScript Next support for implemented features of ECMAScript 2016 and later, that are not experimental and thus available without preferences in Firefox Release.

Feature Firefox Nightly Firefox Developer Edition Firefox Beta Firefox Release Preference
Additions to the ArrayBuffer object
Adds the ArrayBuffer.transfer() that returns a new ArrayBuffer whose contents have been taken from the oldBuffer's data (spec).
36 Disabled Disabled Disabled None
TypedObject objects (spec) Enabled Disabled Disabled Disabled None

APIs

Canvas & WebGL

Feature Firefox Nightly Firefox Developer Edition Firefox Beta Firefox Release Preference
OffscreenCanvas
The OffscreenCanvas interface provides a canvas that can be rendered off screen. It is available in both the window and worker contexts.
Disabled
(available since 44)
Disabled
(available since 44)
Disabled
(available since 44)
Disabled
(available since 44)
gfx.offscreencanvas.enabled
Hit regions
Whether the mouse coordinates are within a particular area on the canvas is a common problem to solve. The hit region API allows you define an area of your canvas and provides another possibility to expose interactive content on a canvas to accessibility tools.
Disabled
(available since 30)
Disabled
(available since 30)
Disabled
(available since 30)
Disabled
(available since 30)
canvas.hitregions.enabled

WebGL draft extensions:

Disabled
(available since 67)
Disabled
(available since 67)
Disabled
(available since 67)
Disabled
(available since 67)
webgl.enable-draft-extensions

DOM

Feature Firefox Nightly Firefox Developer Edition Firefox Beta Firefox Release Preference
Unwanted notification permission mitigation
The Notifications API can now be configured to require that the user interact with the page before it can request permission to send notifications (bug 1524619).
Disabled
(available since 67)
Disabled
(available since 67)
Disabled
(available since 67)
Disabled
(available since 67)
dom.webnotifications.requireuserinteraction
HTMLMediaElement.seekToNextFrame()
Part of an experimentation process around support non-real-time access to media for tasks including filtering, editing, and so forth, the HTMLMediaElement.seekToNextFrame() advances the the current play position to the next frame in the media.
49
(Fundamental update in version 50)
49
(Fundamental update in version 50)
Disabled Disabled media.seekToNextFrame.enabled
HTMLMediaElement.allowedToPlay()
A proposed addition to HTMLMediaElement whose Boolean value is true if the browser is able to play the media without its being blocked by autoplay blocking policies, mute functionality, or the like. Details of what constitutes blocking may vary from browser to browser.
Enabled
(available since 63)
No No No
HTMLMediaElement.setSinkId
Allows you to set the sink ID of an audio output device on an HTMLMediaElement, thereby changing where the audio is being output.
Enabled Disabled Disabled Disabled media.setsinkid.enabled
Document.autoplayPolicy returns a string indicating how the browser handles requests to automatically play media (either using the autoplay property on a media element or by attempting to trigger playback from JavaScript code. The spec for this API is still being written. The value changes over time depending on what the user is doing, their preferences, and the state of the browser in general. Potential values include allowed (autoplay is currently permitted), allowed-muted (autoplay is allowed but only with no—or muted—audio), and disallowed (autoplay is not allowed at this time). Disabled
(available since 66)
Disabled Disabled Disabled dom.media.autoplay.autoplay-policy-api
GeometryUtils.getBoxQuads() (bug 917755) 31 31 Disabled Disabled layout.css.getBoxQuads.enabled
GeometryUtils.convertPointFromNode(),
GeometryUtils.RectFromNode(), and
GeometryUtils.convertQuadFromNode()
(bug 918189)
31 31 Disabled Disabled layout.css.convertFromNode.enabled
Support for multiple audio and video tracks
Implements HTMLMediaElement.audioTracks and HTMLMediaElement.videoTracks.
Firefox doesn't support multiple audio or video tracks, preventing the most common use cases for these properties to work properly. That's why these properties are not activated by default in any version.
Disabled
(Experimental implementation since version 33)
Disabled Disabled Disabled media.track.enabled
Picture-in-picture video support
A new widget in the video player allows the user to pop the video into a separate, always-on-top, picture-in-picture window.
Enabled
68
Disabled Disabled Disabled media.videocontrols.pictureinpicture
PromiseRejectionEvent and related features
Providing a way to monitor and more finely control the rejection of Promises.
Disabled
(available since 55)
Disabled Disabled Disabled dom.promise_rejection_events.enabled
Payment Request API
Provides a web API for handling web-based payments.
Disabled
(available from 55; UI currently inoperative due to a bug arising after UI tests disabled and work put on hold)
No No No dom.payments.request.enabled
Basic Card Payment API
Provides dictionaries that define data structures describing card payment types and payment responses for use in the Payment Request API. See BasicCardRequest and BasicCardResponse.
Disabled
(available since 56)
Disabled
(available since 56)
Disabled
(available since 56)
Disabled
(available since 56)
dom.payments.request.enabled
Resize Observer API
Provides the ability to detect when the size of an element has changed without having to poll the size. This allows performant, responsive changes to be made in response to the resizing of elements.
Enabled
68
No No No layout.css.resizeobserver.enabled
Window.content only available to Chrome code
The proprietary Window.content property is now only available to chrome (privileged) code, and not available to the web anymore (bug 864845).
Enabled
(since 57)
Disabled Disabled Disabled
Autodirectional Scroll Wheel
Using a single-direction scroll wheel inside a target that can only be scrolled in one direction always scrolls in that direction, regardless of the directionality of the wheel itself.
Disabled
(available since 61)
Disabled
(available since 61)
Disabled
(available since 61)
Disabled
(available since 61)
mousewheel.autodir.enabled
VisualViewport API
Provides access to information about the visual viewport of a given window.
Disabled
(available since 63)
Disabled
(available since 63)
Disabled
(available since 63)
Disabled
(available since 63)
dom.visualviewport.enabled
Removing AppCache
Simple declarative API for offlining web apps, since seen to be bad and needing to be removed. Service Worker API should be used instead.
Disabled
(since 71)
Disabled
(since 71)
Disabled
(since 71)
Enabled browser.cache.offline.enable

WebRTC and media

Feature Firefox Nightly Firefox Developer Edition Firefox Beta Firefox Release Preference
AV1 media playback support
Support for playback of video encoded using the Alliance for Open Media AOMedia Video 1 (AV1) format.
Disabled
(available since 55; disabled by default in 61)
Disabled
(available since 55; disabled by default in 61)
Disabled

Enabled in Windows in Fx66

Disabled on other plartforms

media.av1.enabled
Promise-based asynchronous append and remove of buffers to a SourceBuffer object using appendBufferAsync() and removeAsync(). Disabled
62
No No No media.mediasource.experimental.enabled

Security

Feature Firefox Nightly Firefox Developer Edition Firefox Beta Firefox Release Preference
Block plain text requests from Flash plugins on encrypted pages
A pref has been added to treat mixed OBJECT_SUBREQUESTS as active content to mitigate MitM attacks due to plugins loading "risky" content. See bug 1190623 for more details.
Enabled
(available since 59)
Enabled
(available since 59)
Enabled
(available since 59)
Disabled security.mixed_content.block_object_subrequest to true
SecurityPolicyViolationEvent, and the securitypolicyviolation event
Allows developers to programmatically respond to CSP violations.
Enabled
(available since 59)
Enabled
(available since 59)
Enabled
(available since 59)
Disabled security.csp.enable_violation_events

"Insecure connection" icon display for non-HTTPS sites
Firefox 59 has two new preferences, disabled by default, which when enabled cause a lock with a strike-through to appear in the address bar when a non-HTTPS site is loaded. This work is part of the preparation for moving to a completely HTTPS web, the idea being that in the near future insecure sites will be specially indicated, rather than secure sites.

Disabled
(available since 59)
Disabled
(available since 59)
Disabled
(available since 59)
Disabled
(available since 59)

security.insecure_connection_icon.enabled for non-private browsing

security.insecure_connection_icon.pbmode.enabled for private browsing

"Not secure" text warning for non-HTTPS sites
Following on from the above experiment, Firefox 60 has another two new preferences, disabled by default, that when enabled cause a "Not secure" text label to appear in the address bar next to the lock icon when a non-HTTP site is loaded (bug 1335970).
Disabled
(available since 60)
Disabled
(available since 60)
Disabled
(available since 60)
Disabled
(available since 60)

security.insecure_connection_text.enabled for non-private browsing

security.insecure_connection_text.pbmode.enabled for private browsing

Origin header sent for non-CORS requests
To mitigate CSRF attacks, the Origin header should be sent with non-CORS requests unless they are GET or HEAD (bug 446344). We currently only send Origin on CORS requests.

Disabled Disabled Disabled Disabled network.http.sendOriginHeader
Upgrading mixed display content
As an experiment we have implemented a preference to upgrade mixed content on secure pages. When enabled, the browser shouldn't show a mixed padlock (padlock with warning triangle) as the media requests on the page have been upgraded to using https://. In addition, the console warning is different, saying that the insecure requests have been updated to HTTPS. This feature may also prevent requests from loading if the requested media doesn't support HTTPS (bug 1435733).
Disabled
(available since 60)
Disabled
(available since 60)
Disabled
(available since 60)
Disabled
(available since 60)
security.mixed_content.upgrade_display_content
Feature-Policy
Feature Policy allows web developers to selectively enable, disable, and modify the behavior of certain features and APIs in the browser. It is similar to CSP but controls features instead of security behavior.
Enabled
(available since 65)
Disabled
(available since 65)
Disabled
(available since 65)
Disabled
(available since 65)
dom.security.featurePolicy.header.enabled
target="_blank" on anchors implying rel="noopener" (bug 1503681)
Following Safari's lead, we are experimenting with making target="_blank" set on an <a> element imply rel="noopener" as a security measure. the idea is that web developers would then have to explicitly request an opener relationship using rel="opener".
Enabled
(available since 65)
Disabled
(available since 65)
Disabled
(available since 65)
Disabled
(available since 65)
dom.targetBlankNoOpener.enabled
Cross-Origin header (requiring CORS for subresources) (bug 1525036)
Experimental header to provide control over fetching of cross-origin subresources (e.g. IFrames) to allow SharedArrayBuffer to work. See Opting into a CORS-only mode (Cross-Origin) for more details.
Disabled
(available since 67)
Disabled
(available since 67)
Disabled
(available since 67)
Disabled
(available since 67)
browser.tabs.remote.useCrossOriginPolicy

Disabling TLS 1.0 and 1.1
TLS 1.0 and 1.1 are deprecated, and all major browsers aim to remove them in Q1 2020. They are already disabled in Firefox Nightly 71 (see bug 1579270). See also TLS 1.0 and 1.1 are now deprecated, disabled in Nightly for more details.

Disabled
(since 71)
Enabled Enabled Enabled security.tls.version.min (set to 3 for TLS 1.2)

Developer Tools

Feature Firefox Nightly Firefox Developer Edition Firefox Beta Firefox Release Preference
Color scheme simulation
Adds an option to simulate different color schemes allowing to test prefer-color-scheme media queries.
Enabled
(available since 72)
Disabled Disabled Disabled devtools.inspector.color-scheme-simulation.enabled
Watchpoints
Watchpoints allow you to stop the JavaScript debugger when a DOM property is changed.
Enabled
(available since 71)
Enabled
(available since 71)
Disabled Disabled debugger.features.watchpoints

See also