Firefox 3 for developers - Mozilla

Firefox 3 for developers
========================

If you're a developer trying to get a handle on all the new features in Firefox 3, this is the perfect place to start. This article provides a list of the new articles covering features added to Firefox 3. While it doesn't necessarily cover every little change, it will help you learn about the major improvements.

New developer features in Firefox 3
-----------------------------------

### For website and application developers

Updating web applications for Firefox 3

Provides information about changes you may need to make to your website or web application to take advantage of new features in Firefox 3.

Online and offline events

Firefox 3 supports WHATWG online and offline events, which let applications and extensions detect whether or not there's an active Internet connection, as well as to detect when the connection goes up and down.

Web-based protocol handlers

You can now register web applications as protocol handlers using the `navigator.registerProtocolHandler()` method.

Drawing text using a canvas

You can now draw text in a canvas using a non-standardized API supported by Firefox 3.

Transform support for canvas

Firefox now supports the `transform()` and `setTransform()` methods on canvases.

Using microformats

Firefox now has APIs for working with microformats.

Drag and drop events

Firefox 3 supports new events that are sent to the source node for a drag operation when the drag begins and ends.

Focus management in HTML

The new HTML 5 `activeElement` and `hasFocus` attributes are supported.

Offline resources in Firefox

Firefox now lets web applications request that resources be cached to allow the application to be used while offline.

CSS improvements in Firefox 3

Firefox 3 features a number of improvements in its CSS support.

DOM improvements in Firefox 3

Firefox 3 offers a number of new features in Firefox 3's DOM implementation, including support for several Internet Explorer extensions to the DOM.

JavaScript 1.8 support

Firefox 3 offers JavaScript 1.8.

EXSLT support

Firefox 3 provides support for a substantial subset of the EXSLT extensions to XSLT.

SVG improvements in Firefox 3

SVG support in Firefox 3 has been upgraded significantly, with support for over two dozen new filters, several new elements and attributes, and other improvements.

Animated PNG graphics

Firefox 3 supports the animated PNG (APNG) image format.

### For XUL and extension developers

#### Notable changes and improvements

Updating extensions for Firefox 3

Provides a guide to the things you'll need to do to update your extension to work with Firefox 3.

XUL improvements in Firefox 3

Firefox 3 offers a number of new XUL elements, including new sliding scales, the date and time pickers, and spin buttons.

Templates in Firefox 3

Templates have been significantly improved in Firefox 3. The key improvement allows the use of custom query processors to allow data sources other than RDF to be used.

Securing updates

In order to provide a more secure add-on upgrade path for users, add-ons are now required to provide a secure method for obtaining updates before they can be installed. Add-ons hosted at AMO automatically provide this. Any add-ons installed that do not provide a secure update method when the user upgrades to Firefox 3 will be automatically disabled. Firefox will however continue to check for updates to the extension over the insecure path and attempt to install any update offered (installation will fail if the update also fails to provide a secure update method).

Places migration guide

An article about how to update an existing extension to use the Places API.

Download Manager improvements in Firefox 3

The Firefox 3 Download Manager features new and improved APIs, including support for multiple progress listeners.

Using nsILoginManager

The Password Manager has been replaced by the new Login Manager.

Embedding XBL bindings

You can now use the `data:` URL scheme from chrome code to embed XBL bindings directly instead of having them in separate XML files.

Localizing extension descriptions

Firefox 3 offers a new method for localizing add-on metadata. This lets the localized details be available as soon as the add-on has been downloaded, as well as when the add-on is disabled.

Localization and Plurals

Firefox 3 adds the new PluralForm module, which provides tools to aid in correctly pluralizing words in multiple localizations.

Theme changes in Firefox 3

Notes and information of use to people who want to create themes for Firefox 3.

#### New components and functionality

FUEL Library

FUEL is about making it easier for extension developers to be productive, by minimizing some of the XPCOM formality and adding some "modern" JavaScript ideas.

Places

The history and bookmarks APIs have been completely replaced by the new Places API.

Idle service

Firefox 3 offers the new `nsIIdleService` interface, which lets extensions determine how long it's been since the user last pressed a key or moved their mouse.

ZIP writer

The new `nsIZipWriter` interface lets extensions create ZIP archives.

Full page zoom

Firefox 3 improves the user experience by offering full page zoom in addition to text-only zoom.

Interfacing with the XPCOM cycle collector

XPCOM code can now take advantage of the cycle collector, which helps ensure that unused memory gets released instead of leaking.

The Thread Manager

Firefox 3 provides the new `nsIThreadManager` interface, along with new interfaces for threads and thread events, which provides a convenient way to create and manage threads in your code.

JavaScript modules

Firefox 3 now offers a new shared code module mechanism that lets you easily create modules in JavaScript that can be loaded by extensions and applications for use, much like shared libraries.

The `nsIJSON` interface

Firefox 3 offers the new `nsIJSON` interface, which offers high-performance encoding and decoding of JSON strings.

The `nsIParentalControlsService` interface

Firefox 3 now supports the Microsoft Windows Vista parental controls feature, and allows code to interact with it.

Using content preferences

Firefox 3 includes a new service for getting and setting arbitrary site-specific preferences that extensions as well as core code can use to keep track of their users' preferences for individual sites.

Plug-in Monitoring

A new component of the plugin system is now available to measure how long it takes plugins (e.g., Macromedia Flash) to execute their calls.

#### Fixed bugs

Notable bugs fixed in Firefox 3

This article provides information about bugs that have been fixed in Firefox 3.

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

### User experience

* **Easier password management.** An information bar at the top of the browser window now appears to allow you to save passwords after a successful login.
* **Simplified add-on installation.** You can now install extensions from third-party download sites in fewer clicks, thanks to the removal of the add-on download site whitelist.
* **New Download Manager.** The download manager makes it easier to locate your downloaded files.
* **Resumable downloads.** You can now resume downloads after restarting the browser or resetting your network connection.
* **Full page zoom.** From the View menu and using keyboard shortcuts, you can now zoom in and out on the content of entire pages — this scales not just the text but the layout and images as well.
* **Tab scrolling and quickmenu.** Tabs are easier to locate with the new tab scrolling and tab quickmenu features.
* **Save what you were doing.** Firefox 3 prompts you to see if you'd like to save your current tabs when you exit Firefox.
* **Optimized Open in Tabs behavior.** Opening a folder of bookmarks in tabs now appends the new tabs instead of replacing the existing ones.
* **Easier to resize location and search bars.** You can now easily resize the location and search bars using a simple resize handle between them.
* **Text selection improvements.** You can now select multiple ranges of text using the Control (Command on Macintosh) key. Double-clicking and dragging now selects in "word-by-word" mode. Triple-clicking selects an entire paragraph.
* **Find toolbar.** The Find toolbar now opens with the current selection.
* **Plugin management.** Users can now disable individual plugins in the Add-on Manager.
* **Integration with Windows Vista.** Firefox's menus now display using Vista's native theme.
* **Integration with Mac OS X.** Firefox now supports Growl for notifications of completed downloads and available updates.
* **Star button.** The new star button in the location bar lets you quickly add a new bookmark with a single click. A second click lets you file and tag your new bookmark.
* **Tags.** You can now associate keywords with your bookmarks to easily sort them by topic.
* **Location bar and auto-complete.** Type the title or tag of a page in the location bar to quickly find the site you were looking for in your history and bookmarks. Favicons, bookmark, and tag indicators help you see where the results are coming from.
* **Smart Bookmarks folder.** Firefox's new Smart Bookmarks folder offers quick access to your recently bookmarked and tagged places, as well as pages you visit frequently.
* **Bookmarks and History Organizer.** The new unified bookmarks and history organizer lets you easily search your history and bookmarks with multiple views and smart folders for saving your frequent searches.
* **Web-based protocol handlers.** Web applications, such as your favorite web mail provider, can now be used instead of desktop applications for handling `mailto:` links from other sites. Similar support is provided for other protocols as well. (Note that web applications do have to register themselves with Firefox before this will work.)
* **Easy to use Download Actions.** A new Applications preferences pane provides an improved user interface for configuring handlers for various file types and protocol schemes.
* **Improved look and feel.** Graphics and font handling have been improved to make websites look better on your screen, including sharper text rendering and better support for fonts with ligatures and complex scripts. In addition, Mac and Linux (Gnome) users will find that Firefox feels more like a native application for their platform than ever, with a new, native, look and feel.
* **Color management support.** By setting the `gfx.color_management.enabled` preference in `about:config`, you can ask Firefox to use the color profiles embedded in images to adjust the colors to match your computer's display.
* **Offline support.** Web applications can take advantage of new features to support being used even when you don't have an Internet connection.
### Security and privacy

