Firefox 12 for developers - Mozilla

Firefox 12 for developers
=========================

Firefox 12 was shipped on April 24, 2012. This page summarizes the changes in Firefox 12 that affect developers. This article provides information about the new features and key bugs fixed in this release, as well as links to more detailed documentation for both web developers and add-on developers.

Changes for Web developers
--------------------------

### HTML

* The `title` attribute now supports newline characters to allow multi-line tooltips.
* If JavaScript is disabled, the `<canvas>` element was being rendered instead of showing the fallback content as per the specification. Now the fallback content is rendered instead.
* The `crossorigin` attribute is now supported on `<video>`.
### CSS

* Support for the `text-align-last` property has been added (prefixed).
### JavaScript

* Support for sharp variables (a Netscape non-standard extension) has been dropped.
* `ArrayBuffer.prototype.slice()` has been implemented.
### DOM

* `DOMParser` now supports parsing of HTML document fragments.
* `XMLHttpRequest` now supports timeouts using the `timeout` property and "timeout" event, as well as the `ontimeout` event handler on the `XMLHttpRequestEventTarget` interface.
* `XMLHttpRequest` can now load from `data:` URLs.
* When downloading large amounts of data, `XMLHttpRequest` progress event handlers are now called periodically with the `responseType` set to "moz-blob" and the response being a `Blob` containing all of the data received so far. This lets progress handlers begin processing data without having to wait for it all to arrive.
* Gecko now supports multi-touch (instead of just single touches at a time) on Android.
* While editing text using an IME, the `input` event is now sent whenever the contents of the element being edited have been changed; this happens after the `compositionupdate` event has been sent to indicate that the IME's text has been changed. You can use the `input` event handler, therefore, to monitor changes to the actual content of the element.
* `DOMError` as defined in the DOM 4 specification has been implemented.
* The `Document.createNodeIterator()` method has been updated to match the DOM4 specification. This makes the `whatToShow` and `filter` parameters optional and removes the non-standard fourth parameter, `entityReferenceExpansion`.
* The `Blob` interface's `slice()` method was affected by a bug that prevented it from properly accepting `start` and `end` values outside the range of a signed 64-bit integer; this has been fixed.
* The `element.getBoundingClientRect()` method now considers effect of CSS transforms when computing the element's bounding rectangle.
* The `crossOrigin` property is now supported by `HTMLMediaElement`.

#### New WebAPIs

* Network Information API: Experimental support for `window.navigator.connection` has been added (prefixed).
* WebTelephony API: `window.navigator.mozTelephony` has been implemented and provides support for dialing, answering, and managing phone calls on a device.
* WebSMS API: `window.navigator.mozSms` is now available for mobile devices to send SMS text messages.
* Screen brightness API: `window.screen.mozEnabled` and `window.screen.mozBrightness` have been added to control the device's screen.
### SVG

* Firefox now implements the `SVGTests` DOM API, see Firefox bug 607854
* The `SVGStringList` DOM interface support the non-standard `length` property see Firefox bug 711958
### MathML

* To control the directionality of MathML formulas, the `dir` attribute is now supported on the `<math>`, `<mrow>`, and `<mstyle>` elements as well as on MathML Token Elements. This is particularly important for some Arabic mathematical notations.
* The alignment attribute `align` defined in MathML3 has been implemented for `<munder>`, `<mover>`, and `<munderover>`.
### Networking

* Previously, Gecko reported the close code `CLOSE_NORMAL` when a WebSocket channel was closed due to an unexpected error, or if it was closed due to an error condition that the specification doesn't cover. Now `CLOSE_GOING_AWAY` is reported instead.
### Developer tools

* The Web Console now caches error messages and log entries added using `console.log()` if the console isn't currently open, and displays them when the console is opened.
* You can now reset the zoom level, panning, and rotation in the 3D view by pressing the "r" key.
* You can now hide nodes in the 3D view by pressing the "x" key after selecting them.
* The source editor has a several new editing features and keyboard shortcuts; see Using the Source Editor for details

Mozilla has been working on integrating its own Web developer tools that complement the popular Firebug add-on. You can get more information about these tools as well as see a list of resources external to Firefox that will help you with your Web development. The entire list is located at Web developer tools.

### Miscellaneous changes

* The GEOSTD8 character set, which was never fully supported, is no longer supported at all.
Changes for Mozilla and add-on developers
-----------------------------------------

### JavaScript code modules

#### source-editor.jsm

* The `resetUndo()` method was added; this lets you clear the undo stack.
* The source editor now offers methods for providing search capability: `find()`, `findNext()`, and `findPrevious()`.
### XUL

* The definition of the values for the `chromemargin` attribute has changed slightly, to make it easier to make cross-platform XUL code look good on platforms with different default window border widths.
### XPCOM

* `nsISupports` proxies are no longer supported. You should be using runnables instead.
* Firefox 11 changed the behavior of `Components.utils.getWeakReference()` to throw an exception when the object reference is null; the previous behavior of silently failing has been restored.
### XPConnect

* The `PRUint64` data type was incorrectly essentially identical to `PRint64` when used with XPConnect. This has been fixed.
### Interface changes

* The `nsIScreen_MOZILLA_2_0_BRANCH` interface has been merged into `nsIScreen`. The APIs defined in that interface (for controlling minimum screen brightness) had not previously been documented, but now they are.
* The `nsIScriptError2` interface has been merged into `nsIScriptError`.
* `nsIDownloadManager.addDownload()` is now handled asynchronously rather than synchronously.
* The `imgIContainerObserver.frameChanged()` method now receives as its first parameter an `imgIRequest` object identifying the corresponding request.
* The `nsIDOMWindowUtils.sendTouchEvent()` method has been added to allow synthesizing touch events.
* You can now scroll the specified content to the vertical center of the view by specifying `SCROLL_CENTER_VERTICALLY` as the scroll constant when calling `nsISelectionController.scrollSelectionIntoView()`.
* The new `nsIMemoryMultiReporter.explicitNonHeap` attribute has been added; this is a more efficient way to obtain the sum of all of the multi-reporter's measurements that have a path that starts with "explicit" **and** are of the kind `KIND_NONHEAP`.
* The `nsIDOMWindowUtils.paintingSuppressed` attribute has been added; this boolean value indicates whether or not painting is currently suppressed on the window. This is used on mobile to prevent bouncy rendering that occurs when attempts to draw the page begin before enough content is available to do so smoothly.
* The `nsIDocCharset` and `nsIDocumentCharsetInfo` interfaces have been merged into `nsIDocShell`. As part of this work, the old `forcedDetector` attribute has been removed; it never did anything.
### SpiderMonkey

* `JSThread` has been eliminated.
* `JSThreadData` has been merged into `JSRuntime`.
### Building

* When building on Windows, you must have the Windows 7 SDK installed.
### Other changes

* The editor component (known as Midas) now only accepts events from privileged code.
See also
--------

* Firefox 11 for developers
* Firefox 10 for developers
* Firefox 9 for developers
* Firefox 8 for developers
* Firefox 7 for developers
* Firefox 6 for developers
* Firefox 5 for developers
* Firefox 4 for developers
* Firefox 3.6 for developers
* Firefox 3.5 for developers
* Firefox 3 for developers
* Firefox 2 for developers
* Firefox 1.5 for developers


Firefox 2 for developers - Mozilla

Firefox 2 for developers
========================

New developer features in Firefox 2
-----------------------------------

Firefox 2 introduces a vast array of new features and capabilities. This article provides links to articles covering the new features.

### For website and application developers

Microsummaries

Microsummaries are regularly-updated succinct compilations of the most important information on web pages. Site and third-party developers can both provide them, and users can choose to display microsummaries instead of static titles when they bookmark pages with microsummaries.

Creating a Microsummary

A tutorial on creating a microsummary generator.

Microsummary XML grammar reference

A reference guide to the XML grammar used for creating microsummary generators.

Creating OpenSearch plugins for Firefox

Firefox 2 supports the OpenSearch search engine format.

Creating MozSearch plugins

Firefox 2 supports MozSearch, a search plugin format based on OpenSearch, but intended only for internal use.

Supporting search suggestions in search plugins

How to make your MozSearch plugin support search suggestions, which appear in a drop-down list while typing in the search bar.

New in JavaScript 1.7

Firefox 2 supports JavaScript 1.7, which includes new features including `let`, destructuring assignment, generators and iterators, and array comprehensions.

WHATWG Client-side session and persistent storage (aka DOM Storage)

Client-side session and persistent storage allows web applications to store structured data on the client side.

SVG in Firefox

Firefox 2 improves Scalable Vector Graphics (SVG) support, implementing the `<textPath>` element and adding support for some attributes not previously supported.

Controlling spell checking in HTML forms

Firefox 2 includes support for inline spell checking in text areas and text fields. This article describes how to write your HTML to enable and disable spell checking on individual form elements.

Security in Firefox 2

Firefox 2 has changes to which security protocols are enabled by default.

### For XUL and extension developers

Updating extensions for Firefox 2

Covers how to get your existing extensions to work with Firefox 2.

Session store API

Contributing items to be saved and restored across sessions in Firefox.

Feed content access API

API that lets developers access and parse RSS and Atom feeds.

SAX support

Event-based XML parser API.

Adding search engines from web pages

JavaScript code can instruct Firefox to install a new search engine plugin, which can be written using either OpenSearch or Sherlock format.

Using spell checking in XUL

How to check the spelling of words or get a list of suggested spellings from code.

Adding phishing protection data providers

It's possible to enhance Firefox's phishing protection by adding additional data providers for the safe browsing system.

Adding feed readers to Firefox

You can add new feed readers to Firefox, whether web-based or application-based.

Storage

Firefox 2 introduces mozStorage, an sqlite based database architecture.

Theme changes in Firefox 2

Discusses the changes needed to update existing themes to work in Firefox 2.

Textbox Improvements (Firefox 2.0.0.1 and higher only)

The `<textbox>` now has a `reset()` method to reset the value of the textbox to the default value. The `defaultValue` property may be used to retrieve and modify the default value of the textbox (Firefox bug 312867). Supports an `editor` property to get the internal `nsIEditor` for the text field (Webkit bug 312867).

New features for end users
--------------------------

Firefox 2 provides an enhanced version of the same clean user interface offered by previous versions, with improved security features to make your online experience safer and more convenient than ever.

### User experience

