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 for more details.

Disabled
(available since 53)
Disabled
(available since 53)
Disabled
(available since 53)
Disabled
(available since 53)
dom.dialog_element.enabled
inputmode attribute update
Our implementation of the inputmode global attribute has been updated as per the WHATWG spec (bug 1509527), but we still need to make other changes too, like making it available on contenteditable content. See also bug 1205133
Enabled
(available since 75)
Disabled
(available since 75)
Disabled
(available since 75)
Disabled
(available since 75)
dom.forms.inputmode

CSS

Feature Firefox Nightly Firefox Developer Edition Firefox Beta Firefox Release Preference
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.

See bug 1099557 for more details.
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 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 for more details.
Disabled
(available since 50)
Disabled
(available since 50)
Disabled
(available since 50)
Disabled
(available since 50)
layout.css.initial-letter.enabled
Conic gradients
Rendering of color transitions around a center point (rather than radiating from the center).

See bug 1175958 for more details.
Disabled
(available since 75)
Disabled
(available since 75)
Disabled
(available since 75)
Disabled
(available since 75)
layout.css.conic-gradient.enabled and gfx.webrender.all
:focus-visible
Allows focus styles to be applied to elements like buttons and form controls, only when they are focused using the keyboard (e.g. when tabbing between elements), and not when they are focused using a mouse or other pointing device.

See bug 1617600 for more details.
Disabled
(available since 75)
Disabled
(available since 75)
Disabled
(available since 75)
Disabled
(available since 75)
layout.css.focus-visible.enabled
<number> in <ratio>
Allowing single numbers in media queries with aspect ratio.

See bug 1565562 for more details.
Disabled
(available since 70)
Disabled
(available since 70)
Disabled
(available since 70)
Disabled
(available since 70)
layout.css.aspect-ratio-number.enabled
backdrop-filter
Applies filter effects to the area behind an element.

See bug 1178765 for more details.
Disabled
(available since 70)
Disabled
(available since 70)
Disabled
(available since 70)
Disabled
(available since 70)
layout.css.backdrop-filter.enabled
Masonry layout
Adds support for a masonry style layout based on grid layout where one axis has a masonry layout while having normal grid layout on the other.
This allows to create gallery style layouts like on Pinterest.

See bug 1607954 for more details.
Disabled
(available since 77)
Disabled
(available since 77)
Disabled
(available since 77)
No layout.css.grid-template-masonry-value.enabled
:is() and :where()
Pseudo-class functions that allow you to specify a comma-separated list of selectors; any one of those selectors will then match for the purposes of the overall selector, meaning that you can do multiple selections more efficiently. The diffference between the two is that :is() counts towards the specificity of the overall selector (it takes the specificity of its most specific argument), whereas :where() has a specificity value of 0.
Enabled
(available since 77)
Disabled
(available since 77)
Disabled
(available since 77)
No layout.css.is-where-selectors.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.

APIs

Canvas, WebGL, and WebGPU

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
OES_fbo_render_mipmap for attaching any level of a texture to a framebuffer object.
Disabled
(available since 67)
Disabled
(available since 67)
Disabled
(available since 67)
Disabled
(available since 67)
webgl.enable-draft-extensions
WebGPU
The new API for graphics and computation on the Web.
See the work-in-progress specification, also bug 1602129 for our progress.
Disabled (available since 73) Disabled (available since 73) Disabled (available since 73) Disabled (available since 73) dom.webgpu.enabled

DOM

Feature Firefox Nightly Firefox Developer Edition Firefox Beta Firefox Release Preference
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.

See bug 934425 for more details.
Disabled (available since 64) Disabled (available since 64) Disabled (available since 64) Disabled (available since 64) media.setsinkid.enabled
Document.autoplayPolicy
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).

See bug 1506289 for more details.
Disabled
(available since 66)
Disabled
(available since 66)
Disabled
(available since 66)
Disabled
(available since 66)
dom.media.autoplay.autoplay-policy-api
GeometryUtils.getBoxQuads()
Returns the CSS boxes for a Node relative to any other Node (or viewport).

See bug 917755 for more details.
Enabled
(Available since 31)
Disabled
(Available since 31)
Disabled
(Available since 31)
Disabled
(Available since 31)
layout.css.getBoxQuads.enabled
GeometryUtils.convertPointFromNode(),
GeometryUtils.convertRectFromNode(), and
GeometryUtils.convertQuadFromNode()

Maps a point, rectangle or quadruple from a given node to another one.

See bug 918189 for more details.
Enabled
(Available since 31)
Disabled
(Available since 31)
Disabled
(Available since 31)
Disabled
(Available since 31)
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.