* **One-click site information.** Want to know more about the site you're visiting? Click the site's icon in the location bar to see who owns it. Identify information is prominently displayed and easier than ever to understand.
* **Malware protection.** Firefox 3 warns you if you arrive at a website that is known to install viruses, spyware, trojans, or other dangerous software (known as malware).
* **Web forgery protection enhanced.** Now when you visit a page that's suspected of being a forgery, you're shown a special page instead of the contents of the page with a warning.
* **Easier to understand SSL errors.** The errors presented when an invalid SSL certificate is encountered have been clarified to make it easier to understand what the problem is.
* **Out-of-date add-on protection.** Firefox 3 now automatically checks add-on and plugin versions and disables older, insecure versions.
* **Secure add-on updates.** Add-on update security has been improved by disallowing add-ons that use an insecure update mechanism.
* **Anti-virus integration.** Firefox 3 now informs anti-virus software when executable files are downloaded.
* **Windows Vista parental controls support.** Firefox 3 supports the Vista system-wide parental control setting for disabling file downloads.
### Performance

* **Reliability.** Firefox 3 now stores bookmarks, history, cookies, and preferences in a transactionally secure database format. This means your data is protected against loss even if your system crashes.
* **Speed.** Firefox 3 has gotten a performance boost by completely replacing the part of the software that handles drawing to your screen, as well as to how page layout work is handled.
* **Memory use reduced.** Firefox 3 is more memory efficient than ever, with over 300 memory "leak" bugs fixed and new features to help automatically locate and dispose of leaked memory blocks.
See also
--------

* Firefox 2 for developers
* Firefox 1.5 for developers


Firefox 13 for developers - Mozilla

Firefox 13 for developers
=========================

Firefox 13 was shipped on June 5, 2012. This page summarizes the changes in Firefox 13 that affect developers.

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

### HTML

* Tables' `cellspacing` attributes are now parsed the same outside quirks mode as they are in quirks mode. That is, if a value is specified as a percentage, it's treated as a number of pixels instead, since percentage values are not actually permitted according to the specification.
* The `<wbr>` element has seen its bidirectional behavior fixed. It now behaves like the Unicode `U+200B ZERO-WIDTH SPACE` and therefore doesn't affect bi-directionality of its parent element anymore.
* The `:invalid` pseudo-class can now be applied to the `<form>` element.
### CSS

* The `turn` `<angle>` unit is now supported (to be used with CSS functions like `rotate()`).
* Support for 3-to-4 value syntax of the `background-position` has been added. You can offset a background image from any corner by writing like "`right 10px bottom 20px`". See Firefox bug 522607
* Support for the 2-value syntax of the CSS `background-repeat` has been added.
* Support for `-moz-border-radius*` and `-moz-box-shadow` has been removed. Authors should use unprefixed `border-radius` or `box-shadow` instead. See Firefox bug 693510
* The `column-fill` property has been implemented (prefixed).
### JavaScript

* Support for the ECMAScript 2015 `for...of` construct has been added.
* Experimental support for ECMAScript 2015 Map and Set objects has been implemented.
### DOM

* The `Node.cloneNode()` method's `deep` argument is now optional, as specified in DOM4.
* The `setTimeout()` and `setInterval()` methods no longer pass an additional "lateness" argument to the callback routine.
* The `Blob.mozSlice()` method has been unprefixed.
* Support for the `Blob` constructor has been added.
* Support for `globalStorage` has been removed.
* The new `DOMRequest` interface, used for reporting the status and result of background operations, has been added.
* The `HTMLOptionElement.index()` method now returns `0` instead of the incorrect `-1` when the `<option>` is inside a `<datalist>` HTML element.
* `DOMException` as defined in DOM Level 4 has been implemented.
* The `FileError` interface has been removed in favor of the `DOMError` interface as defined in the latest FileAPI specification.
* The `Range` object no longer throws a `RangeException`. Instead a `DOMException` as defined in DOM 4 is used.
* `element.getAttributeNS()` now always returns `null` instead of the empty string for non-existent attributes. Previously, there were cases in which the empty string could be returned. This is in keeping with the DOM4 specification, which now says this should return null for non-existent attributes, instead of an empty string.
* The `HTMLCanvasElement` interface now has a non-standard `mozFetchAsStream()` method, which provides an input stream containing the element's image data in the specified format.
### UA string

* Firefox for Android now has a Tablet or Mobile token in the UA string to indicate the form factor and no longer has the Fennec token. Also, the number after "Gecko/" is now the Gecko version number instead of a frozen date.
* The UA string no longer exposes the Gecko patch number or release status in the version number; that is, the version number is now always of the form "X.Y", where X is the major release number and Y the minor. For example, "13.0" or "14.1". It will no longer be something like "14.0.1b1".
### SVG

* The `SVGStringList` DOM interface is now indexable like `Array` (see Firefox bug 722071).
### WebGL

* Support has been added for the `EXT_texture_filter_anisotropic` extension. Anisotropic texture filtering improves the quality of mipmapped texture access when viewing a textured primitive at an oblique angle.
### MathML

* Support for the `width` attribute on `<mtable>` elements has been added (Firefox bug 722880).
* MathJax fonts are now used as the default fonts for mathematical text. See Fonts for Mozilla's MathML engine for more information.
### Network

* The SPDY protocol now enabled by default.
### Developer tools

#### 3D view improvements

* You can now press the "f" key to make sure the currently selected node is visible.

#### Style panel improvements

* Clicking the heading for any rule in the style panel now opens the Style Editor at the corresponding CSS.
* Right-clicking on a rule in the style panel now offers an option to copy the rule to the clipboard.
* Entering an unknown property name, or an illegal property value, displays a warning icon next to that property.

#### Scratchpad improvements

* The *Scratchpad* now has an option in the Help menu to take you to the MDN documentation about Scratchpad.
Changes for Mozilla and add-on developers
-----------------------------------------

### Compatibility note

Starting in Firefox 13, Firefox for Windows requires at least Windows XP Service Pack 2; it will no longer run on Windows 2000 or earlier versions of Windows XP.

### JavaScript code modules

#### source-editor.jsm

* Support for a dirty flag has been added to the Source Editor API.
* The Source Editor no longer supports falling back to a `<textarea>` instead of using Orion.
* The editor now exposes focus and blur events.
* The `getIndentationString()` method has been added; this returns the string to use for indenting text in the editor.
* The Source Editor now supports managing a list of breakpoints and displaying user interface for toggling them on and off; it does not actually implement breakpoints, however. That's up to you to write debugger code for.
* Support has been added for highlighting the current line, using the `highlightCurrentLine` configuration option.
### ARIA

* The CSS properties `margin-left`, `margin-right`, `margin-top`, `margin-bottom` are now all reflected into ARIA object attributes with the same name. See Gecko object attributes for more information.
### Interfaces

* The `nsIScreen` interface now supports controlling rotation through the new `rotation` attribute.
* The `nsIPrefBranch2` interface has been merged into `nsIPrefBranch` (Firefox bug 718255).
* The new message manager wake-up service, implemented by `nsIMessageWakeupService`, has been implemented. See Firefox bug 591052.
* The aliases `MozOpacity`, `MozOutline`, `MozOutlineStyle`, `MozOutlineWidth`, `MozOutlineOffset`, and `MozOutlineColor`, all of which were removed in previous versions of Gecko, have been removed from `nsIDOMCSS2Properties`, which should have been done with the aliases were initially removed.
* The `nsINavHistoryQueryOptions` attribute `excludeItemIfParentHasAnnotation` has been removed, along with the corresponding query operation. It existed to support livemarks, which no longer exist.
See also
--------

* 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 58 for developers - Mozilla

Firefox 58 for developers
=========================

This article provides information about the changes in Firefox 58 that will affect developers. Firefox 58 was released on January 23, 2018.

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

### Developer Tools

* The Shape Path Editor has been enabled by default for shapes generated via `clip-path` (Firefox bug 1405339).
* The Network Monitor now has a button to pause/play recording of network traffic (Firefox bug 1005755).
* In the Network Monitor the "Flash" filter button is no longer available, and Flash requests are included in the "Others" filter (Firefox bug 1413540).
* The code for the old Responsive Design Mode (enabled by default pre-Firefox 52) has now been removed from the Devtools (Firefox bug 1305777). See Responsive Design Mode for information on the new tools.
* The option to view MDN docs from the CSS pane of the page inspector has been removed (Firefox bug 1382171) (was disabled since 55, Firefox bug 1352801).
### HTML

*No changes.*

### CSS

* The `font-display` descriptor is now available by default on all platforms (Firefox bug 1317445).
### SVG

*No changes.*

### JavaScript

* The `Promise.prototype.finally()` method has been implemented (Firefox bug 1019116).
* The `Intl.PluralRules` object has been implemented (Firefox bug 1403318).
* The `Intl.NumberFormat.prototype.formatToParts()` method has been implemented (Firefox bug 1403319).
* The `Intl.DateTimeFormat` object now supports the `hourCycle` option and the `hc` language tag (Firefox bug 1386146).
* The optional catch binding proposal has been implemented (Firefox bug 1380881).
### APIs

#### New APIs

* The `PerformanceNavigationTiming` API has been implemented (Firefox bug 1263722).
    + Gecko has also been given a pref that can be used to disable the interface if required — `dom.enable_performance_navigation_timing`, defaulting to `true` (Firefox bug 1403926).

#### DOM