* **Inline spell checking for text areas** lets you compose with confidence in web forms.
* **Microsummaries** provide a way to create bookmarks that display information pulled from the site they refer to, updated automatically. Great for stock tickers, auction monitoring, and so forth.
* **Extension Manager user interface** has been enhanced.
* **Search engine manager** lets you rearrange and remove search engines shown in the search bar.
* **Tabbed browsing enhancements** include adding close buttons to each tab, adjustments to how Firefox decides which tab to bring you to when you close the current tab, and simplified preferences for tabs.
* **Autodetection of search engines** allows search engines that offer plugins for the Firefox search bar to offer to install their plugins for you.
* **Search suggestions** allow search engines to offer suggested search terms based on what you've typed so far in the search bar.
### Security and privacy

* **Phishing Protection** to warn users when the website you're looking at appears to be a forgery.
See also
--------

* Firefox 2 for developers
* Firefox 1.5 for developers


Firefox 23 for developers - Mozilla

Firefox 23 for developers
=========================

Changes for Web developers
--------------------------

### Security

* Mixed content blocking. Firefox will no longer load non-secure (http) resources on secure (https) pages (Firefox bug 834836).
* The standard syntax of CSP 1.0 policies are now implemented and enforced by default.
### Developer Tools

* A Network Panel has been added to the developer tools. This is more detailed view than the "Net" view option in the Web Console.
* Web Console has been renamed "Console", and includes the option to filter security errors/warnings.
* The new Toolbox Options lets you disable features, change light/dark theme, or enable Chrome/Remote debugging.
### HTML

* The `<blink>` element support is now completely dropped. The `<blink>` tag now implements the `HTMLUnknownElement` interface (Firefox bug 857820).
* The `range` type of the `<input>` element (`<input type="range">`) has been switched on by default (Firefox bug 841950).
### JavaScript

* The `Object.defineProperty` method can now be used to redefine the `length` property of an `Array` object.
* The option to disable JavaScript, including the options to allow moving windows/replace context menu, have been removed. You may still disable JavaScript by double clicking the "javascript.enabled" option in about:config.
### DOM

* D3E `KeyboardEvent.key` is now supported, but only for non-printable keys (Firefox bug 842927).
* The `title` attribute of `DOMImplementation.createHTMLDocument` is now optional as per updated DOM specification.
* The ability to add a sidebar panel (`window.sidebar.addPanel`) has been dropped (Firefox bug 691647).
* The unprefixed `Window.requestAnimationFrame` and `Window.cancelAnimationFrame` methods has been added (Firefox bug 704063). The unprefixed `Window.requestAnimationFrame` receives a `DOMHighResTimeStamp` as argument; the prefixed version receives a timestamp in milliseconds (Firefox bug 753453).
* The text argument for `window.alert` and `window.confirm` is now optional (Firefox bug 861605).
* The `HTMLMediaElement.initialTime` property, removed from the spec, is no longer supported (Firefox bug 742537).
* The `AnimationEvent()` constructor has been added (Firefox bug 848293).
* The `AnimationEvent.pseudoElement` property has been implemented (Firefox bug 848293).
* The `TransitionEvent()` constructor has been added (Firefox bug 848291).
* The `TransitionEvent.pseudoElement` property has been implemented (Firefox bug 848291).
* The non-standard `TransitionEvent.initTransitionEvent()` and `AnimationEvent.initAnimationEvent()` have been removed (Firefox bug 868751).
### WebRTC

* Instead of including usernames in the `RTCIceServer.url` property (such as stun:username@stunserver.example.com), you now need to use the new `RTCIceServer.username` property.
### CSS

* The blink effect for `text-decoration: blink;` has no more effect, but is still a valid value (Firefox bug 857820).
* In-flow `::after` and `::before` pseudo-elements are now flex items (Firefox bug 867454).
* The way to compute viewport units has been changed. In conjunction with `overflow:auto`, space taken by eventual scrollbars is not subtracted from the viewport, whereas in the case of `overflow:scroll`, it is. (Firefox bug 811403)
### MathML

* Negative widths for the `<mspace>` element has been implemented (Firefox bug 717546).
* The `<semantics>` element now determines the visible child as described in the MathML3 specification.
Changes for addon and Mozilla developers
----------------------------------------

### Firefox developer tools

Addons that overlay chrome://browser/content/debugger.xul must now overlay chrome://browser/content/devtools/debugger.xul. You may add references to both these files in chrome.manifest for compatibility.

See also
--------

* Firefox 23 Aurora Notes
### Older versions

* Firefox 22 for developers
* Firefox 21 for developers
* Firefox 20 for developers
* Firefox 19 for developers
* Firefox 18 for developers
* Firefox 17 for developers
* Firefox 16 for developers
* Firefox 15 for developers
* Firefox 14 for developers
* Firefox 13 for developers
* Firefox 12 for developers
* Firefox 11 for developers
* Firefox 10 for developers
* Firefox 9 for developers
* Firefox 8 for developers
* Firefox 7 for developers
* Firefox 6 for developers
* Firefox 5 for developers
* Firefox 4 for developers
* Firefox 3.6 for developers
* Firefox 3.5 for developers
* Firefox 3 for developers
* Firefox 2 for developers
* Firefox 1.5 for developers


Firefox 68 for developers - Mozilla

Firefox 68 for developers
=========================

This article provides information about the changes in Firefox 68 that will affect developers. Firefox 68 was released on July 9, 2019.

Changes for web developers
--------------------------

### Developer tools

#### Browser/web console

* The Web console now shows more information about CSS warnings, including a node list of the DOM elements that used the rule (Firefox bug 1093953).
* You can now filter content in the Web console using regular expressions (Firefox bug 1441079).
* The Browser console now allows you to show or hide messages from the content process by setting or clearing the checkbox labeled *Show Content Messages* (Firefox bug 1260877).

#### JavaScript debugger

* You can now Search in all files in the current project from the debugger by pressing `Shift` + `Ctrl` + `F` (Windows or Linux) or `Shift` + `Cmd` + `F` (macOS) (Firefox bug 1320325).

#### Network monitor

* The Network monitor request list now allows you to block a specific URL (Firefox bug 1151368).
* You can now resend a network request without editing the method, URL, parameters, and headers, using the Resend command on the context menu (Firefox bug 1422014).
* The context menu of the Network monitor Headers tab now allows you to copy all or some of the header information to the clipboard in JSON format (Firefox bug 1442249).

#### Page inspector

* A button has been added to the rules panel of the Page inspector that allows you to toggle the display of any print media queries (Firefox bug 1534984).
* The fonts panel now includes a slider to modify `letter-spacing` (Firefox bug 1536237).
* A warning icon appears next to unsupported CSS properties or rules that have invalid values, to help you understand why certain styles are not being applied (Firefox bug 1306054).

#### Storage inspector

* You can now delete local and session storage entries by selecting the item in the storage inspector and pressing the backspace key (Firefox bug 1522893).

#### Other

* The Accessibility Inspector now includes a new *Check for issues* feature, which will include a number of audit tools to highlight accessibility problems on your web pages. The first available check is *contrast*, for highlighting color contrast problems.
* The preference that controls the visibility of internal extensions (system add-ons and hidden extensions) on the about:debugging page has been changed from `devtools.aboutdebugging.showSystemAddons` to `devtools.aboutdebugging.showHiddenAddons` (Firefox bug 1544372).
* Responsive design mode has been redesigned — the *Device Settings* dialog (device selection menu > *Edit List…*) is now more intuitive and simpler to use (Firefox bug 1487857).

#### Removals

* The "Enable add-on debugging" checkbox has been removed from the about:debugging page (Firefox bug 1544813).
### HTML

* The `<track>` element — represented by `HTMLTrackElement` — now receives a `cuechange` event in addition to the `TextTrack` itself, if the text track is a contained by a media element (Firefox bug 1548731).
* `<link>` elements support the `disabled` attribute again, albeit with different behavior. When `disabled` is set on a `<link>` element along with `rel="stylesheet"`, the referenced stylesheet is not loaded during page load, and will be loaded on demand when the `disabled` attribute is changed to `false` or removed (Firefox bug 1281135).

#### Removals

* `<meta http-equiv="set-cookie">` is no longer supported (Firefox bug 1457503).
### CSS

* CSS Scroll Snapping has been updated to the latest version of the specification (Firefox bug 1312163) and (Firefox bug 1544136), this includes:
    + The `scroll-padding` properties (Firefox bug 1373832)
    + The `scroll-margin` properties (Firefox bug 1373833)
    + `scroll-snap-align` (Firefox bug 1373835)
* The `-webkit-line-clamp` property has been implemented for compatibility with other browsers (Firefox bug 866102).
* Support has been added for the `::marker` pseudo-element (Firefox bug 205202) and animation for `::marker` pseudos (Firefox bug 1538618)
* We changed `currentcolor` to be a computed value (except for the `color` property) (Firefox bug 760345).
* Support has been fixed for the `ch` length unit so it now matches the spec (fallback for no '0' glyph, vertical metrics) (Firefox bug 282126)
* The `counter-set` property has been implemented. (Firefox bug 1518201).
* We now implement list numbering using a built-in "list-item" counter; this fixes list numbering bugs (Firefox bug 288704).
* Selector matching and parsing support has been implemented for `::part()` (Firefox bug 1545430) and (Firefox bug 1545425).
* CSS Transforms are now supported in indirectly rendered things e.g.) `<mask>`, `<marker>`, `<pattern>`, `<clipPath>` (Firefox bug 1323962).
* While we're keeping the prefixed versions of the various gradient properties (`gradient/linear-gradient()`, `gradient/radial-gradient()`, and `gradient/repeating-radial-gradient()` available for compatibility reasons, we have revised how they're parsed so that they're handled much more like the non-prefixed versions. This means that certain existing styles won't work correctly.
 In particular, the complicated syntax taking both an angle and a position will no longer work, and the `to` keyword in the `<side-or-corner>` parameter is not required for the prefixed gradient properties. You are encouraged to use the standard, non-prefixed gradient properties instead, as they're now widely supported (Firefox bug 1547939).

#### Removals

* `scroll-snap-coordinate`, `scroll-snap-destination`, `scroll-snap-type-x` and `scroll-snap-type-y` have been removed.
* The `scroll-snap-type` property has become a longhand, so the old shorthand syntax like `scroll-snap-type:mandatory` will stop working.
### SVG

*No changes.*

### JavaScript

* The new `BigInt` primitive is enabled by default (Firefox bug 1527902).
* String generic methods have been removed (Firefox bug 1222552).
### APIs

#### CSS Object Model (CSSOM)