See bug 1057233 for more details.
Disabled
(Available since version 33)
Disabled
(Available since version 33)
Disabled
(Available since version 33)
Disabled
(Available since version 33)
media.track.enabled
Payment Request API
Provides a web API for handling web-based payments.

The UI is currently inoperative due to a bug arising after UI tests. Disabled and work put on hold.

See bug 1318984 for more details.
Disabled
(available since 55)
Disabled
(available since 55)
Disabled
(available since 55)
Disabled
(available since 55)
dom.payments.request.enabled
dom.payments.request.supportedRegions
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
dom.payments.request.supportedRegions
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.

See bug 1358017 for more details.
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
Constructable stylesheets
Allows to create CSSStyleSheets directly without having to add the stylesheet to the HTML. This is especially important for allowing stylesheets to be reused in Shadow DOM.

See bug 1520690 for more details.
Disabled
(available since 73)
Disabled
(available since 73)
Disabled
(available since 73)
Disabled
(available since 73)
layout.css.constructable-stylesheets.enabled
Global beforeinput event
Sent immediately before the value of an editable element changes. These events are sent to control elements (such as <input> elements, as well as to any element whose contenteditable option is enabled.
Disabled
(available since 74)
Disabled
(available since 74)
Disabled
(available since 74)
Disabled
(available since 74)
dom.input_events.beforeinput.enabled

WebRTC and media

Feature Firefox Nightly Firefox Developer Edition Firefox Beta Firefox Release Preference
Promise-based asynchronous append and remove of buffers to a SourceBuffer object using appendBufferAsync() and removeAsync(). Disabled
(available since 62)
Disabled
(available since 62)
Disabled
(available since 62)
Disabled
(available since 62)
media.mediasource.experimental.enabled
Media Session API
Customize the handling of media-related notifications, mnage events and data useful for presenting a media playback user interface, and obtain metadata about playing media files.
Enabled
(available since 71)
Disabled
(available since 71)
Disabled
(available since 71)
Disabled
(available since 71)

dom.media.mediasession.enabled

AVIF (AV1 Image File Format) experimental support Disabled
(available since 77)
Disabled
(available since 77)
Disabled
(available since 77)
Disabled
(available since 77)
image.avif.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.
Disabled
(available since 59)
Disabled
(available since 59)
Disabled
(available since 59)
Disabled
(available since 59)
security.mixed_content.block_object_subrequest
"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

See bug 1335970 for more details.
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

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.

See bug 1435733 for more details.
Disabled
(available since 60)
Disabled
(available since 60)
Disabled
(available since 60)
Disabled
(available since 60)
security.mixed_content.upgrade_display_content
target="_blank" on anchors implying rel="noopener"
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".

See bug 1503681 for more details.
Enabled
(available since 65)
Enabled
(available since 65)
Enabled
(available since 65)
Disabled
(available since 65)
dom.targetBlankNoOpener.enabled
FTP support disabled in Firefox
For security reasons, Mozilla is planning to remove the FTP support from Firefox in 2021. See FTP support will be removed for more details, and bug 1622409 for implementation progress.
Disabled
(since 77)
Enabled Enabled Enabled network.ftp.enabled

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.

See bug 1550804 for more details.
Disabled
(available since 72)
Disabled
(available since 72)
Disabled
(available since 72)
Disabled
(available since 72)
devtools.inspector.color-scheme-simulation.enabled
Instant evaluation
Displays the results of the things you type into the console while you're typing.

See bug 1460518 for more details.
Enabled
(available since 73); in Settings menu since 74.
Enabled
(available since 73)
Enabled
(available since 73)
Disabled
(available since 73)
devtools.webconsole.input.eagerEvaluation
Execution context selector
Displays a button within the command line that allows to switch the context, in which the entered expression will be executed.

See bug 1605154 for more details.
Disabled
(available since 75)
Disabled
(available since 75)
Disabled
(available since 75)
Disabled
(available since 75)
devtools.webconsole.input.context
Asynchronous call stacks
Firefox 75 (Nightly Edition) and 76 (Developer Edition) can now display accurate call stacks when running asynchronous code, so the path through your code that got you to your current state. Currently call stacks are live; captured call stacks (which will make them work in cases not yet supported). See bug 981514 for further information.
Enabled
(available since 75)
Disabled
(available since 75)
No No devtools.debugger.features.async-live-stacks

Double-tap simulation in Responsive Design Mode
A mouse double-click simulates a touch double-tap, to trigger zooming behavior.

Disabled (available since 76) Disabled (available since 76) No No devtools.responsive.touchGestureSimulation.enabled
Compatibility panel
A side panel of the Page Inspector showing browser compatibility information.

See bug 1584464 for more details.
Enabled (available since 71) Enabled (available since 71) Disabled
(available since 71)
Disabled
(available since 71)
devtools.inspector.compatibility.enabled

See also