Firefox Tomorrow
Stable 121.0

Firefox 121.0

Tuesday, December 19, 2023 46 changes 6 categories

TL;DR

5 new features, 1 fix, 40 other changes. Highlight: Firefox now prompts Windows users to install the Microsoft AV1 Video Extension to enable hardware decoding support for the AV1 video code…

New 5 items
  1. 01

    Firefox now prompts Windows users to install the Microsoft AV1 Video Extension to enable hardware decoding support for the AV1 video codec from about:support if not already installed.

  2. 02

    Firefox now supports Voice Control commands on macOS systems.

  3. 03

    On Linux, Firefox now defaults to the Wayland compositor when available instead of XWayland. This brings support for touchpad & touchscreen gestures, swipe-to-nav, per-monitor DPI settings, better graphics performance, and more. Note that due to Wayland protocol limitations, Picture-in-Picture windows require an extra user interaction (generally right-click on the window) or a shell / desktop-environment tweak. See bug 1621261 for related discussion and tracking, this post for a KDE configuration, and this extension for GNOME. It is also a known issue that windows are not correctly placed when restoring a previous session on launch.

  4. 04

    Firefox can now force links to always be underlined. This option can be enabled in the Browsing section of the Firefox Settings menu.

  5. 05

    The PDF viewer now includes a floating button to simplify deleting drawings, text, and images added in PDFs.

Fixed 1 item
  1. 01

    Ubuntu Firefox Snap builds did not default to Wayland compositing on some systems as expected when Firefox 121 was first released. This is now fixed and updated builds can be installed with the Ubuntu Software Updater.

Security 1 item
  1. 01

    Various security fixes.

Enterprise 1 item
  1. 01

    You can find information about policy updates and enterprise specific bug fixes in the Firefox for Enterprise 121 Release Notes .

Developer 5 items
  1. 01

    Developer Information

  2. 02

    The Firefox Debugger now includes a new feature: an option to disable the debugger; keyword on the current page. This feature is accessible via a new checkbox in the Breakpoints side panel labeled Pause on debugger statement , located next to the existing Pause on exceptions checkbox. By default, this option is enabled, meaning that the debugger statements are active unless manually disabled.

  3. 03

    As part of our work on improving the accessibility of Firefox Developer Tools, we've unified the focus indicator across the toolbox. The focus indicator is now larger with improved contrast, featuring a white box-shadow for enhanced visibility on blue backgrounds. Adjustments have also been made to ensure clear visibility across shared components and frequently used panels, preventing overlap with element borders or backgrounds.

  4. 04

    With the release of Firefox 121, we are pleased to welcome the developers who contributed their first code change to Firefox in this release, 16 of whom were brand new volunteers! Please join us in thanking each of these diligent and enthusiastic individuals, and take a look at their contributions: andreas221b: 1860232

  5. 05

    Fixed a bug that resulted in background pages not starting when a manifest.json background key contains service_worker and scripts declarations ( Firefox bug 1860304 ). Note: Incidentally, a change in Chrome 121 sees the scripts property ignored when specified with the service_worker property. Previously, Chrome refused to load extensions containing both properties ( Chromium bug 1418934 ). For more information, see Browser support of the background manifest key .