* The legacy `rules` property and `addRule()` and `removeRule()` methods have been added to the `CSSStyleSheet` interface. These were introduced by Internet Explorer 9 and have never managed to quite be stamped out, so they have been added to improve compatibility with the small percentage of sites that still use them (Firefox bug 1545823).

#### DOM

* The Visual Viewport API has now been enabled by default on Android (Firefox bug 1512813). Adding this API to desktop versions of Firefox is being tracked in Firefox bug 1551302.
* The `Window` feature `noreferrer` is now supported; if specified, the new window's content is loaded without sharing the hostname, IP address, URL, or other identifying information about the host device (Firefox bug 1527287).
* The `decode()` method on `HTMLImageElement` is now implemented. This can be used to trigger loading and decoding of an image prior to adding it to the DOM (Firefox bug 1501794).
* `XMLHttpRequest` has been updated to no longer accept the non-standard `moz-chunked-arraybuffer` value for `responseType`. Code still using it should be updated to use the Fetch API as a stream (Firefox bug 1120171).
* `XMLHttpRequest` now outputs a warning to console if you perform a synchronous request while handling an `unload`, `beforeunload`, or `pagehide` event (Firefox bug 980902).
* The `cookie` property has moved from the `HTMLDocument` interface to the `Document` interface, allowing documents other than HTML to use cookies (Firefox bug 144795).
* The `HTMLElement.focus()` and `SVGElement.focus()` methods now accept an optional object that may contain a boolean `preventScroll` option specifying whether or not to block the browser from scrolling the newly-focused element into view (Firefox bug 1374045).

#### DOM events

* Firefox for Android no longer incorrectly sends a `resize` event until after the first frame is painted; this improves web compatibility with sites that don't expect this event to occur (Firefox bug 1528052).
* The dispatching of events for non-primary mouse buttons has been made to more closely follow the specification; the `click` event is no longer sent when non-primary buttons are clicked, instead using `auxclick`. In addition, `dblclick` no longer fires for non-primary buttons (Firefox bug 1379466).
* The proprietary `mozPressure` property has been deprecated, and will now trigger a warning in the console (Firefox bug 1165211).

#### Media, Web Audio, and WebRTC

* Due to changes in the Google Play store's policies, starting with Firefox 68 for Android, the OpenH264 codec used to handle AVC/H.264 video in WebRTC connections can no longer be downloaded and installed. Therefore, fresh installs of Firefox on Android devices no longer support AVC in WebRTC calls. If you upgrade from earlier versions of Firefox and already have the codec downloaded, it will continue to work. This does *not* affect other platforms. For more details, see this article on SUMO or Firefox bug 1548679.
* WebRTC has been updated to recognize that a `null` candidate passed into the `icecandidate` event handler, indicating the receipt of a candidate, instead indicates that there are no further candidates coming; when this happens the ICE gathering (`iceGatheringState`) state reaches `complete` (Firefox bug 1318167).
* The `RTCRtpReceiver` methods `getContributingSources()` and `getSynchronizationSources()` now support video tracks; previously they only worked on audio (Firefox bug 1534466).
* The Web Audio API `MediaStreamTrackAudioSourceNode` interface is now supported, as is the method `AudioContext.createMediaStreamTrackSource()` (Firefox bug 1324548).
* `RTCDataChannel.negotiated` is now implemented (Firefox bug 1529695).
* The `MediaStreamAudioSourceNode()` constructor has been updated to match the current specification's definition that the "first audio track" in the stream is the track whose ID comes first in lexicographical order (Firefox bug 1324548).
* `getUserMedia()` may no longer be used from a non-secure context; attempting to do so now throws a `NotAllowedError` exception. Secure contexts are those loaded using HTTPS, those located using the `file:///` scheme, and those loaded from `localhost`. For now, if you must, you can re-enable the ability to perform insecure calls to `getUserMedia()` by setting the preference `media.getusermedia.insecure.enabled` to `true` (Firefox bug 1335740).

**Note:** In the future, Firefox will also remove the `navigator.mediaDevices` property on insecure contexts, preventing all access to the `MediaDevices` APIs. **This is already the case in Nightly builds.**

#### Removals

* Removed the non-standard `XMLDocument.load()` method (Firefox bug 332175).
* Removed the non-standard `XMLDocument.async` property (Firefox bug 1328138).
* The `RTCIceServer.credentialType` `token` value has been removed (Firefox bug 1529595).
### HTTP

* The HTTP `Clear-Site-Data` header no longer supports the `executionContexts` directive. This was removed due to problems with interactions between interconnections among different kinds of data at different points in the navigation process and the way the specification is designed. It has been proposed that this directive be removed from the specification for this reason, among others (Firefox bug 1548034).

#### Removals

* The `Content-Security-Policy` directive `require-sri-for` is no longer supported due to concerns about its standardization status. It was previously available only behind a preference, which was off by default (Firefox bug 1386214).
### Security

* Due to CVE-2019-11730: Same-origin policy treats all files in a directory as having the same-origin, changes have been made so that Firefox now treats files in the same directory as being from different origins. This has a number of side-effects on what will work in documents loaded via file:// URLs (see Firefox bug 1558299 for useful background research). For example, workers can no longer be loaded.
### WebDriver conformance (Marionette)

#### Bug fixes

* If `WebDriver:SwitchToWindow` changes the selection to a different window it now waits for its `focus` and `activate` events before returning (Firefox bug 1335085).
* Fixed the `TypeError: this.tabModal is null` failure, which sometimes appeared when interacting with modal dialogs or user prompts (Firefox bug 1538782)

#### Other

* Disabled the feature to force unloading background tabs on low memory conditions, to prevent top-level browser contexts from magically disappearing (Firefox bug 1553748).
* Disabled privileged content processes that caused HTTP authentication dialogs not to appear when navigating to a website after opening a new tab (Firefox bug 1558763).
### Plugins

*No changes.*

Changes for add-on developers
-----------------------------

### API changes