* Errors reported via error objects in certain APIs — for example in the `error` property of `FileReader`, `IDBRequest`, and `IDBTransaction`, and when requests made via certain methods of `RTCPeerConnection` are unsuccessful — are now represented by `DOMException` instances. `DOMError` is now deprecated, having been removed from the DOM4 spec (Firefox bug 1120178).
* The `PerformanceResourceTiming.workerStart` property is now supported (Firefox bug 1191943).
* Budget-based background timeout throttling has been implemented — see Policies in place to aid background page performance for more details (Firefox bug 1377766).

#### DOM events

*No changes.*

#### Media and WebRTC

* The prefixed version of `HTMLMediaElement.srcObject` has been removed; make sure code is updated to use the standard `srcObject` instead of `mozSrcObject` (Firefox bug 1183495).
* Using `MediaStream.addTrack()` to add tracks to a stream obtained using `getUserMedia()`, then attempting to record the resulting stream now works as expected. Previously, only the tracks originally included in the stream returned by `getUserMedia()` were being included in the recorded media (Firefox bug 1296531).
* The WebVTT `VTTRegion` interface has always been created when interpreting WebVTT files, but the resulting regions were not previously utilized. Starting in Firefox 58, they are, if you enable the preference `media.webvtt.regions.enabled` by setting its value to `true`.

#### Canvas and WebGL

* Support for prefixed WebGL extensions has been removed (Firefox bug 1403413):
    + For `MOZ_WEBGL_compressed_texture_atc` use `WEBGL_compressed_texture_atc` instead.
    + For `MOZ_WEBGL_compressed_texture_pvrtc` use `WEBGL_compressed_texture_pvrtc` instead.
    + For `MOZ_WEBGL_compressed_texture_s3tc` use `WEBGL_compressed_texture_s3tc` instead.
    + For `MOZ_WEBGL_depth_texture` use `WEBGL_depth_texture` instead.
    + For `MOZ_WEBGL_lose_context` use `WEBGL_lose_context` instead.
### HTTP

* `frame-ancestors` is no longer ignored in `Content-Security-Policy-Report-Only` (Firefox bug 1380755).
* Firefox now implements a TLS handshake timeout with a default value of 30 seconds. The timeout value can be varied by editing the `network.http.tls-handshake-timeout` pref in about:config (Firefox bug 1393691).
* The `worker-src` CSP directive has been implemented (Firefox bug 1302667).
* The 425: Too Early status code and related `Early-Data` request header are now supported (Firefox bug 1406908).
### Security

*No changes.*

### Plugins

*No changes.*

### Other

* "Add to home screen" is now supported in Firefox for Android, part of the Progressive Web Apps effort (Firefox bug 1212648).
* WebAssembly now has a tiered compiler providing load time optimizations (Firefox bug 1277562), and new streaming APIs — `WebAssembly.compileStreaming()` and `WebAssembly.installStreaming()` Firefox bug 1347644.
Removals from the web platform
------------------------------

### HTML

* You can no longer nest an `<a>` element inside a `<map>` element to create a hotspot region — an `<area>` element needs to be used instead (Firefox bug 1317937).
### CSS

* The following proprietary Mozilla system metric pseudo-classes are no longer available to web content (Firefox bug 1396066):
    + `:-moz-system-metric(images-in-menus)`
    + `:-moz-system-metric(mac-graphite-theme)`
    + `:-moz-system-metric(scrollbar-end-backward)`
    + `:-moz-system-metric(scrollbar-end-forward)`
    + `:-moz-system-metric(scrollbar-start-backward)`
    + `:-moz-system-metric(scrollbar-start-forward)`
    + `:-moz-system-metric(scrollbar-thumb-proportional)`
    + `:-moz-system-metric(touch-enabled)`
    + `:-moz-system-metric(windows-default-theme)`
* The following proprietary Mozilla media features are no longer available to web content (Firefox bug 1396066):
    + `-moz-color-picker-available`
    + `-moz-is-glyph`
    + `-moz-mac-graphite-theme`
    + `-moz-mac-yosemite-theme`
    + `-moz-os-version`
    + `-moz-overlay-scrollbars`
    + `-moz-physical-home-button`
    + `-moz-scrollbar-end-backward`
    + `-moz-scrollbar-end-forward`
    + `-moz-scrollbar-start-backward`
    + `-moz-scrollbar-start-forward`
    + `-moz-scrollbar-thumb-proportional`
    + `-moz-swipe-animation-enabled`
    + `-moz-windows-accent-color-in-titlebar`
    + `-moz-windows-classic`
    + `-moz-windows-compositor`
    + `-moz-windows-default-theme`
    + `-moz-windows-glass`
    + `-moz-windows-theme`
* The proprietary Mozilla `:-moz-styleeditor-transitioning` pseudo-class is no longer available to web content (Firefox bug 1396099).
### JavaScript

* The non-standard `Date.prototype.toLocaleFormat()` method has been removed (Firefox bug 818634).
* The non-standard and deprecated `Object.prototype.watch()` and `unwatch()` methods have been removed and will no longer work (Firefox bug 638054). Consider using setters and getters or proxies instead.
* The legacy Iterator protocol, the `StopIteration` object, the legacy generator functions and the non-standard `Function.prototype.isGenerator()` method have been removed. Use the ES2015 iteration protocols and standards-compliant iterators and generators instead (Firefox bug 1083482, Firefox bug 1413867, Firefox bug 1119777).
* The non-standard Array comprehensions and Generator comprehensions have been removed (Firefox bug 1414340).
### APIs

* The proprietary `moz-blob` and `moz-chunked-text` values of the `XMLHttpRequest.responseType` property were removed completely in Firefox 58 (Firefox bug 1397145, Firefox bug 1397151, Firefox bug 1120171).
* The `dom.abortController.enabled` and `dom.abortController.fetch.enabled` prefs that controlled exposure of the Abort API functionality have now been removed, since those features are now enabled by default (Firefox bug 1402317).
* The proprietary `mozSrcObject` property was removed in Firefox 58 (Firefox bug 1183495). Use the standard `HTMLMediaElement.srcObject` property instead.
### SVG

*No changes.*

Changes for add-on and Mozilla developers
-----------------------------------------

### WebExtensions

* browserSettings
    + browserSettings.webNotificationsDisabled has been implemented (bug 1364942)
* browsingData
    + browsingData.localStorage now supports deleting localStorage by host (bug 1388428)
* pkcs11 API to manage security devices (Bug 1357391)
* privacy
    + first party isolation can now be toggled though firstPartyIsolate (bug 1409045)
    + resist fingerprinting pref can now be toggle through resistFingerprinting (bug 1397611)
* tabs
    + tabs.discard has been implemented (Bug 1322485)
    + isArticle, isInReaderMode properties of Tab implemented (Bug 1381992)
    + toggleReaderMode() method implemented (Bug 1381992)
    + openInReaderMode option of tabs.created implemented (Bug 1408993)
    + tabs.onUpdated now notifies when entering/exiting reader mode (Bug 1402921)
* theme
    + getCurrent() method to obtain current theme properties (Bug 1349944)
    + onUpdated method to receive WebExtension theme updates (Bug 1349944)
    + colors.bookmark\_text now supported as alias of colors.toolbar\_text (Bug 1412595)
    + colors.toolbar\_top\_separator, colors.toolbar\_bottom\_separator and colors.toolbar\_vertical\_separator implemented (Bug 1347190)
* webRequest
    + webRequest.onBeforeRequest now includes a "frameAncestors" parameter
Older versions
--------------

* Firefox 57 for developers
* Firefox 56 for developers
* Firefox 55 for developers
* Firefox 54 for developers
* Firefox 53 for developers
* Firefox 52 for developers
* Firefox 51 for developers
* Firefox 50 for developers
* Firefox 49 for developers
* Firefox 48 for developers
* Firefox 47 for developers
* Firefox 46 for developers
* Firefox 45 for developers
* Firefox 44 for developers
* Firefox 43 for developers
* Firefox 42 for developers
* Firefox 41 for developers
* Firefox 40 for developers
* Firefox 39 for developers
* Firefox 38 for developers
* Firefox 37 for developers
* Firefox 36 for developers
* Firefox 35 for developers
* Firefox 34 for developers
* Firefox 33 for developers
* Firefox 32 for developers
* Firefox 31 for developers
* Firefox 30 for developers
* Firefox 29 for developers
* Firefox 28 for developers
* Firefox 27 for developers


Firefox 69 for developers - Mozilla

Firefox 69 for developers
=========================

This article provides information about the changes in Firefox 69 that will affect developers. Firefox 69 was released on September 3, 2019.

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

### Developer tools

#### Debugger

* Event Listener Breakpoints let you diagnose which code a page executes in response to browser events. You can pick specific types, such as `click` or `keydown`, or whole categories of events, like all mouse input events. (Firefox bug 1526082).
* Scripts shown in the debugger's source list pane can now be saved via the *Download file* context menu option (Firefox bug 888161).
* In the debugger's source list pane, loaded extensions are listed with their name, rather than just their UUID (Firefox bug 1486416), making it much easier to find the extension code you want to debug.
* The debugger now loads significantly faster via lazy-loading scripts (Firefox bug 1527488).

#### Console