Web Platform 33 items
  1. 01

    The :has() selector is now supported. This allows authors to match an element that has, or "anchors", at least one element matching its relative selector.

  2. 02

    The hanging and each-line keywords are now supported for the text-indent CSS property, offering more convenient paragraph layout options for styles such as bibliographies, poetry, etc.

  3. 03

    The balance keyword is now supported for the text-wrap CSS property, which can improve the appearance of short multi-line text blocks such as long headings or captions by harmonizing the line lengths.

  4. 04

    Lazy loading iframes are now supported ( <iframe loading=lazy> ). Lazy loading iframes are only loaded when visible, so non-critical iframes can load later when needed to speed up initial page loads, reduce initial network usage, etc.

  5. 05

    Support has been added for tail call elimination in WebAssembly language to improve support for functional languages.

  6. 06

    Lazy loading of <iframe> elements is now supported, allowing developers to hint that particular <iframe> elements should only be loaded when (and if) they become visible. This can speed up initial load time by reducing the resources that need to be fetched on page load (some <iframe> elements may not need to be fetched at all). The hint can be provided via the loading attribute on the <iframe> element, or in JavaScript using HTMLIFrameElement.loading . ( Firefox bug 1622090 ).

  7. 07

    The text-wrap property has been updated with support for the values balance and stable . The balance value is used for short blocks of content, such as headings, and will make sure that the content is balanced and easy to read when spread over multiple lines. The stable value makes sure that editable content does not reflow while the user is editing it ( Firefox bug 1731541 ).

  8. 08

    The :has() selector, commonly referred to as the parent selector , is now supported. It allows developers to apply styles to an element based on related elements, e.g., li:has(ul) will match a list which contains a sub-list, or h1:has(+ p) will match a heading with a paragraph directly after it.

  9. 09

    The text-indent CSS property now supports the each-line and hanging property values ( Firefox bug 784648 ), allowing developers to more easily specify certain text indentation styles. Additionally, developers can now combine multiple text-indent property values for more creativity, e.g., text-indent: 3em hanging each-line .

  10. 10

    The Promise.withResolvers() static method is now supported. This exposes the resolve and reject callback functions in the same scope as the returned Promise , allowing code that resolves or rejects the promise to be defined after its construction ( Firefox bug 1845586 ).

  11. 11

    Date.parse() now accepts several additional date formats:

  12. 12

    Year > 9999 for YYYY-MMM-DD format (e.g., 19999-Jan-01 ) ( Firefox bug 1858851 )

  13. 13

    MMM-DD-YYYY (e.g., Jan-01-1970 ) ( Firefox bug 1863489 )

  14. 14

    Milliseconds for non-ISO date formats (e.g., Jan 1 1970 10:00:00.050 ) ( Firefox bug 1863125 )

  15. 15

    Day of week at the beginning of formats which were being rejected, such as:

  16. 16

    Wed, 1970-01-01

  17. 17

    Wed, 1970-Jan-01

  18. 18

    Other Date.parse() fixes:

  19. 19

    YYYY-M-DD and YYYY-MM-D are no longer assumed GMT as an ISO date YYYY-MM-DD would be ( Firefox bug 1783731 ).

  20. 20

    Milliseconds for all formats are truncated after 3 digits, rather than being rounded ( Firefox bug 746529 ).

  21. 21

    The sendOrder property of the WebTransportSendStream interface is now supported, allowing the relative priority of outgoing WebTransport API bidirectional streams to be read and changed after the stream is created. Note that this cannot be used to modify the priority of unidirectional streams, as Firefox implements them as WritableStream instead of WebTransportSendStream . (For more information see Firefox bug 1853444 .)

  22. 22

    HTMLInputElement.showPicker() now works for <input type="week"> and <input type="month"> elements on Android ( Firefox bug 1853797 ).

  23. 23

    WebAssembly now supports tail call optimization via new return_call and return_call_indirect alternatives to the call instruction. This improves performance, reduces stack space usage, and enhances compatibility with programming languages that use tail calls. ( Firefox bug 1846789 ).

  24. 24

    Added the browsingContext.contextDestroyed event that is emitted when a browsing context is discarded ( Firefox bug 1694390 ).

  25. 25

    Added support for the userActivation parameter for the script.callFunction and script.evaluate commands which allows evaluating JavaScript while emulating the user action. ( Firefox bug 1845488 ).

  26. 26

    Added support for the defaultValue field for the browsingContext.userPromptOpened event that allow users to retrieve the default value of prompts ( Firefox bug 1851761 ).

  27. 27

    Renamed the viewportOptions parameter for the browsingContext.captureScreenshot command to boxOptions ( Firefox bug 1859258 ).

  28. 28

    Removed the scrollIntoView parameter for the browsingContext.captureScreenshot command, in favor of the origin parameter below ( Firefox bug 1862649 ).

  29. 29

    Added support for the origin parameter for the browsingContext.captureScreenshot command which allows defining the origin and bounds of the screenshot. The accepted values are "document" and "viewport" ( Firefox bug 1840999 ).

  30. 30

    When serializing Window objects, the serialized value now contains a context property set to the context id for the Window object which can also be exchanged with Marionette to reference specific windows and frames ( Firefox bug 1841049 ).

  31. 31

    Fixed a bug where serialization of a Node nested in a data structure (array, map, etc.) would fail ( Firefox bug 1861000 ).

  32. 32

    Fixed a bug where the browsingContext.navigate command could return an incorrect navigation id ( Firefox bug 1861655 ).

  33. 33

    Added support for serializing and deserializing Window and Frame objects ( Firefox bug 1274251 ).