* The `proxy.register()` and `proxy.unregister()` functions have been deprecated and will be removed from Firefox 71 (Firefox bug 1545811).
* A `boolean` flag, `incognito`, has been added to the proxy.RequestDetails. object. When `true`, it indicates that this was a private browsing request (Firefox bug 1545163).
* The webRequest.RequestFilter parameters can include an incognito parameter. If provided, requests that do not match the incognito state (`true` or `false`) will be filtered out (Firefox bug 1548177).
* A `string` value, `cookieStoreId`, representing the cookie store ID of the current context, has been added to the proxy.RequestDetails. object (Firefox bug 1545420).
* When an add-on attempts to add a bookmark folder to the root folder, the resulting error message is now much more intuitive (Firefox bug 1512171).
* The promise returned by `browser.tabs.duplicate()` now resolves immediately, before the tabs are completely loaded (Firefox bug 1394376).
* Support has been added for chrome.storage.managed, allowing web extension settings to be implemented via enterprise policy (Firefox bug 1230802).
* `proxyAuthorization` and `connectionIsolation` in `proxy.onRequest` now apply only to HTTPS proxies (Firefox bug 1549368.
### Manifest changes

*No changes.*

See also
--------

* Hacks release post: Firefox 68: BigInts, Contrast Checks, and the QuantumBar
Older versions
--------------

* 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
* Firefox 37 for developers


Firefox 122 for developers - Mozilla

Firefox 122 for developers
==========================

This article provides information about the changes in Firefox 122 that affect developers. Firefox 122 is the current Beta version of Firefox and ships on January 23, 2024.

Changes for web developers
--------------------------

### Developer Tools

### HTML

* `<hr>` elements are now allowed as children of `<select>` elements. This is a new feature that improves the readability of select lists with many options. (Firefox bug 1830909).
* The `type` HTML attribute no longer has an effect if set to `none`, `disc`, `circle` or `square` in `<ol>` and no longer has an effect if set to `1`, `a`, `A`, `i` or `I` in `<ul>`. As `type` is a deprecated attribute for `<ul>` and `<ol>` lists, these should be styled with `list-style-type` CSS property instead. (Firefox bug 1868087).

#### Removals

### CSS

* The CSS `offset-position` property is now available by default. It defines the initial position of an element on a path. (Firefox bug 1598152)
* The various methods for defining a CSS `offset-path` — including `<basic-shape>`, `<coord-box>`, and `url()` — are now enabled by default. (Firefox bug 1598159)
* The CSS `ray()` function is now available by default. You can use this function to define an `offset-path` as a line segment that begins from an `offset-position` and extends in the direction of the specified angle. (Firefox bug 1598151)
* The `clip-path` and `offset-path` properties now accept `rect()` and `xywh()` shape functions. These `<basic-shape>` values allow the clipping and offsetting of elements with a rectangle defined by distance from the edge of the element (`rect()`) or coordinates and size (`xywh()`). (Firefox bug 1868722).

#### Removals

### JavaScript

* The `ArrayBuffer.prototype.transfer()` and `ArrayBuffer.prototype.transferToFixedLength()` methods can now be used to transfer ownership of memory from one `ArrayBuffer` to another. After transfer, the original buffer is detached from its original memory and hence unusable; the state can be checked using `ArrayBuffer.prototype.detached`. (See Firefox bug 1865103 for more details.)

#### Removals

### SVG

#### Removals

* Removed support for `data:` URLs in SVG `<use>` elements and via the `SVGUseElement` interface to prevent XSS attacks.
 The legacy functionality may be re-enabled by setting the `svg.use-element.data-url-href.allowed` preference to `true`, although this is not recommended for security reasons (Firefox bug 1806964).
### HTTP

#### Removals

### Security

#### Removals

### APIs

* The LargestContentfulPaint API is now supported.
 This API is part of the Performance APIs and provides timing information about the largest image or text paint before users interact with a web page (Firefox bug 1866266).

#### DOM

### showPicker() method for HTML select elements

* The `HTMLSelectElement.showPicker()` method is now supported, allowing the browser picker for a `<select>` element to be programmatically launched when triggered by user interaction (Firefox bug 1865207).

#### Media, WebRTC, and Web Audio

#### Removals

### WebAssembly

#### Removals

### WebDriver conformance (WebDriver BiDi, Marionette)

#### General

* Fixed a bug that prevented Perform Actions to correctly synthesize double and other multi-click events for the `mouse` input source (Firefox bug 1864614). Additionally, these events will only be emitted when the actual mouse position has not changed since the last click action (Firefox bug 1681076).
* The definitions for the `Pause` and `Equal` (Numpad block) keys have been updated to align with the WebDriver specification (Firefox bug 1863687).

#### WebDriver BiDi

* The serialization of `WindowProxy` remote objects now also works correctly for out-of-process iframes (Firefox bug 1867667).
* The browsingContext.setViewport command now distinguishes between `undefined` and `null` as values for the `viewport` argument. If set to `undefined`, it signifies that the viewport should remain unchanged, while using `null` will reset it to its original dimensions (Firefox bug 1865618).
* Support for the browsingContext.traverseHistory command has been introduced, enabling navigations backward and forward in the browser history (Firefox bug 1841018).
* Fixed a bug in all supported network events where the `context` id consistently reported the top-level browsing context, even when the navigation occurred within an iframe (Firefox bug 1869735).

#### Marionette

* Fixed a bug with Get Element Text, where the command was incorrectly returning an empty text when the element was located within a ShadowRoot's slot (Firefox bug 1824664).
Changes for add-on developers
-----------------------------

### Removals

### Other

Experimental web features
-------------------------

These features are newly shipped in Firefox 122 but are disabled by default. To experiment with them, search for the appropriate preference on the `about:config` page and set it to `true`. You can find more such features on the Experimental features page.

* **Declarative shadow DOM:** `dom.webcomponents.shadowdom.declarative.enabled`.
 The `<template>` element now supports a `shadowrootmode` attribute which can be set to either `open` or `closed`, the same values as the `mode` option of the `attachShadow()` method. It allows the creation of a shadow DOM subtree declaratively. (Firefox bug 1712140)
* **Popover API:** `dom.element.popover.enabled`.
 Displaying popovers on top of page content is now supported via HTML attributes or JavaScript API, including styling with the CSS `:popover-open` pseudo-class and extended support for the `::backdrop` pseudo-element. See the Popover API reference for more details. (Firefox bug 1823757)
* **Clipboard read and write:** `dom.events.asyncClipboard.clipboardItem`, `dom.events.asyncClipboard.readText` and `dom.events.asyncClipboard.writeText`.
 The async `Clipboard API` is now fully supported, including `read()`, `readText()`, and `write()` methods and the `ClipboardItem` interface. A paste context menu will appear for the user to confirm when reading clipboard data not provided by the same-origin page. (Firefox bug 1809106)
* **`Intl.Segmenter`:** enabled by default only in Firefox Nightly.
 The `Intl.Segmenter` object allows accurate locale-sensitive text segmentation of a string. For example, to split a text into words in a language that doesn't use spaces to separate them: `Intl.Segmenter("ja-JP", { granularity: "word" })`. (Firefox bug 1423593)
Older versions
--------------

* Firefox 121 for developers
* Firefox 120 for developers
* Firefox 119 for developers
* Firefox 118 for developers
* Firefox 117 for developers
* Firefox 116 for developers
* Firefox 115 for developers
* Firefox 114 for developers
* Firefox 113 for developers
* Firefox 112 for developers
* Firefox 111 for developers
* Firefox 110 for developers
* Firefox 109 for developers
* Firefox 108 for developers
* Firefox 107 for developers
* Firefox 106 for developers
* Firefox 105 for developers
* Firefox 104 for developers
* Firefox 103 for developers
* Firefox 102 for developers
* Firefox 101 for developers
* Firefox 100 for developers
* Firefox 99 for developers
* Firefox 98 for developers
* Firefox 97 for developers
* Firefox 96 for developers
* Firefox 95 for developers
* Firefox 94 for developers
* Firefox 93 for developers
* Firefox 92 for developers
* Firefox 91 for developers


Firefox 81 for developers - Mozilla

Firefox 81 for developers
=========================

This article provides information about the changes in Firefox 81 that will affect developers. Firefox 81 was released on September 22, 2020.

Changes for web developers
--------------------------

### Developer Tools

* The Debugger now uses the TypeScript icon for `.ts` and `.tsx` files (Firefox bug 1642769). Previously a generic file icon was used.
* We've added support for line wrapping in the Debugger source pane (Firefox bug 1590885).
* We've removed unnecessary color vision simulations (protanomaly, deuteranomaly, and tritanomaly) from the Accessibility Inspector, and added a simulation for achromatopsia (no color) (Firefox bug 1655053).
* Autocompletion is now supported when adding a class to an element. Offered classes are based on existing classes in the document (Firefox bug 1492797).
### HTML

* Automatic downloads are now blocked in a sandboxed `<iframe>` element (Firefox bug 1558394).

#### Removals

* Support for the non-standard `mozallowfullscreen` attribute has been removed from `<iframe>`. Consider using `allow="fullscreen"` instead (Firefox bug 1657599).
### CSS

* We now support the value of `clip` for the `overflow` property, via renaming `overflow: -moz-hidden-unscrollable` (Firefox bug 1531609).
* The `text-combine-upright` property has been made non-animatable to comply with the spec (Firefox bug 1654195).

#### Removals

* The non-standard `::-moz-focus-outer` pseudo-element has been removed (Firefox bug 1655859).
### JavaScript

*No changes.*

### HTTP

* Firefox now accepts non-standard `Content-Disposition` headers with an unquoted filename containing spaces (Firefox bug 1440677).
* Firefox now supports the HTTP `Feature-Policy` header's `web-share` directive, which can be used to restrict access to the Web Share API to trusted origins. Note that Firefox does not support the Web Share API itself, at time of writing (Firefox bug 1653199).
### APIs

#### Gamepad

* The threshold for gamepad joystick activation has been increased. This reduces the chance of inadvertent gamepad activation, both from controllers that send small axis values when they are idle, and very small bumps. (Firefox bug 1539178)

#### Workers/Service workers

* Strict MIME type checks are now enforced on worker and shared worker scripts, i.e. scripts targeted by the `Worker()` and `SharedWorker()` constructors must now be served with `text/javascript` (Firefox bug 1569123).
### WebDriver conformance (Marionette)

* The `setWindowRect` capability is now `true` by default for all desktop applications (including Thunderbird), and `false` on Android for GeckoView (Firefox bug 1650872).
* We've added Fission support for the following commands: `WebDriver:SwitchToFrame`, `WebDriver:SwitchToParentFrame`, `WebDriver:GetCurrentURL`. All Fission-compatible commands are only available when `marionette.actors.enabled` is set to `true`.
* Fixed the broken tracking of browsing contexts after opening a new window (Firefox bug 1661495).
* In case of failures `WebDriver:SwitchToWindow` now always returns a unified `NoSuchWindowError` (Firefox bug 1663429).

#### Removals

* `WebDriver:GetActiveFrame` has been removed, because it's not part of the WebDriver specification and is no longer used (Firefox bug 1659502).
Changes for add-on developers
-----------------------------

* `tabs.saveAsPDF()` is now supported on macOS (Firefox bug 1653354).
* The behavior of `webNavigation.getFrame()` and `webNavigation.getAllFrames()` has changed. Moving forward, when a tab is discarded the promise will fulfill with a `null` value (Firefox bug 1654842).
Older versions
--------------

* Firefox 80 for developers
* Firefox 79 for developers
* Firefox 78 for developers
* Firefox 77 for developers
* Firefox 76 for developers
* Firefox 75 for developers
* Firefox 74 for developers
* Firefox 73 for developers
* Firefox 72 for developers
* Firefox 71 for developers
* Firefox 70 for developers
* Firefox 69 for developers
* 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 41 for developers - Mozilla

Firefox 41 for developers
=========================

To test the latest developer features of Firefox, install Firefox Developer Edition Firefox 41 was released on September 22, 2015. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.

Changes for Web developers
--------------------------

### Developer Tools

Highlights:

* Take a screenshot of a DOM node
* Copy as HAR/save as HAR
* "Add Rule" button in the Rules view
* View source in a tab (Disabled by default)
* More options to copy CSS rules
* Copy image as data: URL in the Rules view
* Added command to *GCLI* to display CSP info

All devtools bugs fixed between Firefox 40 and Firefox 41: note that many of these bugs, especially those relating to the performance tools, were uplifted to Firefox 40.

### CSS

* Support for laying out vertical scripts has been activated by default (Firefox bug 1138384). That means that the following CSS properties are now available:
    + Choosing the direction of writing: `writing-mode`.
    + Controlling orientation of characters: `text-orientation`.
    + Direction-independent equivalents of `width` and `height`: `block-size` and `inline-size`.
    + Direction-independent equivalents of `min-width` and `min-height`: `min-block-size` and `min-inline-size`.
    + Direction-independent equivalents of `max-width` and `max-height`: `max-block-size` and `max-block-size`.
    + Direction-independent equivalents of `margin-top`, `margin-right`, `margin-bottom` and `margin-left`: `margin-block-start`, `margin-block-end`, `margin-inline-start` and `margin-inline-end`.
    + Direction-independent equivalents of `padding-top`, `padding-right`, `padding-bottom` and `padding-left`: `padding-block-start`, `padding-block-end`, `padding-inline-start` and `padding-inline-end`.
    + Direction-independent equivalents of `border-top`, `border-right`, `border-bottom` and `border-left` and their longhands for width, style and color: `border-block-start`, `border-block-start-width`, `border-block-start-style`, `border-block-start-color`, `border-block-end`, `border-block-end-width`, `border-block-end-style`, `border-block-end-color`, `border-inline-start`, `border-inline-start-width`, `border-inline-start-style`, `border-inline-start-color`, `border-inline-end`, `border-inline-end-width`, `border-inline-end-style` and `border-inline-end-color`.
    + Direction-independent equivalents of `top`, `right`, `bottom` and `left`: `offset-block-start`, `offset-block-end`, `offset-inline-start` and `offset-inline-end`.
* Support the `transform-origin` property in SVG and implement the `transform-box` property (Firefox bug 923193).
### HTML

* `<a>` without an `href` attribute is no longer classified as interactive content. Clicking it inside `<label>` will activate labelled content (Firefox bug 1167816).
* SVG icons are now supported for site icons, that is favicons and shortcut icons (Firefox bug 366324).
* The `crossorigin` attribute is now supported for <link rel='preconnect'> (Firefox bug 1174152).
* The picture element does not react to resize/viewport changes (Firefox bug 1135812).
### JavaScript

* `Date.prototype` is now an ordinary object, not a `Date` instance anymore (Firefox bug 861219).
* `Date.prototype.toString` is now a generic method (Firefox bug 861219).
* `Symbol.species` has been added (Firefox bug 1131043).
* `Map[@@species]` and `Set[@@species]` getters have been added (Firefox bug 1131043).
* Non-standard let expression support has been dropped (Firefox bug 1023609).
* Destructured parameters with default value assignment are now supported (Firefox bug 1018628).
* Per ES2015, curly braces are required for method definitions. Syntax without them will fail from now on (Firefox bug 1150855).
* Method definitions (except for generator methods) are not constructable anymore (Firefox bug 1059908 and Firefox bug 1166950).
* As part of ES2015 specification compliance, parenthesized destructuring patterns, like `([a, b]) = [1, 2]` or `({a, b}) = { a: 1, b: 2 }`, are now considered invalid and will throw a `SyntaxError`. See Jeff Walden's blog post for more details.
* The `new.target` syntax has been added (Firefox bug 1141865).
### Interfaces/APIs/DOM

#### HTML Editing API

* Cut, copy and paste commands handling has been revamped and now allow programmatic copying and cutting from JS for Web content:
    + With the `'paste'` command as argument, `Document.queryCommandSupported()` now returns `false` if has insufficient privileges to actually perform the action (Firefox bug 1161721).
    + With the `'cut'` or `'copy'` command as argument, `Document.queryCommandSupported()` now returns `true` if called within the context of a user-initiated or privileged code (Firefox bug 1162952).
    + With the `'cut'` or `'copy'` command as argument, `Document.execCommand()` now works, but only within the context of user-initiated or privileged code (Firefox bug 1012662).
    + Instead of raising an exception, `Document.execCommand()` when the command is not supported or enabled (Firefox bug 1027560).

#### Events

* The non-standard `initCloseEvent()` method of the `CloseEvent` event and the ability to create a `CloseEvent` using the `document.createEvent('CloseEvent')` method has been removed; use the standard constructor, `CloseEvent()` instead (Firefox bug 1161950).
* On Desktop, `PointerEvent` is now activated by default in Nightly; it is not activated in Developer Edition, Beta or Release and won't be for at least some versions (Firefox bug 1166347).
* The unprefixed version of `MouseEvent.movementX` and `MouseEvent.movementY` have been added; the prefixed versions are deprecated and will be removed at some point in the future (Firefox bug 1164981).

#### Web Crypto

* `SubtleCrypto.importKey()` and `SubtleCrypto.exportKey()` now supports `ECDH` keys (Firefox bug 1050175).

#### Canvas API

* `HTMLCanvasElement.captureStream()` and `CanvasCaptureMediaStream` have been added and allow to stream the display of a `<canvas>` in real-time (Firefox bug 1032848).
* `MediaStream.id` now returns the unique id of a stream (Firefox bug 1089798).
* The initial value of `CanvasRenderingContext2D.filter` is now correctly set to `none` (Firefox bug 1163124).

#### Service Workers

* Improvement to our experimental Service Worker implementation:
    + `ServiceWorkerGlobalScope.skipWaiting()` has been implemented (Firefox bug 1131352).
    + `Clients.claim()` has been added (Firefox bug 1130684).
    + The other functional events of Service Workers have been made to inherit from `ExtendableEvent`, giving them access to the `waitUntil()` method (Firefox bug 1160527).
* The `CacheStorage` and `Cache` interfaces are now supported (Firefox bug 1110144).

#### WebGL

* The `failIfMajorPerformanceCaveat` WebGL context attribute has been added and can be set when creating a WebGL context with `HTMLCanvasElement.getContext()` to indicate if a context creation should fail if the system performance is low (Firefox bug 1164970).

#### WebRTC

* Firefox no longer offers a default STUN server to be used if none are specified when constructing a new `RTCPeerConnection`. You'll need to provide one in order to successfully establish a WebRTC connection.

#### Miscellaneous

* On OS X and Windows, `Navigator.onLine` now changes regarding network connectivity (it always returned `true`, unless "Work offline" mode was selected) before (Firefox bug 654579).
* `MessagePort` and `MessageChannel` now available in Web workers, and are enabled by default in all contexts (Firefox bug 952139) and (Firefox bug 911972).
* The User Timing API is now available in Web workers (Firefox bug 1155761).
* The Notifications API is now available in Web workers (Firefox bug 916893).
* `DOMRequest` and `DOMCursor` are now available in Web workers (Firefox bug 1167650).
* The CSS Font Loading API has been completely implemented and is now enabled by default (Firefox bug 1149381).
* Shared workers can no longer be shared between private (i.e., browsing in a private window) and non-private documents (see Firefox bug 1177621).
* The `URL.searchParams` property is now read-only (Firefox bug 1174731).
* The `HTMLAnchorElement.hash` property no longer decodes URL fragment (Firefox bug 1093611).
### MathML

#### New default and fallback font handling

Mathematical formulas require special fonts. So far, these fonts were hard-coded in the `mathml.css` user agent stylesheet (which sets the font-family on `<math>` tag) and in the preference option `font.mathfont-family` (which sets the fallback fonts to use for stretchy and large operators). Firefox 41 introduces an internal `x-math` language that is automatically set on the `<math>` tag as well as corresponding preference options (e.g., `font.name.serif.x-math`). The user agent stylesheet now sets font-family to serif on the `<math>` tag and the preference option `font.mathfont-family` is replaced with `font.name.serif.x-math`. All platforms now essentially use the same list of fallback fonts, with "Latin Modern Math" as the first one. The default/fallback fonts can be configured from the standard per-language font preference menu. For more details, see Firefox bug 947654 and Firefox bug 1160456.

### SVG

* Site icons (favicons, shortcut icons) now support SVG (Firefox bug 366324).
### Audio/Video

* The `media.autoplay.enabled` preference now also applies to untrusted `HTMLMediaElement.play()` invocations too, that is calls from non-users activated scripts (Firefox bug 659285).
Networking
----------

* The `X-Content-Duration` header is no longer supported (Firefox bug 1160695).
* Draft versions of the HTTP/2 protocol are no more supported (Firefox bug 1132357).
Security
--------

* The CSP 1.1 `manifest-src` directive is now supported (Firefox bug 1089255).
* Previous versions of Firefox incorrectly expected the Content Security Policy referrer directive's value `origin-when-cross-origin` to be spelled `origin-when-crossorigin`. This has been corrected to include the missing dash character.
Changes for add-on and Mozilla developers
-----------------------------------------

### XUL

*No change.*

### JavaScript code modules

*No change.*

### XPCOM

### Interfaces

*No change.*

### Other

* A new, internal, and chrome-context-only API to render the root widget of a window into a `<canvas>` has been added: `CanvasRenderingContext2D.drawWidgetAsOnScreen()`. This API uses the operating system to snapshot the widget on-screen. For more details see Firefox bug 1167477.
Older versions
--------------

* 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
* Firefox 31 for developers
* Firefox 30 for developers
* Firefox 29 for developers
* Firefox 28 for developers
* Firefox 27 for developers
* Firefox 26 for developers
* Firefox 25 for developers
* Firefox 24 for developers
* Firefox 23 for developers
* Firefox 22 for developers
* Firefox 21 for developers
* Firefox 20 for developers
* Firefox 19 for developers
* Firefox 18 for developers
* Firefox 17 for developers
* Firefox 16 for developers
* Firefox 15 for developers
* Firefox 14 for developers
* Firefox 13 for developers
* Firefox 12 for developers
* Firefox 11 for developers
* Firefox 10 for developers


Firefox 99 for developers - Mozilla

Firefox 99 for developers
=========================

This article provides information about the changes in Firefox 99 that will affect developers. Firefox 99 was released on April 5, 2022.

Changes for web developers
--------------------------

### HTML

No notable changes.

### CSS

No notable changes.

### JavaScript

No notable changes.

### APIs

* `navigator.pdfViewerEnabled` is now enabled, and is the recommended way to determine whether a browser supports inline display of PDF files when navigating to them.
 Sites that use the deprecated properties `navigator.plugins` and `navigator.mimeTypes` to infer PDF viewer support should now use the new property, even though these now return hard-coded mock values that match the signal provided by `pdfViewerEnabled` (Firefox bug 1720353).

#### Media, WebRTC, and Web Audio

* The `RTCPeerConnection.setConfiguration()` method is now supported.
 Among other things, this allows sites to adjust the configuration to changing network conditions (Firefox bug 1253706).

#### Removals

* The Network Information API was previously enabled on Android (only), but is now disabled by default on all platforms.
 This API is on the path for removal because it exposes a significant amount of user information that might be used for fingerprinting.
 (Firefox bug 1637922).
### WebDriver conformance (Marionette)

* Fixed a bug where the Shift key was not handled properly when part of a key sequence of the `WebDriver:ElementSendKeys` command (Firefox bug 1757636).
Changes for add-on developers
-----------------------------

Older versions
--------------

* Firefox 98 for developers
* Firefox 97 for developers
* Firefox 96 for developers
* Firefox 95 for developers
* Firefox 94 for developers
* Firefox 93 for developers
* Firefox 92 for developers
* Firefox 91 for developers
* Firefox 90 for developers
* Firefox 89 for developers
* Firefox 88 for developers
* Firefox 87 for developers
* Firefox 86 for developers
* Firefox 85 for developers
* Firefox 84 for developers
* Firefox 83 for developers
* Firefox 82 for developers
* Firefox 81 for developers
* Firefox 80 for developers
* Firefox 79 for developers
* Firefox 78 for developers
* Firefox 77 for developers
* Firefox 76 for developers
* Firefox 75 for developers
* Firefox 74 for developers
* Firefox 73 for developers
* Firefox 72 for developers
* Firefox 71 for developers
* Firefox 70 for developers
* Firefox 69 for developers
* Firefox 68 for developers


Firefox 70 for developers - Mozilla

Firefox 70 for developers
=========================

This article provides information about the changes in Firefox 70 that will affect developers. Firefox 70 was released on October 22, 2019.

Changes for web developers
--------------------------

### Developer tools

#### Debugger updates

* In the Debugger you can now set breakpoints for DOM Mutation, so execution will pause when a node or its attributes are changed or when a node is removed from the DOM (Firefox bug 1576219).
* The Debugger now shows an overlay on the page when it is paused, with basic stepping buttons to let you step and continue (Firefox bug 1574646).
* The Debugger now shows sources that already got discarded by the engine (usually scripts that execute once during page load), so you can properly set breakpoints to debug when they execute next (Firefox bug 1572280).
* The Debugger's scopes panel grouping has been simplified, consolidating additional scopes previously shown above the top level function (e.g. blocks created by `let`, `with`, or `if`/`else`) (Firefox bug 1448166)
* The Debugger now retains the currently selected and expanded variables in the scopes panel while stepping (Firefox bug 1405402).
* The Debugger now handles stepping over async functions correctly, making asynchronous function debugging easier (Firefox bug 1570178).
* When debugging in Container sessions (useful for testing different logins), the sources in the debugger are now shown correctly (Firefox bug 1375036).
* `debugger` statements can be now disabled in the Debugger by setting a breakpoint on them and switching the breakpoints to "Never pause here" (Firefox bug 925269).
* WebExtensions developers can inspect `browser.storage.local` from the Extension Storage item under the Storage tab (Firefox bug 1585499).

#### Other updates

* An icon will be displayed next to inactive CSS properties in the Rules view of the Page Inspector, which you can hover over to get information on why it is inactive (Firefox bug 1306054).
* In the CSS Rules view, the color picker on foreground colors now tells you whether its contrast with the background color meets accessibility conformance criteria (Firefox bug 1478156).
* The Accessibility inspector's Check for issues dropdown now includes keyboard accessibility checks (Firefox bug 1564968).
### HTML

* Firefox can now suggest securely-generated passwords to the user in the following situations:
    + An `<input>` element has the `autocomplete="new-password"` attribute value.
    + The user opens the context menu on any password input element, even if it is not intended for new passwords.
### CSS

* Opacity values like for `opacity` or `stop-opacity` can now be percentages (Firefox bug 1562086).
* `grid-auto-columns` and `grid-auto-rows` now accept multiple track-size values (Firefox bug 1339672).
* A number of text-related CSS properties have been enabled by default (Firefox bug 1573631):
    + `text-decoration-thickness`.
    + `text-underline-offset`.
    + `text-decoration-skip-ink`. The default value is `auto`, which means that by default underlines and overlines are now interrupted where they would otherwise cross over a glyph.
* The `display` property now accepts two keyword values representing the inner and outer display type (Firefox bug 1038294, Webkit bug 1105868 and Webkit bug 1557825).
* The `font-size` property now accepts the new keyword value `xxx-large`. (Firefox bug 1553545).
* The `:visited` pseudo-class no longer matches `<link>` elements, for logic and performance reasons (Firefox bug 1572246; see Intent to ship: Make <link> elements always unvisited and [selectors] :link and <link> for more reasoning as to why).
* We now support an `auto` value for the `quotes` property (Firefox bug 1421938).
* Stylesheets contained in `<style>` elements are now cached for reuse, to improve performance (Firefox bug 1480146). Note that this currently doesn't include stylesheets that contain `@import` rules.
* The `<ratio>` type now accepts `<number>/<number>` or a single `<number>` as a value. (Firefox bug 1565562).

#### Removals

* We have retired support for 3-valued <position> (excluding background)(Firefox bug 1559276).
* The `none` value is now invalid in `counter()` / `counters()` — a change which makes the Level 3 spec match CSS 2.1 Firefox bug 1576821).
### SVG