* Browser Console messages from tracking protection errors, CSP errors, and CORS errors are grouped automatically to reduce noise from repeated blocked resources and storage access (Firefox bug 1522396).
* All visible logs in the console can shared by saving to a file or copying to clipboard via a new *Export visible messages to* context menu item (Firefox bug 1517728).
* The console's toolbar now responsively reduces its height into a single row to save vertical space (Firefox bug 972530).
* Messages from content can now be hidden in the console to focus on logs from the Firefox UI (Firefox bug 1523842).

#### Network

* Resources that got blocked because of CSP or Mixed Content are now shown in the Network panel, with details of the reason (Firefox bug 1556451).
* A new optional *URL* column in the Network panel can be enabled to show the full URL for resources (Firefox bug 1341155).

#### Inspector

* When you hover over an element in the Page Inspector, the infobar that appears now includes the fact that an element is a flex container, or flex item (Firefox bug 1521188).
* When inspecting a page containing a grid with a subgrid, the parent grid's overlay lines are displayed whenever the subgrid's lines are displayed; if the parent grid's overlay checkbox is unselected, then its lines are translucent (Firefox bug 1550519).

#### Remote debugging

* For our mobile web developers, we have migrated remote debugging from the old WebIDE into a re-designed about:debugging, making the experience of debugging GeckoView on remote devices via USB much better (Firefox bug 1462208).

#### General

* The DevTools panel order has been changed to reflect popularity (Firefox bug 1558630).
### HTML

* In order to align more closely to the specification, the text track associated with a `<track>` element no longer loads the WebVTT file containing the text cues if the element is created in its default `disabled` `mode`. To access or manipulate the cues when the `mode` is `disabled`, change the `mode` to either `started` or `hidden`; this will trigger loading of the WebVTT data (Firefox bug 1550633).

#### Removals

* The HTML `<keygen>` element has been removed from Firefox. It was deprecated some time ago, and its purpose has generally been supplanted by other technologies (Firefox bug 1315460).
### CSS

* We implemented the `break-spaces` value of the `white-space` property (Firefox bug 1351432).
* The SVG geometry attributes (such as `width` and `height`) can now also be defined as CSS properties (Firefox bug 1383650).
* The `::cue` selector — used to style the captions ("cues") displayed by WebVTT — now enforces the limitations on which CSS properties may be used within cues, as per the specification (Firefox bug 1321488).
* We've restricted the properties that may apply to `::marker` as per the specification (Firefox bug 1552578)
* The `overflow-block` and `overflow-inline` properties have been implemented (Firefox bug 1470695).
* We added the ability to test for support of a selector when using CSS Feature Queries (`@supports`), with the `selector()` method (Firefox bug 1513643).
* The `user-select` property — which specifies whether or not the user is able to select text in the affected element — has been unprefixed (Firefox bug 1492739).
* We implemented local-specific casing behavior for Lithuanian (Firefox bug 1322992), as seen in this example.
* We've implemented the `line-break` property of CSS Text (Firefox bug 1011369 and Firefox bug 1531715).
* The `contain` property — which allows developers to define that an element and its contents are mostly independent of the rest of the DOM tree — got implemented Firefox bug 1487493.
### SVG

* We've added support for gzip-compressed SVG-in-OpenType (Firefox bug 1359240).
* The `SVGGeometryElement.isPointInFill()` and `SVGGeometryElement.isPointInStroke()` methods have been implemented (Firefox bug 1325319).
### JavaScript

* Public class fields are enabled by default (Firefox bug 1555464). See also Class fields for more information.
* The promise rejection events `unhandledrejection` and `rejectionhandled` are now enabled by default (Firefox bug 1362272). To learn more about how these work, see Promise rejection events.
### HTTP

* The HTTP headers `Access-Control-Expose-Headers`, `Access-Control-Allow-Methods`, and `Access-Control-Allow-Headers` now accept a wildcard value "`*`" for requests without credentials (Firefox bug 1309358). This change has also been uplifted to Firefox 68 ESR.
### APIs

#### New APIs

* The Resize Observer API is supported by default (Firefox bug 1543839).
* The Microtask API (`queueMicrotask()`) has been implemented (Firefox bug 1480236).

#### DOM

* The `DOMMatrix`, `DOMPoint`, and related objects are now supported in workers (Firefox bug 1420580).
* The `pageX` and `pageY` properties have been moved from `UIEvent` to `MouseEvent`, for better spec compliance (Firefox bug 1178763). These properties are no longer exposed to the `CompositionEvent`, `FocusEvent`, `InputEvent`, `KeyboardEvent`, and `TouchEvent` interfaces, which all inherit from `UIEvent`.
* The `Blob.text()`, `Blob.arrayBuffer()`, and `Blob.stream()` methods are now implemented (Firefox bug 1557121).
* `DOMMatrix.fromMatrix()` has been implemented (Firefox bug 1560462).
* We now support the six-parameter version of the `DOMMatrix.scale()` method (Firefox bug 1397945).
* The arguments for `DOMMatrix.translate()`, `DOMMatrix.skewX()`, and `DOMMatrix.skewY()` are now all optional, as per spec (Firefox bug 1397949).
* The `Navigator.userAgent`, `Navigator.platform`, and `Navigator.oscpu` properties no longer reveal whether a user is running 32-bit Firefox on a 64-bit OS (Firefox bug 1559747). They now say `Linux x86_64` instead of `Linux i686 on x86_64`, and `Win64` instead of `WOW64`.
* The remaining methods of `HTMLDocument` have been moved to `Document`. This should have no appreciable impact on your work in most cases. In particular, the `close()`, `open()`, and `write()` methods have been moved. So have the various editor related methods, including `execCommand()` as well as various properties (Firefox bug 1549560).
* We have implemented `AbstractRange` and `StaticRange` (Firefox bug 1444847).

#### Media, Web Audio, and WebRTC

* For improved user security, and in-keeping with the latest versions of the Media Capture and Streams specification, the `navigator.mediaDevices` property is no longer present if the context is insecure. To use `getUserMedia()`, `getDisplayMedia()`, `enumerateDevices()`, and so forth, be sure your content is loaded using HTTPS (Firefox bug 1528031).
* The Web Audio API's `AudioParam.value` property now returns the actual value of the property at the current time, taking into account all scheduled or graduated value changes. Previously, Firefox only returned the most recent explicitly-set value (as through using the `value` setter) (Firefox bug 893020).
* We've updated `MediaStreamAudioSourceNode` to use the new, lexicographical, ordering for tracks. Previously, track ordering was up to the individual browser, and could even change arbitrarily. In addition, attempting to create a `MediaStreamAudioSourceNode` using a stream that has no audio tracks now throws an `InvalidStateError` exception (Firefox bug 1553215).
* The `facingMode`, `deviceId`, and `groupId` settings are now included as members of the `MediaTrackSettings` object returned by calls to `MediaStreamTrack.getSettings()` (Firefox bug 1537986).

#### Removals

* The `DOMMatrix.scaleNonUniformSelf()` method has been removed (Firefox bug 1560119).
### WebDriver conformance (Marionette)

#### Other

* Marionette now dynamically handles the opening and closing of modal dialogs and user prompts (Firefox bug 1477977), which also means that multiple open prompts will be handled (Firefox bug 1487358).
* Tracking protection and DOM push features are now disabled by default to avoid the removal of parts of the DOM, and extra notifications (Firefox bug 1542244).
* Automatic unloading of background tabs if Firefox runs into a low memory condition is now disabled — this badly interacts with automation when switching between tabs (Firefox bug 1553748).
Changes for add-on developers
-----------------------------

### API changes

* The UserScripts API is now enabled by default.
* The `topSites.get()` method now has new options available — `includePinned` and `includeSearchShortcuts` (Firefox bug 1547669).
### Other changes

* There are now Group Policy options to blacklist all extensions except the ones that have been whitelisted (Firefox bug 1522823).
See also
--------

* Hacks release post: Firefox 69 — a tale of Resize Observer, microtasks, CSS, and DevTools
Older versions
--------------

* Firefox 68 for developers
* Firefox 67 for developers
* Firefox 66 for developers
* Firefox 65 for developers
* Firefox 64 for developers
* Firefox 63 for developers
* Firefox 62 for developers
* Firefox 61 for developers
* Firefox 60 for developers
* Firefox 59 for developers
* Firefox 58 for developers
* Firefox 57 for developers
* Firefox 56 for developers
* Firefox 55 for developers
* Firefox 54 for developers
* Firefox 53 for developers
* Firefox 52 for developers
* Firefox 51 for developers
* Firefox 50 for developers
* Firefox 49 for developers
* Firefox 48 for developers
* Firefox 47 for developers
* Firefox 46 for developers
* Firefox 45 for developers
* Firefox 44 for developers
* Firefox 43 for developers
* Firefox 42 for developers
* Firefox 41 for developers
* Firefox 40 for developers
* Firefox 39 for developers
* Firefox 38 for developers


Firefox 22 for developers - Mozilla

Firefox 22 for developers
=========================

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

### HTML

