Firefox 87 for developers

This article provides information about the changes in Firefox 87 that will affect developers. Firefox 87 was released on March 23, 2021.

Note: See also In March, we see Firefox 87 on Mozilla Hacks.

Changes for web developers

Developer Tools


No changes.


  • Some languages have digraphs that are always capitalized together, for example IJ in Dutch. The ::first-letter pseudo-element now respects these digraphs and treats them as a single unit (Firefox bug 92176).
  • The <link> element is no longer matched by :link, :visited, or :any-link. This aligns the behavior in Firefox to existing behavior in Chrome and to a recent spec change (Firefox bug 1687538).


  • The following Firefox-specific theme-related media features have been disabled for use in web pages (Firefox bug 787521):
    • -moz-mac-graphite-theme
    • -moz-mac-lion-theme
    • -moz-maemo-classic
    • -moz-windows-classic
    • -moz-windows-compositor
    • -moz-windows-default-theme
    • -moz-windows-theme
    • -moz-scrollbar-end-backward
    • -moz-scrollbar-end-forward
    • -moz-scrollbar-start-backward
    • -moz-scrollbar-start-forward
    • -moz-scrollbar-thumb-proportional
    • -moz-menubar-drag
  • The non-standard values of caption-side (left, right, top-outside, and bottom-outside) have been removed and placed behind the layout.css.caption-side-non-standard.enabled flag (Firefox bug 1688695).


No changes.



No changes.



  • The beforeinput event and getTargetRanges() method are now enabled by default. They allow web apps to override text edit behavior before the browser modifies the DOM tree, and provide more control over input events to improve performance. The global beforeinput event is sent to an <input> element — or any element whose contenteditable attribute is set to true — immediately before the element's value changes. The getTargetRanges() method of the InputEvent interface returns an array of static ranges that will be affected by a change to the DOM if the input event is not canceled.

WebDriver conformance (Marionette)

  • The work of rewriting Marionette to support Fission (site-isolation) has been finished, so the old Marionette implementation has been removed. The marionette.actors.enabled preference, which toggled between the new and old implementations, has therefore also been removed (Firefox bug 1669172).
  • WebDriver commands following a call to WebDriver:SwitchToFrame will no longer fail with a "no such window" error if the frame's content hasn't yet finished loading (Firefox bug 1691348).
  • After a cross-group page navigation, accessing a previously-retrieved element will now always raise a "stale element" error; there is no longer a chance that this action will lead to a "no such element" error (Firefox bug 1690308).
  • Addon:Uninstall now raises an unknown error when the id of the add-on to uninstall is unknown (Firefox bug 1693022).

Changes for add-on developers

Older versions