* Cut, copy, and paste events are now dispatched to SVG graphics elements (Firefox bug 1569474).
### MathML

* The deprecated `mode` attribute on `<math>` elements has been removed (Firefox bug 1573438).
* Non-zero unitless length values, such as `5` for `500%`, are no longer supported.
* Length values ending with a dot, such as `2.` or `34.px`, are also unsupported now.
### JavaScript

* Numeric separators are now supported (Firefox bug 1435818).
* The `Intl.RelativeTimeFormat.formatToParts()` method has been implemented (Firefox bug 1473229).
* The `BigInt.prototype.toLocaleString()` method has been updated to work with the `locales` and `options` parameters per the ECMAScript 402 Intl API. Also, `Intl.NumberFormat.format()` and `Intl.NumberFormat.formatToParts()` now accept `BigInt` values (Firefox bug 1543677).
* Per the latest ECMAScript specification, a leading zero is now never allowed for BigInt literals, making `08n` and `09n` invalid similar to the existing error when legacy octal numbers like `07n` are used. Always use a leading zero with the letter "o" (lowercase or uppercase) for octal `BigInt` numbers (i.e. `0o755n` instead of `0755n`). See Firefox bug 1568619.
* The Unicode extension key "nu" is now supported for the `Intl.RelativeTimeFormat` constructor and the `Intl.RelativeTimeFormat.resolvedOptions()` method now also returns `numberingSystem` (Firefox bug 1521819).
### APIs