* The HTML5 `<data>` element has been implemented (Firefox bug 839371).
* The HTML5 `<time>` element has been implemented (Firefox bug 629801).
* The `range` state of the `<input>` element (`<input type="range">`) has been implemented, behind the preference `dom.experimental_forms_range`, only enabled by default on Nightly and Aurora channel (Firefox bug 841948).
* The support for the `<template>` element, part of the Web component specification has been implemented (Firefox bug 818976).
### JavaScript

* Asm.js optimizations are enabled, making it possible to compile C/C++ applications to a subset of JavaScript for better performance.
* ES2015 Arrow Function syntax has been implemented (Firefox bug 846406).
* The new Object.is function has been added (Firefox bug 839979).
* `arguments` in generator expressions is now inherited from enclosing lexical scope (Firefox bug 848051).
* The ES2015 Proxy `preventExtensions` trap have been implemented (Firefox bug 789897).
### DOM

* Support for the `multipart` property on `XMLHttpRequest` and `multipart/x-mixed-replace` responses in `XMLHttpRequest` has been removed. This was a Gecko-only feature that was never standardized. Server-Sent Events, Web Sockets or inspecting `responseText` from progress events can be used instead.
* Support for Web Notifications has been landed (Firefox bug 782211).
* The `FormData` `append` method now accepts a third optional `filename` parameter (Firefox bug 690659).
* `Node.isSupported` has been removed (Firefox bug 801562).
* `Node.setUserData` and `Node.getUserData` has been removed for web content and are deprecated for chrome content (Firefox bug 842372).
* The `Element.attributes` property has been moved there from `Node` as required by the spec (Firefox bug 844134).
* The Mac OS X backend for **Ambient Light Events** has been implemented.
* Elements in the HTML namespace with local names `<bgsound>`, `<multicol>`, and `<image>` no longer implement the `HTMLSpanElement` interface. `<bgsound>` implements `HTMLUnknownElement` and `<image>` implements `HTMLElement`.
* The `NodeIterator.detach` method has been changed to do nothing (Firefox bug 823549).
* The `BlobEvent` interface has been implemented (Firefox bug 834165).
* The properties `HTMLMediaElement.crossorigin` and `HTMLInputElement.inputmode` has been removed to match the spec in `HTMLMediaElement.crossOrigin` and `HTMLInputElement.inputMode`, respectively (Firefox bug 847370 and Firefox bug 850346).
* WebRTC: the Media Stream API and Peer Connection API are now supported by default.
* Web Components: the `Document.register` method has been implemented (Firefox bug 783129).
* The `ProgressEvent.initProgressEvent()` constructor method has been removed. Use the standard constructor, `ProgressEvent()` to construct and initialize `ProgressEvent` (Firefox bug 843489).
* Manipulated data associated with a `cut`, `copy`, or `paste` event can now be accessed via the `ClipboardEvent.clipboardData` property (Firefox bug 407983).
* The `HTMLTimeElement` interface has been implemented (Firefox bug 629801).
* When a `Worker` constructor is passed an invalid URL, it now throws `DOMException` of type `SECURITY_ERR` (Firefox bug 587251).
### CSS

* Support for CSS Flexbox layout has been enabled by default (Firefox bug 841876).
* Following a spec change, the initial value for `min-width` and `min-height` has been changed back to `0`, even on flex items (Firefox bug 848539).
* Support for CSS Conditionals (`@supports` and `CSS.supports()`) has been enabled by default (Firefox bug 855455).
* Support for `background-clip` and `background-origin` properties in the `background` shorthand has been implemented (Firefox bug 570896).
Changes for add-on and Mozilla developers
-----------------------------------------

* The `properties` parameter has been removed from the `nsITreeView.getCellProperties()`, `nsITreeView.getColumnProperties()` and `nsITreeView.getRowProperties()` methods of `nsITreeView`. These methods should now return a string of space-separated property names (Firefox bug 407956).
* The `inIDOMUtils.getCSSPropertyNames()` method has been implemented and will return all supported CSS property names.
* See here for more changes.
### Firefox Developer Tools

* Font inspector shows which fonts on your computer are applied to the page.
* Visual paint feedback mode shows when and where a page is repainted.
* The dev tools may now be docked to the right side, not just the bottom of the browser.
* Some panes within the dev tools have switched from XUL to HTML. For example, the CSS rule viewer is now chrome://browser/content/devtools/cssruleview.xhtml, not `cssruleview.xul`. Instead of adding an overlay directly to extend features of these panes, you may add an overlay and script to the outer xul document, to add load listeners and change these HTML documents.
* The stack trace is now shown as a breadcrumb near the top, and the script listing is now at the left panel of the debugger.
See also
--------

* Firefox 22 Beta Release Notes
* Add-on Compatibility for Firefox 22
### Versions

* 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 123 for developers - Mozilla

Firefox 123 for developers
==========================

This article provides information about the changes in Firefox 123 that affect developers. Firefox 123 is the current Nightly version of Firefox and ships on February 20, 2024.

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

### Developer Tools

### HTML

#### Removals

### CSS

#### Removals

### JavaScript

#### Removals

### SVG

#### Removals

### HTTP

#### Removals

### Security

#### Removals

### APIs

#### DOM

#### Media, WebRTC, and Web Audio

#### Removals

### WebAssembly

#### Removals

### WebDriver conformance (WebDriver BiDi, Marionette)

#### General

#### WebDriver BiDi

#### Marionette

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

* Addition of fhe `contextualIdentities.move` function enables items to be moved in the list of contextual identities. This function enables extensions to customize the order in which contextual identities display in the UI (Firefox bug 1333395).
### Removals

### Other

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

These features are newly shipped in Firefox 123 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.

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

* Firefox 122 for developers
* 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 80 for developers - Mozilla

Firefox 80 for developers
=========================

This article provides information about the changes in Firefox 80 that will affect developers. Firefox 80 was released on August 25, 2020.

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

### Developer Tools

* You can now block and unblock network requests using the `:block` and `:unblock` helper commands in the Web Console (Firefox bug 1546394).
* When adding a class to an element in the Page Inspector's Rules pane, existing classes are suggested with autocomplete (Refer to Firefox bug 1492797).
* When the Debugger breaks on an exception, the tooltip in the source pane now shows a disclosure triangle that reveals a stack trace (Firefox bug 1643633).
* In the Network Monitor request list, a turtle icon is shown for "slow" requests that exceed a configurable threshold for the waiting time (Firefox bug 1648373).
### HTML

*No changes.*

### CSS

* The standard, unprefixed `appearance` property is now supported; existing `-moz-appearance` and `-webkit-appearance` are now aliases of the unprefixed property (Firefox bug 1620467).
### JavaScript

* The ECMAScript 2021 `export * as namespace` syntax for the `export` statement is now supported (Firefox bug 1496852).
### HTTP

* Previously, when the fullscreen directive was applied to an `<iframe>` (i.e. via the `allow` attribute), it didn't work unless the `allowfullscreen` attribute was also present This has now been fixed (Firefox bug 1608358).
### APIs

#### DOM

* Web Animations API compositing operations are now enabled — see `KeyframeEffect.composite` and `KeyframeEffect.iterationComposite` (Firefox bug 1652676).

#### Removals

* The `outerHeight` and `outerWidth` features of `Window.open()` are no longer exposed to web content (Firefox bug 1623826).
### WebAssembly

* Atomic operations are now allowed on non-shared memories (Firefox bug 1619196).
### WebDriver conformance (Marionette)

* Using `WebDriver:NewWindow` to open a new tab no longer returns too early when running tests in headless mode (Firefox bug 1653281).
* We removed the `name` argument for `WebDriver:SwitchToWindow` — it is not supported for W3C-compatible mode, and shouldn't be used anymore (Firefox bug 1588424).
* We've started to add Fission support for the following commands: `WebDriver:FindElement`, `WebDriver:FindElements`, `WebDriver:GetElementAttribute`, `WebDriver:GetElementProperty`.
* **Known issue**: Opening a new tab by using `WebDriver:NewWindow`, or via an arbitrary script that calls `window.open()`, now automatically switches to that new window (Firefox bug 1661495).
Changes for add-on developers
-----------------------------

*No changes.*

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

* 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 49 for developers


Firefox 40 for developers - Mozilla

Firefox 40 for developers
=========================

To test the latest developer features of Firefox, install Firefox Developer Edition Firefox 40 was released on August 11, 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:

* Improvements to the Animations view
* Get help from MDN for CSS property syntax
* Edit filters in the Page Inspector
* Web Console now shows messages from workers
* Filter requests by URL in the Network Monitor
* Many new context menu options in the Network Monitor
* Show when network resources are fetched from the browser cache
* Filter rules in the Page Inspector

More:

* Break at debugger; statements in unnamed eval sources
* Copy URL/Open in New Tab context menu items for Debugger source list pane
* console.dirxml support in the Web Console
* Style Editor: "Open Link In New Tab" item added to stylesheet list
* Inspector selector search now includes class/id results even without css prefix
* Tooltips in box-model view saying which CSS rule caused the value
* Switch between color unit format in the Inspector using Shift+click
* Implement "Scroll Into View" menu item for the Inspector
* Linkify url/id/resource attributes in the Inspector
* IP address tooltip in the Network Monitor