#### DOM

* The `back()`, `forward()`, and `go()` methods are now asynchronous. Add a listener to the `popstate` event to get notification that navigation has completed Firefox bug 1563587.
* We've added support `DOMMatrix`, `DOMPoint`, etc. in web workers (Firefox bug 1420580).
* A few more members have been moved from `HTMLDocument` to `Document`, including `Document.all`, `Document.clear`, `Document.captureEvents`, and `Document.clearEvents` (Firefox bug 1558570, Firefox bug 1558571).
* Notification permission can no longer be requested from inside a cross-origin `<iframe>` (Firefox bug 1560741).

#### Media, Web Audio, and WebRTC

* The `RTCPeerConnection.restartIce()` method has been added. This is one of the four changes needed to implement the new "perfect negotiation" mechanism; the rest will come in future Firefox updates (Firefox bug 1551316).
* The `RTCPeerConnection.setRemoteDescription()` method can now be called with no parameters. This is another "perfect negotiation" update (Firefox bug 1568292).
* `MediaTrackSupportedConstraints.groupId` is now supported, and returns `true` since the `MediaTrackConstraints.groupId` property is now supported (Firefox bug 1561254).
* Several new Web Audio API features have been implemented/updated:
    + `AudioContext.getOutputTimestamp()` implemented (Firefox bug 1324545).
    + `AudioContext.baseLatency` and `AudioContext.outputLatency` implemented (Firefox bug 1324552).
    + `MediaElementAudioSourceNode.mediaElement` and `MediaStreamAudioSourceNode.mediaStream` implemented (Firefox bug 1350973).
    + The `ChannelMergerNode()` constructor now throws errors if you try to set `channelCount` and `channelCountMode` to invalid values (Firefox bug 1456263).

#### Canvas and WebGL

* We now support `CanvasRenderingContext2D.getTransform()`, and the newer variant of `CanvasRenderingContext2D.setTransform()` that accepts a matrix object as a parameter rather than multiple parameters representing the individual components of the matrix (Firefox bug 928150).
### HTTP

* The default referrer policy for third-party tracking resources is now `strict-origin-when-cross-origin` when Enhanced Tracking Protection is turned on (Firefox bug 1569996).
* The size of the `Referer` request header is now limited to 4 KB (4,096 bytes). If an overly long referer exceeds the defined limit, only the origin part will be sent (Firefox bug 1557346).
* The HTTP cache is now partitioned per the top-level document's origin (Firefox bug 1536058).

#### Removals

* The `X-Frame-Options` `allow-from uri` directive has been removed. Use the `Content-Security-Policy` header with the `frame-ancestors` directive instead (Firefox bug 1301529).
### WebDriver conformance (Marionette)

* Updated the `WebDriver:TakeScreenshot` command to be Fission compatible. It means that content from cross-origin iframes is now included in a page's screenshot. Or when using it from chrome scope that the active tab's content is visible now inside the browser window. (Firefox bug 1559592).
* `WebDriver:TakeScreenshot` no longer accepts a list of DOM elements as used for highlighting (Firefox bug 1575511).
* `WebDriver:ExecuteScript` and `WebDriver:ExecuteAsyncScript` no longer sets `window.onunload` in ways that are web-exposed (Firefox bug 1568991).
Changes for add-on developers
-----------------------------

### API changes

* Added a new parameter to the `topSites.get()` method that causes the method to return the list of pages that appear when the user opens a new tab (Firefox bug 1568617).
* The `privacy.network` property's `WebRTCIPHandlingPolicy` sub-property's permitted values have been amended (in Firefox bug 1452713) to match the behavior seen in Chrome as follows:
    + `disable_non_proxied_udp` previously prevented the use of WebRTC if no proxy was configured. Now a proxy is always used if one is configured, but otherwise a non-proxied connection is permitted.
    + `proxy_only` can be used to provide the old behavior; this has the effect of only allowing ICE negotiation over TURN on TCP using a proxy; no other connections are allowed.
### Manifest changes

#### Removals

The following theme key properties, which provided aliases for theme keys used in chromium-based browsers, were removed:

* `images` property `headerURL`, themes should now use `theme_frame`.
* `colors` properties:
    + `accentcolor`, themes should now use `frame`.
    + `textcolor`, themes should now use `tab_background_text`.
See also
--------

* Hacks release post: Firefox 70 — a bountiful release for all
Older versions
--------------

* Firefox 69 for developers
* 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 35 for developers - Mozilla

Firefox 35 for developers
=========================

Firefox 35 was released on January 13th, 2015. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.

Changes for Web developers
--------------------------

### Developer Tools

Highlights:

* See ::before and ::after pseudo elements in the Page Inspector
* CSS source maps are now enabled by default
* "Show DOM Properties" from the Page Inspector

All devtools bugs fixed between Firefox 34 and Firefox 35.

### CSS

* The `mask-type` property has been activated by default (Firefox bug 1058519).
* The `filter` property is now activated by default (Firefox bug 1057180).
* The `@font-face` at-rule now supports WOFF2 fonts (Firefox bug 1064737).
* The `symbols()` functional notation is now supported (Firefox bug 966168).
* The CSS Font Loading API has been implemented (Firefox bug 1028497).
* Using `-moz-appearance` with the `none` value on a combobox now remove the dropdown button (Firefox bug 649849).
* The property accessor `element.style["css-property-name"]` has been added to match other browsers (Firefox bug 958887).
### HTML

* The obsolete and non-conforming `bottommargin`, `leftmargin`, `rightmargin` and `topmargin` attributes of the `<body>` element have been activated in non-quirks mode (Firefox bug 95530).
### JavaScript

* The "temporal dead zone" for `let` declarations has been implemented. In conformance with ES2015 `let` semantics, the following situations now throw errors. See also this newsgroup announcement and Firefox bug 1001090.
    + Redeclaring existing variables or arguments using `let` within the same scope in function bodies is now a syntax error.
    + Using a variable declared using `let` in function bodies before the declaration is reached and evaluated is now a runtime error.
* ES2015 `Symbols` (only available in the Nightly channel) have been updated to conform with recent specification changes:
    + `String(Symbol("1"))` now no longer throws a `TypeError`; instead a string (`"Symbol(1)"`) gets returned (Firefox bug 1058396).
* The various *TypedArray* constructors now have as their `[[Prototype]]` a single function, denoted `%TypedArray%` in ES2015 (but otherwise not directly exposed). Each typed array prototype now inherits from `%TypedArray%.prototype`. (`%TypedArray%` and `%TypedArray%.prototype` inherit from `Function.prototype` and `Object.prototype`, respectively, so that typed array constructors and instances still have the properties found on those objects.) Typed array function properties now reside on `%TypedArray%.prototype` and work on any typed array. See *TypedArray* and Firefox bug 896116 for more information.
* ES2015 semantics for prototype mutations using object literals have been implemented (Firefox bug 1061853).
    + Now only a single member notated as `__proto__:value` will mutate the `[[Prototype]]` in the object literal syntax.
    + Method members like `__proto__() {}` will not overwrite the `[[Prototype]]` anymore.
### Interfaces/APIs/DOM

* `navigator.language` and `navigator.languages` are now available to workers on `WorkerNavigator` (Firefox bug 925849).
* The `Element.closest()` method returns the closest ancestor of the current element (Firefox bug 1055533).
* Experimental support for the `CanvasRenderingContext2D.filter` property has been added behind the `canvas.filters.enabled` flag (Firefox bug 927892).
* Our experimental implementation of Web Animations progresses with the landing of the `Animation.target` property. This always is behind the `dom.animations-api.core.enabled` pref, off by default (Firefox bug 1067701).
* The `hasAttributes()` method has been moved from `Node` to `Element` as required by the spec (Firefox bug 1055773).
* The `crossOrigin` reflected attribute of `HTMLImageElement`, `HTMLLinkElement`, `HTMLMediaElement`, `HTMLScriptElement`, and `SVGScriptElement` only accepts valid values, and `""` isn't, `null` has to be used instead (Firefox bug 880997).
* The Resource Timing API has been activated by default (Firefox bug 1002855).
* To match the spec, the first argument of `Selection.containsNode()` cannot be `null` anymore (Firefox bug 1068058).
* The new `ImageCapture` API has been implemented: `ImageCapture.takePhoto()` is available (Firefox bug 916643).
* Non-HTTP `XMLHttpRequest` requests now return `200` in case of success (instead of the erroneous `0`) (Firefox bug 716491).
* `XMLHttpRequest.responseURL` has been adapted to the latest spec and doesn't include the fragment (`'#xyz'`) of the URL, if relevant (Firefox bug 1073882).
* The internal, non-standard, `File.mozFullPath` property is no more visible from content (Firefox bug 1048293).
* The constructor of `File` has been extended to match the specification (Firefox bug 1047483).
* An experimental implementation of `AbortablePromise`, a promise that can be aborted by a different entity that the one who created it, has been added. It is prefixed with `Moz` and controlled by the `dom.abortablepromise.enabled` property, defaulting to `false` (Firefox bug 1035060).
* The non-standard `Navigator.mozIsLocallyAvailable` property has been removed (Firefox bug 1066826).
* The preference `network.websocket.enabled`, `true` by default, has been removed; Websocket API cannot be deactivated anymore (Firefox bug 1091016).
* The non-standard methods and properties of `Crypto` have been removed (Firefox bug 1030963). Only methods and properties defined in the standard WebCrypto API are left.
* Our experimental implementation of WebGL 2.0 is going forward!
    + The `WebGL2RenderingContext.copyBufferSubData()` method has been implemented (Firefox bug 1048668).
### MathML

* The `dtls` OpenType feature (via the CSS `font-feature-settings` on the default stylesheet) is now applied automatically to MathML elements when positioning scripts over it (e.g. dotless i with mathematical hat).
### SVG

*No change.*

### Audio/Video

*No change.*

Network & Security
------------------

* HTTP/2 has been implemented and activated, with AEAD ciphers only (Firefox bug 1027720 and Firefox bug 1047594).
* The HTTP/2 `alt-svc` header is now supported (Firefox bug 1003448).
* The Public Key Pinning Extension for HTTP (HPKP) has been implemented (Firefox bug 787133).
* The CSP 1.1 `base-uri` directive is now supported (Firefox bug 1045897).
* Path of the source is now considered too when host-source matching happens in CSP (Firefox bug 808292).
Changes for add-on and Mozilla developers
-----------------------------------------

### XUL & Add-ons

* The private `_getTabForBrowser()` method on the `<xul:tabbrowser>` element has been deprecated. In its place, we've added a new, public, method called `getTabForBrowser`. This returns, predictably, the `<xul:tab>` element that contains the specified `<xul:browser>`.
* `Components.utils.now()`, matching `Performance.now()` has been implemented for non-window chrome code (Firefox bug 969490).
### Add-on SDK

#### Highlights

* Added access keys for context menu.
* Removed `isPrivateBrowsing` from `BrowserWindow`.
* Added `toJSON` method to `URL` instances.

#### Details

GitHub commits made between Firefox 34 and Firefox 35. This will not include any uplifts made after this release entered Aurora.

Bugs fixed between Firefox 34 and Firefox 35. This will not include any uplifts made after this release entered Aurora.

Older versions
--------------

* Firefox 34 for developers
* Firefox 33 for developers
* Firefox 32 for developers
* Firefox 31 for developers
* Firefox 30 for developers
* Firefox 29 for developers
* Firefox 28 for developers
* Firefox 27 for developers
* Firefox 26 for developers
* Firefox 25 for developers
* Firefox 24 for developers
* Firefox 23 for developers
* Firefox 22 for developers
* Firefox 21 for developers
* Firefox 20 for developers
* Firefox 19 for developers
* Firefox 18 for developers
* Firefox 17 for developers
* Firefox 16 for developers
* Firefox 15 for developers
* Firefox 14 for developers
* Firefox 13 for developers
* Firefox 12 for developers
* Firefox 11 for developers
* Firefox 10 for developers
* Firefox 9 for developers
* Firefox 8 for developers
* Firefox 7 for developers
* Firefox 6 for developers
* Firefox 5 for developers
* Firefox 4 for developers
* Firefox 3.6 for developers
* Firefox 3.5 for developers
* Firefox 3 for developers
* Firefox 2 for developers
* Firefox 1.5 for developers


Firefox 97 for developers - Mozilla

Firefox 97 for developers
=========================

This article provides information about the changes in Firefox 97 that affect developers. Firefox 97 was released on February 8, 2022.

Changes for web developers
--------------------------

### HTML

No notable changes

### CSS

* The CSS units `cap` and `ic` are now supported for use with `<length>` and `<length-percentage>` data types.
 For more information, see Firefox bug 1702924 and Firefox bug 1531223.
* The CSS property `color-adjust` has been renamed to `print-color-adjust` to match the relevant specification.
 The `color-adjust` shorthand name is deprecated.
 See Firefox bug 747595 for details.
* CSS cascade layers are now available by default. The `@layer` rule declares a cascade layer, which allows declaration of styles and can be imported via the `@import` rule using the `layer()` function. See Firefox bug 1699217 for more details.
* The global CSS keyword `revert-layer` has been added to allow rolling back of property values in one cascade layer to the matching rules in the previous cascade layer. This keyword can be applied on any property, including the CSS shorthand property `all`. For more information, see Firefox bug 1699220.
* The CSS `scrollbar-gutter` property is now supported. This gives developers control over reserved space for the scrollbar, preventing unwanted layout changes as the content grows.
 See Firefox bug 1715112 for more details.
### JavaScript

No notable changes

### SVG

* The SVG `d` attribute, used to define a path to be drawn, can now be used as a property in CSS.
 It accepts the values path() or `none`. (See Firefox bug 1744599 for details.)

#### Removals

* A number of `SVGPathSeg` APIs are now disabled by default behind a preference, and are expected to be removed in future revisions.
 This includes: `SVGPathSegList`, SVGPathElement.getPathSegAtLength(), `SVGAnimatedPathData`.
 (See Firefox bug 1388931 for more details.)
### APIs

* `AnimationFrameProvider` is now available in a `DedicatedWorkerGlobalScope`. This means the `requestAnimationFrame` and `cancelAnimationFrame` methods can be used within a dedicated worker.
 (See Firefox bug 1388931 for more details.)

#### DOM

* The reason for an abort signal can now be set using `AbortController.abort()` (or `AbortSignal.abort()`), and will be available in the `AbortSignal.reason` property.
 This reason defaults to being an "AbortError" `DOMException`.
 The reason can be thrown or handled via promise rejection as appropriate.
 (Firefox bug 1737771).
* The convenience method `AbortSignal.throwIfAborted()` can be used to check if a signal has been aborted, and if so throw the `AbortSignal.reason()`.
 This makes it easier for developers to handle abort signals in code where you can't simply pass the signal to an abortable method. (Firefox bug 1745372).
### WebDriver conformance (Marionette)

* `Marionette:Quit` accepts a new boolean parameter, `safeMode`, to restart Firefox in safe mode (Firefox bug 1144075).
* Improved stability for `WebDriver:NewSession` and `WebDriver:NewWindow` when waiting for the current or initial document to be loaded (Firefox bug 1739369, Firefox bug 1747359).
Changes for add-on developers
-----------------------------

* `cookieStoreId` in `tabs.query` supports an array of strings. This enables queries to match tabs against more than one cookie store ID (Firefox bug 1730931).
* `cookieStoreId` added to `contentScripts.register`. This enables extensions to register container-specific content scripts (Firefox bug 1470651).
Older versions
--------------

* Firefox 96 for developers
* Firefox 95 for developers
* Firefox 94 for developers
* Firefox 93 for developers
* Firefox 92 for developers
* Firefox 91 for developers
* Firefox 90 for developers
* Firefox 89 for developers
* Firefox 88 for developers
* Firefox 87 for developers
* Firefox 86 for developers
* Firefox 85 for developers
* Firefox 84 for developers
* Firefox 83 for developers
* Firefox 82 for developers
* Firefox 81 for developers
* Firefox 80 for developers
* Firefox 79 for developers
* Firefox 78 for developers
* Firefox 77 for developers
* Firefox 76 for developers
* Firefox 75 for developers
* Firefox 74 for developers
* Firefox 73 for developers
* Firefox 72 for developers
* Firefox 71 for developers
* Firefox 70 for developers
* Firefox 69 for developers
* Firefox 68 for developers
* Firefox 67 for developers
* Firefox 66 for developers


Firefox 105 for developers - Mozilla

Firefox 105 for developers
==========================

This article provides information about the changes in Firefox 105 that affect developers. Firefox 105 was released on September 20, 2022.

Changes for web developers
--------------------------