Everything: all devtools bugs fixed between Firefox 39 and Firefox 40.

### CSS

* Prefixed rules (`-moz-`) for `text-decoration-color`, `text-decoration-line`, and `text-decoration-style` have been removed (Firefox bug 1097922).
* The property `text-align` now supports the `match-parent` value (Firefox bug 645642).
* In Quirks Mode, `empty-cells` now defaults to `show`, like in standard mode (Firefox bug 1020400).
* The `-moz-orient` non-standard property, used to style `<meter>` and `<progress>` element has been adapted for vertical writing-modes: the value `auto` has been dropped and the values `inline` and `block` added, with `inline` being the new default value (Firefox bug 1028716).
* The property `font-size-adjust` has been fixed so that `0` is treated as a multiplier (leading to a `0` height for the font, hence hiding it) instead of the `none` value (leading to no adjustment, or a `1.0` value) (Firefox bug 1144885).
* Fix text-overflow doesn't work in vertical writing mode (Firefox bug 1117227).
### HTML

*No change.*

### JavaScript

* Unreachable code after `return` statement (including unreachable expression after semicolon-less return statements) will now show a warning in the console (Firefox bug 1005110, Firefox bug 1151931).
* `Symbol.match` has been added (Firefox bug 1054755).
* Passing an object which has a property named `Symbol.match` with a truthy value to `String.prototype.startsWith`, `String.prototype.endsWith`, and `String.prototype.contains` now throws a `TypeError` (Firefox bug 1054755).
* `RegExp` function returns pattern itself if called without `new` and pattern object has a property named `Symbol.match` with a truthy value, and the pattern object's `constructor` property equals to `RegExp` function. (Firefox bug 1147817).
* Support for the non-standard JS1.7 destructuring for-in has been dropped (Firefox bug 1083498).
* Non-standard initializer expressions in `for...in` loops are now ignored and will present a warning in the console. (Firefox bug 748550 and Firefox bug 1164741).
* `\u{xxxxxx}` Unicode code point escapes have been added (Firefox bug 320500).
* `String.prototype.contains` has been replaced with `String.prototype.includes`, `String.prototype.contains` is kept as an alias (Firefox bug 1102219).
* If the `DataView` constructor is called as a function without the `new` operator, a `TypeError` is now thrown as per the ES2015 specification.
* An issue regressed in Firefox 21, where proxyfied arrays without the `get` trap were not working properly, has been fixed. If the `get` trap in a `Proxy` was not defined, `Array.length` returned `0` and the `set` trap didn't get called. A workaround was to add the `get` trap even if was not necessary in your code. This issue has been fixed now (Firefox bug 895223).
* `WeakMap.prototype` and `WeakSet.prototype` have been updated to be just ordinary objects, per ES2015 specification (Firefox bug 1055473).
### Interfaces/APIs/DOM

#### New APIs

* The Push API has been experimentally implemented (Firefox bug 1038811). Controlled by the `services.push.enabled` pref, it is disabled by default.

#### Web Animations API

Improvement in our experimental Web Animations implementation, mostly to match latest spec changes:

* `AnimationPlayer.currentTime` now can also be set (Firefox bug 1072037).
* `Animatable.getAnimationPlayers()`, available on `Element` has been renamed to `Element.getAnimations()` (Firefox bug 1145246).
* `Animation` and `AnimationEffect` have been merged into the newly created `KeyframeEffectReadOnly` (Firefox bug 1153734).
* `AnimationPlayer` has been renamed to `Animation` (Firefox bug 1154615).
* `AnimationTimeline` is now an abstract class, with `DocumentTimeline` its only implementation (Firefox bug 1152171).

#### CSSOM

* The CSS Font Loading API is now enabled by default in Nightly and Developer Edition releases (Firefox bug 1088437). It is still deactivated by default in Beta and Release browsers.
* The `CSSCharsetRule` interface has been removed and such objects are no longer available in CSSOM (Firefox bug 1148694). This matches the spec (recently adapted) and Chrome behavior.

#### WebRTC

* WebRTC: the `negotiationneeded` event is now also sent for initial negotiations, not only for re-negotiations (Firefox bug 1149838).

#### DOM & HTML DOM

* When unable to parse the `srcset`, the `HTMLImageElement.currentSrc` method doesn't return `null` anymore but `""`, as requested by the latest specification (Firefox bug 1139560).
* Like for images, Firefox now throttles `Window.requestAnimationFrame()` for non-visible `<iframe>` (Firefox bug 1145439).
* `Navigator.taintEnabled` is no longer available for Web workers (Firefox bug 1154878).

#### Web Audio API

New extensions to the Web Audio API:

* The `AudioContext.state` and `AudioContext.onstatechange` properties as well as the methods `AudioContext.suspend()`, `AudioContext.resume()`, and `AudioContext.close()` have been added (Firefox bug 1094764).
* `AudioBufferSourceNode` now implements the `AudioBufferSourceNode.detune` k-rate attribute (Firefox bug 1153783).

#### Web Workers

* Slight improvement in our Service Worker API: the `update()` method has been moved from `ServiceWorkerGlobalScope` to `ServiceWorkerRegistration` (Firefox bug 1131350).
* `ServiceWorkerRegistration` is now available in Web workers (Firefox bug 1131327).
* `DataStore` is now available in Web workers (Firefox bug 916196).

#### IndexedDB

* `IDBTransaction` are now non-durable by default (Firefox bug 1112702). This favors performance over reliability and matches what other browsers are doing. For more information, read our durability definition.

#### Dev Tools

* The property `console.timeStamp()` has been added (Firefox bug 922221).
### MathML

*No change.*

### SVG

*No change.*

### Audio/Video

*No change.*

Networking
----------

*No change.*

Security
--------

* Using an asterisk (`*`) in a CSP does not include the schemes `data:`, `blob:` or `:filesystem` anymore when matching source expressions. So those schemes now need to be explicitly defined within the related header to match the CSP (Firefox bug 1086999).
Changes for add-on and Mozilla developers
-----------------------------------------

### XUL

* It is no longer possible to create transparent top-level windows Firefox bug 1162649.
### JavaScript code modules

* Dict.jsm has been removed Firefox bug 1123309. Use `Map` instead.
### XPCOM

* The `nsIClassInfo.implementationLanguage` attribute has been removed, along with the `nsClassInfo::GetImplementationLanguage()` function.
* The following XPCOM interfaces have been removed; you should use the standard HTML interfaces instead:
    + `nsIDOMHTMLBRElement`
    + `nsIDOMDivElement`
    + `nsIDOMHTMLHeadingElement`
    + `nsIDOMHTMLTableCaptionElement`
    + `nsIDOMHTMLTableElement`
    + `nsIDOMHTMLTitleElement`
### Other

* Places Keywords API has been deprecated and will be removed soon (Firefox bug 1140395).
* The automated testing system now supports skipping individual test functions. See running conditional tests in XPCShell testing.
Older versions
--------------

* 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 9 for developers


Firefox 98 for developers - Mozilla

Firefox 98 for developers
=========================

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

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

### HTML

* The HTML `<dialog>` element is now available by default. This element and its associated DOM APIs provide support for HTML-based modal dialog boxes (Firefox bug 1733536).
### CSS

* The `hyphenate-character` property sets a string that is used instead of a hyphen character (`-`) at the end of a hyphenation line break (Firefox bug 1751024).
### JavaScript

No notable changes

### APIs

* `navigator.registerProtocolHandler()` can now register protocol handlers for the `ftp`, `sftp`, and `ftps` schemes (Firefox bug 1705202).

#### DOM

* `HTMLElement.outerText` is now supported (Firefox bug 1709790).
* The properties `colorSpaceConversion`, `resizeWidth` and `resizeHeight` can be passed to the method `createImageBitmap()` using the `options` object (Firefox bug 1748868 and Firefox bug 1733559).

#### Removals

* The deprecated WebVR API is now disabled by default on all builds (previously it was enabled on Windows, macOS, and all nightly/dev builds).
 It can be re-enabled in `about:config` by setting `dom.vr.enabled` to `true` (Firefox bug 1750902).
### WebDriver conformance (Marionette)

* Improved initial page load checks for newly opened tabs (Firefox bug 1747359).
Changes for add-on developers
-----------------------------

* Web extensions using `webRequest` were started early during Firefox startup. This has changed to only trigger early start-up for extensions using `webRequest` blocking calls. Non-blocking calls no longer cause the early startup of an extension. (Firefox bug 1749871)
* `cookieStoreId` added to `userScripts.register`. This enables extensions to register container-specific user scripts (Firefox bug 1738567).
Older versions
--------------

* 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 67 for developers


Firefox 71 for Developers - Mozilla

Firefox 71 for Developers
=========================

This article provides information about the changes in Firefox 71 that will affect developers. Firefox 71 was released on December 3, 2019.

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

### Developer tools

Console:

* The Console's multi-line mode is now available by default.
* Console configuration options are now combined in a new toolbar settings menu (Firefox bug 1523868).

JavaScript debugger:

* Inline variable preview has been enabled (Firefox bug 1576679).
* Logging on events is now available (Firefox bug 1110276), as is the ability to filter by event type.
* The new debugger paused overlay can now be disabled using the `devtools.debugger.features.overlay` pref (Firefox bug 1579768).
* We've got new keyboard shortcuts for opening the debugger: `Ctrl` + `Shift` + `Z` on Linux/Windows and `Cmd` + `Opt` + `Z` on macOS (Firefox bug 1583042).
* Pausing on a DOM Mutation Breakpoints now mentions the DOM node that has the breakpoint and, if available, the child node that was added/removed (Firefox bug 1576145).
* Locations in pretty printed sources are now correct after pretty-printing and when jumping to the source from the Inspector's events listener tooltip (Firefox bug 1500222).

Network Monitor:

* The Web sockets inspector is now enabled by default (Firefox bug 1573805).
* You can now do a full-text search of request/response bodies, headers, and cookies.
* You can now enter patterns to block specific URLs from loading.
* The Timings tab now exposes timing data sent in the `Server-Timing` header (Firefox bug 1403051).

Page Inspector:

* Color swatches are now shown next to CSS variable definitions that have color values (Firefox bug 1456167).
* `:visited` styles are now shown in the CSS rules view (Firefox bug 713106).
### CSS

* Added the subgrid value from CSS Grid Level 2 to `grid-template-columns` and `grid-template-rows` (Firefox bug 1580894)
* Added support for the `column-span` property to Multiple-column Layout (Firefox bug 1426010)
* Added support for the `path()` value of `clip-path` (Firefox bug 1488530)
* Mapped the `height` and `width` HTML attributes on the `<img>` element to an internal `aspect-ratio` property (Firefox bug 1585637). See the guide to this feature on MDN.

#### Removals

* CSS Radial Gradients no longer accept negative radii (Firefox bug 1583736).
### JavaScript

* The `Promise.allSettled()` method is now supported (Firefox bug 1549176). This method lets you easily wait until every promise in a set of promises is either fulfilled or rejected before running further code.

#### Removals

* The non-standard Array generic methods have been removed in Firefox 71 (Firefox bug 1222547). They were first introduced in Firefox 1.5 and deprecated from Firefox 68 onwards. If your use case is to use array generics on array-like objects, you can convert your object to a proper array using `Array.from()` and then use standard array methods.
### MathML

* MathML elements now implement a MathML DOM and their class is `MathMLElement`. With a proper MathML DOM, you can now use `mathmlEl.style`, or global event handlers, for example. Prior to this change, MathML elements only implemented the `Element` class (Firefox bug 1571487).
### APIs

#### New APIs

The Media Session API is now partially implemented. This API provides a standard mechanism for your content to share with the underlying operating system information about the state of media it's playing. This includes metadata such as artist, album, and track name, as well as potentially album artwork (Firefox bug 1580602).

The API also provides a way to receive notifications when the device's media controls (such as play, pause, and seek buttons) are activated by the user. To that end, the `MediaSession` interface is now partially implemented, with support for setting and fetching the currently-playing media's metadata and for the `setActionHandler()` method. To access the `MediaSession` API, use the `navigator.mediaSession` property.

#### DOM

* The `StaticRange()` constructor is now supported (Firefox bug 1575980).
* The MathML `MathMLElement` interface has been implemented (Firefox bug 1571487).

#### Media, Web Audio, and WebRTC

* The `MediaRecorder` interface now implements the `audioBitsPerSecond` and `videoBitsPerSecond` properties (Firefox bug 1514158).

#### Canvas and WebGL

* The `OVR_multiview2` and `OES_fbo_render_mipmap` WebGL extensions are now exposed by default (Firefox bug 1584277, Firefox bug 1583878).

#### Removals

The following non-standard `DataTransfer` members have been removed (Firefox bug 1345192):

* `DataTransfer.mozItemCount`
* `DataTransfer.mozClearDataAt()`
* `DataTransfer.mozGetDataAt()`
* `DataTransfer.mozSetDataAt()`
* `DataTransfer.mozTypesAt()`
### WebDriver conformance (Marionette)

* Both the `WebDriver:TakeScreenshot` and `WebDriver:TakeElementScreenshot` commands have been updated to respect the unhandled prompt behavior setting (Firefox bug 1584927).
* The command `Marionette:Quit` has been updated to also allow quitting or restarting of other Gecko-driven applications besides Firefox (Firefox bug 1298921).
* For GeckoView-based browsers on Android, the returned `browserName` in the session capabilities will now always be `firefox` (Firefox bug 1587364).
Changes for add-on developers
-----------------------------

### API changes

* `downloads.download` now identifies and reports as errors the following HTTP response codes:
    + 404 returning `SERVER_BAD_CONTENT`
    + 403 returning `SERVER_FORBIDDEN`
    + 402 and Proxy 407 returning `SERVER_UNAUTHORIZED`
    + Anything else above 400 returning `SERVER_FAILED` (Firefox bug 1576333)
* `downloads.download` now includes the optional `options` parameter property `allowHttpErrors`. When set to `true`, this `boolean` flag enables a download to continue after encountering an HTTP error. When set to `false`, a download is canceled when an HTTP error is encountered. Default value: `false`. (Firefox bug 1578955)

#### Removals

* The `proxy.register()` and `proxy.unregister()` functions have been removed (Firefox bug 1443259). `proxy.onRequest` should now be used to handle the proxying of requests.
See also
--------

* Hacks release post: Firefox 71: A year-end arrival
Older versions
--------------

* 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 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 94 for developers - Mozilla

Firefox 94 for developers
=========================

This article provides information about the changes in Firefox 94 that will affect developers. Firefox 94 was released on November 2nd, 2021

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

### HTML

No notable changes

### CSS

No notable changes

### JavaScript

No notable changes

### APIs

* The `structuredClone()` global function is now supported for copying complex JavaScript objects (Firefox bug 1722576).

#### DOM

* Developers can now provide a hint for the enter key label/icon used on virtual keyboards, using either `HTMLElement.enterkeyhint` or the global attribute `enterkeyhint` (Firefox bug 1648332).
* The `HTMLScriptElement.supports()` static method is now supported. This provides a simple and unified method for feature checking whether a browser supports particular types of scripts, such as JavaScript modules or classic scripts (Firefox bug 1729239).
* The `ShadowRoot.delegatesFocus` property is now supported, allowing code to check whether the `delegatesFocus` property was set when the shadow DOM was attached (Firefox bug 1413836).
### WebDriver conformance (Marionette)

* `WebDriver:GetWindowHandle` and `WebDriver:GetWindowHandles` now return handles for browser windows instead of tabs, when chrome scope is enabled (Firefox bug 1729291)
### HTTP

* The `cache` directive of the `Clear-Site-Data` response header has been disabled by default.
 It can be enabled using the preference `privacy.clearsitedata.cache.enabled` (Firefox bug 1729291).
Changes for add-on developers
-----------------------------

* Support for `partitionKey`, the first-party URL of a cookie when it's in storage that is partitioned by top-level site, is added to `cookies.get`, `cookies.getAll`, `cookies.set`, `cookies.remove`, and `cookies.cookie`. (Firefox bug 1669716)
* When a context menu is activated, `menus.OnClickData.srcUrl` returns the raw value of the `src` attribute of the clicked element, instead of the current URL (after redirects). (Firefox bug 1659155)
Older versions
--------------

* 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 65 for developers
* Firefox 64 for developers
* Firefox 63 for developers


Firefox 36 for developers - Mozilla

Firefox 36 for developers
=========================

Firefox 36 was released on February 24th, 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:

* eval sources now appear in the Debugger
* Simpler process for connecting to Firefox for Android
* Box Model Highlighter works on remote targets
* "Invert the call tree" option in the Profiler
* Inspect DOM promises in the console
* Extra "Paste" commands in the Inspector

All devtools bugs fixed between Firefox 35 and Firefox 36.

### CSS

* The `will-change` property has been enabled by default (Firefox bug 961871).
* The `white-space` property is now working on `<textarea>` HTML elements (Firefox bug 82711).
* The `unicode-range` descriptor is now supported by `@font-face` (Firefox bug 475891), but not enabled by default.
* The properties `text-decoration-color`, `text-decoration-line`, and `text-decoration-style` are unprefixed (Firefox bug 825004). The prefixed version are still available for some time to ease transition (Firefox bug 1097922).
* The `text-decoration` property is turned into shorthand property (Firefox bug 1039488).
* The properties `object-fit` and `object-position` are now supported (Firefox bug 624647)
* The `contents` value of the `display` property has been experimentally implemented. It is preffed off by default (Firefox bug 907396).
* In Quirks mode, the `:active` and `:hover` quiver quirk has been altered to be applied less often: it is now used only on links, only if there are no pseudo-element or other pseudo-class in the element and if it isn't part of a pseudo-class element (Firefox bug 783213).
* The `isolation` property has been implemented (Firefox bug 1077872).
* CSS `<gradient>` now applies on the premultiplied colors, matching the spec and other browsers, and getting rid of unexpected gray colors appearing in them (Firefox bug 591600).
* Interpolation hint syntax has been added to `<gradient>` (Firefox bug 1074056).
* The `scroll-behavior` property has been implemented (Firefox bug 1010538).
### HTML