### HTML

No notable changes.

### CSS

* Embedded content, such as SVG definitions and content in an `<iframe>`, now respects the theme preferences of the elements in which it is embedded, rather than OS or browser preferences (which may be different).
 Specifically, embedded content now inherits the `color-scheme` of the embedding element, and `prefers-color-scheme` media queries in the embedded content respect this value rather than the OS/browser level theme setting (Firefox bug 1779457).
### JavaScript

* Range restrictions have been relaxed on `formatRange` and `selectRange` functions for `Intl.DateTimeFormat`, `Intl.NumberFormat`, and `Intl.PluralRules` objects. This change now allows negative ranges (Firefox bug 1780545).
### APIs

#### DOM

* The TextDecoderStream and TextEncoderStream interfaces, part of the Encoding API, are now supported (Firefox bug 1486949).
* The OffscreenCanvas API provides a canvas that can be rendered off-screen in both window and web worker contexts.
 This allows `<canvas>` elements to be decoupled from the DOM. The OffscreenCanvasRenderingContext2D interface provides support for this and is now enabled by default (Firefox bug 1779009).
* The CSS Font Loading API can now be used in worker threads (Firefox bug 1072107).
### WebDriver conformance (WebDriver BiDi, Marionette)

#### WebDriver BiDi

* On systems with IPv6 preferred DNS resolution clients will no longer fail to connect when `localhost` is used as host for the WebSocket server (Firefox bug 1769994).
* Improved `RemoteValue` support to allow plain JS objects with simple JSON-serializable fields to be serialized (Firefox bug 1779226).

#### Marionette

* The `WebDriver:GetElementProperty` command is now able to return node properties as set by web content (Firefox bug 1398792).
Changes for add-on developers
-----------------------------

* Support for defining persistent scripts using `scripting` has been added. A script is identified as persistent using the `persistAcrossSessions` property in `scripting.RegisteredContentScript` (Firefox bug 1751436).
* An extension's resources can no longer be loaded by other extensions by default. To enable other extensions to load resources they must be listed in the extension's `web_accessible_resources` manifest key (Firefox bug 1711168).
Older versions
--------------

* Firefox 104 for developers
* Firefox 103 for developers
* Firefox 102 for developers
* Firefox 101 for developers
* Firefox 100 for developers
* Firefox 99 for developers
* Firefox 98 for developers
* Firefox 97 for developers
* Firefox 96 for developers
* Firefox 95 for developers
* Firefox 94 for developers
* Firefox 93 for developers
* Firefox 92 for developers
* Firefox 91 for developers
* Firefox 90 for developers
* Firefox 89 for developers
* Firefox 88 for developers
* Firefox 87 for developers
* Firefox 86 for developers
* Firefox 85 for developers
* Firefox 84 for developers
* Firefox 83 for developers
* Firefox 82 for developers
* Firefox 81 for developers
* Firefox 80 for developers
* Firefox 79 for developers
* Firefox 78 for developers
* Firefox 77 for developers
* Firefox 76 for developers
* Firefox 75 for developers
* Firefox 74 for developers


Firefox 66 for developers - Mozilla

Firefox 66 for developers
=========================

This article provides information about the changes in Firefox 66 that will affect developers. Firefox 66 was released on March 19, 2019.

Changes for web developers
--------------------------

### Developer tools

* JavaScript getters can now be executed from the auto-completion popup in the Web Console (Firefox bug 1499289).
* The Window methods `alert()`, `prompt()`, and `confirm()` now work again in Responsive Design Mode, after a period of being broken (Firefox bug 1273997).
* You can copy the output of the console to the clipboard by right-clicking and selecting "**Export visible messages to clipboard**" from the context menu.
### HTML

* UTF-8-encoded HTML (and plain text) files loaded from `file:` URLs are now supported without `<meta charset="utf-8">` or the UTF-8 BOM, making it easier to work on such files locally before uploading them to a server. You still need to make sure that the server sends `charset=utf-8` in the `Content-Type` HTTP header for such files, otherwise the detection mechanism used for local files would break incremental loading in the network case (Firefox bug 1071816).

#### Removals

* The `x-moz-errormessage` attribute has been removed from the `<input>` element (Firefox bug 1513890). You should use the constraint validation API to implement custom validation messages instead.
### CSS

* Scroll anchoring has been implemented in Firefox Desktop (but not mobile yet), which includes the `overflow-anchor` property (Firefox bug 1305957).
* We've implemented the case-sensitive attribute selector modifier, `s` (Firefox bug 1512386).
* Several logical property shorthands have landed, along with the flow-relative border radius properties:
    + `padding-block` and `padding-inline` (Firefox bug 1519847).
    + `margin-block` and `margin-inline` (Firefox bug 1519944).
    + `inset`, `inset-block`, and `inset-inline` (Firefox bug 1520229).
    + `border-block-color`, `border-block-style`, `border-block-width`, `border-inline-color`, `border-inline-style`, and `border-inline-width` (Firefox bug 1520236).
    + `border-block` and `border-inline` (Firefox bug 1520396).
    + `border-start-start-radius`, `border-start-end-radius`, `border-end-start-radius`, and `border-end-end-radius` (Firefox bug 1520684).
* We implemented the `overflow-inline` and `overflow-block` media queries (Firefox bug 1422235).
* `grid-template-columns` and `grid-template-rows` are now animatable, as per the rules set out in their specs (Firefox bug 1348519).
* We now support `calc()` with percentages for table cells and column widths (Firefox bug 957915).
* The `min-content` and `max-content` keywords are now available unprefixed (Firefox bug 1322780). These can be set on:
    + `width`
    + `height`
    + `flex-basis`
    + `min-width`
    + `max-width`
    + `min-height`
    + `max-height`
    + `min-block-size`
    + `min-inline-size`
    + `max-block-size`
    + `max-inline-size`
    + `block-size`
    + `inline-size`
### SVG

*No additions.*

#### Removals

* We removed support for the `xml:base` attribute (Firefox bug 903372).
### JavaScript

No changes.

### APIs

#### New APIs/changes

* Autoplaying audio will be blocked by default soon after 66 becomes the release version of Firefox (Firefox bug 1487844, see Firefox bug 1535667 for rollout details). The feature will be rolled out gradually to users until everyone has it.

#### DOM

* The `HTMLSlotElement.assignedElements()` method has been implemented (Firefox bug 1425685).
* The `TextEncoder.encodeInto()` method has been implemented (Firefox bug 1514664).

#### DOM events

* The `InputEvent.inputType` property has been implemented (Firefox bug 1447239).
* The `Window.event` and `Event.returnValue` properties — originally proprietary IE features, then also supported across other browsers for compatibility purposes — have been re-introduced in Firefox 66, after first being added in versions 63 and 64 respectively but then removed again due to compatibility issues.
* From 66 onwards, when the `KeyboardEvent.keyCode` property of the `keypress` event object is 0, the value will be the same as `KeyboardEvent.charCode`. Conversely, when `charCode` is 0, it will be the same as `keyCode`. This mirroring behavior matches other browsers and is expected to solve most associated compatibility issues, however user agent sniffing might cause further issues in some JavaScript libraries. Note that in spec terms, we've switched from the *split model* to the *conflated model* (see How to determine keyCode for keypress events in the UI Event spec).

#### Media, Web Audio, and WebRTC

* The new AV1 video codec is now enabled by default on both macOS and Windows (for Intel processors). Linux support will come in Firefox 67 (Firefox bug 1521181, Firefox bug 1452146, and Firefox bug 1534814).
* The `MediaDevices` method `getDisplayMedia()`, available as `navigator.mediaDevices.getDisplayMedia()`, has been added and synchronized with the specification. This method lets you capture a screen or part of a screen as a `MediaStream` for manipulation or sharing (Firefox bug 1321221).
* As a step toward eventually deprecating the Firefox-specific `getUserMedia()`-based method for capturing screen and window contents, the non-standard `mediaSource` constraint now treats the values `screen` and `window` identically. Both now present a list of both screens and windows for the user to choose from (Firefox bug 1474376).
* `qpSum` has been added to local outbound `RTCRTPStreamStats` objects. This measures the total of the Quantization Parameter values for every frame sent or received on the video track. The higher this number, the more compressed the stream probably is (Firefox bug 1347070).
* In a step along the road toward implementing support for Feature Policy in a future Firefox update, `getUserMedia()` can no longer be used in situations in which there is no proper origin for the content, such as when called from a sandboxed `<iframe>` or from a `data` URL entered into the address bar by the user. For more details, see the Security section on the MediaDevices.getUserMedia() page (Firefox bug 1371741).

#### Removals

* The legacy WebRTC `PeerConnection.getStats()` method has been removed, along with associated types (Firefox bug 1328194).
### Networking

* The default value of the `Accept` header has been changed to `*/*` (Firefox bug 1417463).
### Security

*No changes.*

### Plugins

*No changes.*

### WebDriver conformance (Marionette)

#### API changes

* `WebDriver:NewWindow` has been added to support opening of a new browsing context, which can be one of either window or tab (Firefox bug 1504756).
* `WebDriver:SwitchToFrame` now raises a `no such element` error if the specified element isn't part of the current browsing context (Firefox bug 1517196).
* `WebDriver:ExecuteScript` and `WebDriver:ExecuteAsyncScript` no longer support the non-spec compliant `scriptTimeout` parameter. Instead, use `WebDriver:SetTimeout` or the `timeouts` capability to define this value (Firefox bug 1510929).
    + In addition, indefinite script timeouts are now supported (Firefox bug 1128997).
* `WebDriver:SetWindowRect` no longer returns the window state in its response (Firefox bug 1517587).

#### Bug fixes

* `WebDriver:TakeScreenshot` now uses the `Element.clientWidth` and `Element.clientHeight` properties of the `Document.documentElement` instead of the viewport dimensions (Firefox bug 1385706).
* Various fixes have been applied to make window manipulation commands more reliable across platforms (Firefox bug 1522408, Firefox bug 1478358, Firefox bug 1489955).
Changes for add-on developers
-----------------------------

### API changes

#### Menus

* Extension menu items of the "bookmark" `type` will also appear in the Bookmarks sidebar (`Ctrl` + `B`) and Library window (`Ctrl` + `Shift` + `B`) (Firefox bug 1419195).
### Manifest changes

*No changes.*

See also
--------

* Hacks release post: Firefox 66: The Sound of Silence
Older versions
--------------

* 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
* Firefox 37 for developers
* Firefox 36 for developers
* Firefox 35 for developers