* Support for `<meta name="referrer">` has been added (Firefox bug 704320).
* In Firefox, `<input>` filters specified in the `accept` attribute will always be selected by default, unless there is an unknown value, that is an unknown mime type or badly formatted value in the `accept` attribute. Previously specified filters were only selected by default for `image/*`, `video/*` and `audio/*` values (Firefox bug 826185).
### JavaScript

* The ECMAScript 2015 Symbol data type has been enabled by default (was available in the Nightly channel since version 33) (Firefox bug 1066322):
    + `Symbol`
    + `Symbol.for()`
    + `Symbol.keyFor()`
    + `Object.getOwnPropertySymbols()`
* The old placeholder string `"@@iterator"` has been replaced with the real ES2015 well-known symbol `Symbol.iterator` for the iterable interface property key (Firefox bug 918828).
* The spec-internal abstract operation `ToNumber(string)` now supports binary (`0b`) and octal (`0o`) literals, this is a potentially breaking change from ES5 (Firefox bug 1079120).
    + `Number("0b11")` now returns `3`, not `NaN`.
    + `"0o11" == 9` now returns `true`, not `false`.
* The `const` declaration is now block-scoped and requires an initializer (Firefox bug 611388). It also can not be redeclared anymore (Firefox bug 1095439).
    + `{const a=1}; a;` now throws a `ReferenceError` and does not return `1` anymore due to block-scoping.
    + `const a;` now throws a `SyntaxError` ("missing = in const declaration`"`): An initializer is required.
    + `const a = 1; a = 2;` now also throws a `SyntaxError` ("invalid assignment to const a").
* The ES2016 method `Array.prototype.includes` has been implemented, but for now, it is only enabled in Nightly builds (Firefox bug 1069063).
* The `delete` operator now triggers the "temporal dead zone" when using with `let` and `const` (Firefox bug 1074571).
* The non-standard `let` blocks and `let` expressions are deprecated and will now log a warning in the console. Do not use them anymore, they will be removed in the future.
* WeakMap constructor now handles optional iterable argument (Firefox bug 1092537).
### Interfaces/APIs/DOM

* The `CanvasRenderingContext2D.resetTransform()` method of the Canvas API has been implemented (Firefox bug 1099148).
* ECDSA is now supported in the Web Crypto API (Firefox bug 1034854).
* Our experimental implementation of WebGL 2.0 is going forward!
    + The `WebGLQuery` interface is available (Firefox bug 1048719).
    + The `WebGL2RenderingContext.invalidateFrameBuffer()` method has been implemented (Firefox bug 1076456).
* The `MediaDevices` interface, containing the `Promise`-based version of `getUserMedia()`, has been added. It is available via `Navigator.mediaDevices` (Firefox bug 1033885).
* The EME-related `Navigator.requestMediaKeySystemAccess()` method, and the related `MediaKeySystemAccess`, is now supported (Firefox bug 1095257).
* The `keyschange` event is now sent when an EME-related CDM change keys in a session (Firefox bug 1081755).
* The default values of the options for `MutationObserver.observe()` have been updated to match the latest specification (Firefox bug 973638).
* Experimental support for virtual reality devices has landed behind the `dom.vr.enabled` preference, off by default (Firefox bug 1036604).
* The function associated with `RTCPeerConnection.onsignalingstatechange` now receives an event as parameter, as per spec (Firefox bug 1075133).
* The experimental implementation of Web Animations make progress: the method `AnimationPlayer.play()` and `AnimationPlayer.pause()` are now supported (Firefox bug 1070745), as well as `AnimationPlayer.playState` (Firefox bug 1037321).
* The non-standard `DOMRequest` interface has now a `DOMRequest.then()` method (Firefox bug 839838).
* The CSSOM View scroll behavior controlling methods, `Element.scroll()`, `Element.scrollTo()`, `Element.scrollBy()`, and `Element.scrollIntoView()`, have been implemented or extended (Firefox bug 1045754 and Firefox bug 1087559).
* Assigning to `Element.innerHTML` on an `SVGElement` now create elements in the SVG namespace (Firefox bug 886390).
* The `nsIWebBrowserPersist.saveURI()` method now requires 8 arguments, in an order incompatible with previous releases.
* Support for Media Source Extensions (MSE) is activated by default in non-build releases (Nightly and Developer Edition only) (Firefox bug 1000686). It keeps being preffed off on Beta and Release version.
### MathML

*No change.*

### SVG

*No change.*

### Audio/Video

*No change.*

Networking
----------

* Support for SPDY/3 has been removed; support for SPDY/3.1 is still available (Firefox bug 1097944).
Security
--------

* RC4 is now considered as insecure and all UI indicators will react as such; SSLv3 has been disabled by default in Firefox 34, but the UI has been changed to help the user better understand what is happening (Firefox bug 1093595).
* Also, RC4 is no longer offered in the initial handshake of TLS (Firefox bug 1088915).
* The `form-action` directive of CSP 1.1 is now supported (Firefox bug 529697).
* In the preferences of Firefox, The Do not track selection widget is again an on/off switch (Firefox bug 1071747).
Changes for add-on and Mozilla developers
-----------------------------------------

### Add-on SDK

#### Highlights

* The `sdk/test/httpd` module was removed, use the addon-httpd npm module instead.
* Add badges to `sdk/ui` buttons (Firefox bug 994280).
* Implemented global `require` function to access sdk modules anywhere (Firefox bug 1070927), using:

```js
var { require } = Cu.import(
  "resource://gre/modules/commonjs/toolkit/require.js",
  {},
);
```

#### Details

GitHub commits made between Firefox 35 and Firefox 36.

### JavaScript code modules

* `PromiseUtils.resolveOrTimeout` is implemented (Firefox bug 1080466).
* `PromiseUtils.defer` (a replacement for `Promise.defer()`) is implemented (Firefox bug 1093021).
### Interfaces

#### nsIContentPolicy

New constants have been added to `nsIContentPolicy` to allow Gecko internals and add-on code to better differentiate different types of requests. These are:

`TYPE_FETCH`

Indicates a content load request initiated by the `fetch()` method.

`TYPE_IMAGESET`

Indicates a request to load an `<img>` (with the `srcset` attribute or `<picture>` element.

### XUL

*No change.*

### Other

* Firefox `-remote` command line option has been removed (Firefox bug 1080319).
Older versions
--------------

* 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 9 for developers
* Firefox 8 for developers
* Firefox 7 for developers
* Firefox 6 for developers
* Firefox 5 for developers


Firefox 106 for developers - Mozilla

Firefox 106 for developers
==========================

This article provides information about the changes in Firefox 106 that will affect developers. Firefox 106 was released on October 18, 2022.

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

### HTML

* The `<source>` element now supports `height` & `width` attributes when it is a child of a `<picture>` element.
 This functionality is an experimental feature enabled using the `dom.picture_source_dimension_attributes.enabled` preference (Firefox bug 1694741).
### MathML

* The `<semantics>` and `<maction>` MathML elements now only render the first child element by default (Firefox bug 1588733).
### CSS

* The @supports at-rule now supports the `font-tech()` and `font-format()` functions.
 These functions can be used to test whether a browser supports a given font technology or format and CSS styles can be applied based on the result (Firefox bug 1786493).
### JavaScript

No notable changes.

### HTTP

No notable changes.

### Security

No notable changes.

### APIs

#### DOM

* The `HTMLMetaElement.media` property is now supported. This property enables you to set different theme colors based on `media` values (e.g. `max-width: 600px`).
 Meta elements with `media` properties allow the browser to use the `content` value in conjunction with `theme-color` to set the page or UI colors for a given media query (Firefox bug 1706179).
### WebAssembly

No notable changes.

### WebDriver conformance (WebDriver BiDi, Marionette)

#### WebDriver BiDi

* Added basic support for the `script.getRealms` command that is currently limited to the `WindowRealmInfo` type which includes window realms and sandbox realms (Firefox bug 1766240).
* Added support for the `browsingContext.load` event, which is emitted when a `load` event is triggered on a BrowsingContext's window (Firefox bug 1756619).
* Added an object reference store to hold strong references for serialized remote values (Firefox bug 1770736).
* Added support for de-serializing remote references created in the object reference store (Firefox bug 1788124).
* Added full support for the `script.evaluate`, `script.callFunction` and `script.disown` commands (Firefox bug 1778976).

#### Marionette

* Added support for `wheel` input source for Actions, which is associated with a wheel-type input device (Firefox bug 1746601).
* Added support for opening and closing tabs in GeckoView based applications (eg. Firefox for Android) (Firefox bug 1506782).
Changes for add-on developers
-----------------------------

* The ability to set the `"background"` manifest key property `"persistent"` to `false` for Manifest V2 (to make a background page non-persistent) is now available by default.
* The `object-src` directive in the `"content_security_policy"` manifest key is now optional (Firefox bug 1766881). See object-src directive on the `"content_security_policy"` manifest key page for more details.
Older versions
--------------

* 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 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