The Need for Speed Controls – These Weeks in Firefox: Issue 208
Highlights
- Firefox 154 went out today! Lots of goodies in there for our users, including support for NVIDIA GeForce NOW
- The new 2 week release cycle is now in effect. This means that Firefox 155 is slated to hit release on September 1st!
- You can follow along at https://whattrainisitnow.com/
- As part of the Nova redesign, a “Use Linux system theme” checkbox is being shown on Linux builds for the about:addons theme picker, which will make Firefox’s Nova UI use the colours of the system theme.
- Thanks to Simon Rosen for adding a new playback speed control to the PiP player. The feature can be enabled by flipping the pref media.videocontrols.picture-in-picture.playback-speed.enabled.
![]()
Friends of the Firefox team
Resolved bugs (excluding employees)
Script to find new contributors from bug list
Volunteers that fixed more than one bug
- Benoit
- Chris Vander Linden
- Fede
- japandi
- Lukáš Lipinský
- Nirmal Advani
- Ruhollah Majdoddin
- Sameem [:sameembaba]
- Sebastian Zartner [:sebo]
- Zyphrenn
New contributors (🌟 = first patch)
- Aditi: Increase the maximum number of PDF.js preferences
- Fede:
- Giulio B: frameId is wrong in webRequest events triggered via importScripts
- 🌟 Gopalarathnam Venkatesan: Fix incorrect ‘this’ in the Sync add-on install error handler
- 🌟 Kevin Gosse: nsDataObj::QueryGetData in Firefox returns E_FAIL for formats it doesn’t carry, instead of DV_E_FORMATETC per the COM contract
- 🌟 mikey gough: Remove three unused devtools.debugger.file-search-* preferences
- 🌟 Nathan Leuz: Remove unused legacy preference browser.translation.neverForLanguages
- 🌟 Priyanshu[:0xanshu]: “Forget About This Site” dialog is cut off
- 🌟 K: Disable breakpoints shortcut
- 🌟 Shawn Zivontsis: Reorder moz_origins composite unique index to UNIQUE(host, prefix)
- 🌟 Simon Rosen: Suggestion: Add speed button for Youtube in picture-in-picture(PiP) modals
- tanvi.manku: unnecessary scrollbars in edit dialogs for payments and addresses
- Zyphrenn:
Project Updates
Add-ons / Web Extensions
Addon Manager & about:addons
- As part of Nova about:addons work:
- Replaced the “more themes” button in the themes list view footer with a promo element when Nova is enabled – Bug 2057200
- Removed the testing XPI base url pref from ThemesList.sys.mjs – Bug 2053220
- Fixed a mismatch between the popup panel border radius applied by Nova and the border radius applied to the document.body of the WebExtensions popup page loaded into it – Bug 2057844
- Moved new strings added as part of the about:addons Nova restyling out of the locales preview – Bug 2052034
- As part of legacy telemetry cleanups for the Add-ons related telemetry, migrated addons-search-detection telemetry off the legacy telemetry mirroring path, now collected only through Glean – Bug 2055606
WebExtensions Framework
- Fixed a series of intermittent and CI-reliability test failures across the WebExtensions browser-chrome test suite – Bug 1575369 / Bug 1697626 / Bug 1699341 / Bug 1974953 / Bug 2015004 / Bug 2030542 / Bug 2062186 / Bug 2062187 / Bug 2062189 / Bug 2062191 / Bug 2062193
- Thanks to Florian Quèze for applying his work on an LLM-based system for investigating intermittent tests to investigating and fixing intermittents and perma failures across the WebExtensions test suite.
DevTools
- Ruhollah Majdoddin fixed issues in the Storage panel to make sure we’re only showing relevant cookies (and their values) for the debugged tab (#1856645, #2060029, #2061166) and also did some cleanup in this area (#2061348)
- sevenwithawp added a keyboard shortcut (Ctrl+Alt+B, Cmd+Alt+B on Mac) to disable/enable breakpoints (#1642578)
- Hubert Boma Manilla (:bomsy) continues his work to display stylesheets in the Debugger (#2051029, #2051264)
- Preference: devtools.debugger.features.stylesheets-in-debugger
- Nicolas Chevobbe [:nchevobbe] added support for ::picker() rules in pseudo element section (#2042839)
- Used by customizable select (MDN)
- Preference: dom.select.customizable_select.enabled
![]()
- Nicolas Chevobbe [:nchevobbe] made CSS explainers work for substitution functions (var(), attr() and env()) (#2041622)
- Preference: devtools.inspector.css-explainers
![]()
- Julian Descottes [:jdescottes] fixed an accessibility bug in about:debugging where error message where not announced (#2056332)
WebDriver
- Sameem added the cleanup logic for subscriptions when a browsing context is destroyed.
- Nirmal Advani updated the Actions API to fire the dblclick event when performing a double-click while holding down the Ctrl key on non-macOS platforms.
- Khalid AlHaddad updated the webdriver bidi moz:debugging module to stop using enterNestedEventLoop which can avoid conflicts with the regular DevTools’ debugger.
- Alexandra Borovova fixed the “browsingContext.reload” command to not fail for frames.
New Tab Page
- Big ticket items:
- Did a trainhop last week to help with the remote layouts effort
- Doing another trainhop this week to make some spacing optimizations, deploying tomorrow if all goes well
- We will be experimenting with some more layout variations over the next few months
- Example:
![]()
- We’ve migrated a bunch of our unit tests to Jest/RTL from the deprecated Mocha / Karma framework we’ve historically used.
- Joel added a WebNotifications badge to Top Sites on the New Tab Page which surfaces per-origin unread web-notification state directly on TopSites tiles by rendering a compact badge in the activity-stream/TopSites component—users can now glance at NTP tiles to see which sites have pending web notifications without changing navigation or site state (affects desktop and mobile NTP Top Sites UI). This is something we plan on experimenting with later this year.
- Similarly, Joel added a TopSites hover card with notifications which expands the to show per-site notification items and actions on hover or long-press, enabling users to read and dismiss notifications from the NTP itself rather than opening each site.
- Hanna Alemu fixed the focus outline for the “Learn how we protect your data” link in NEWTAB_PERSONALIZATION_MESSAGE, replacing the blue non-rounded ring with the standard rounded focus style via CSS so keyboard and assistive users get a consistent, discoverable focus indicator.
- Maxx Crawford added logic to show different tip messages throughout the day/week on the New Tab Page in the upcoming privacy widget, implementing time-of-day/day-of-week selection in the tip renderer so users receive context-varying tips rather than a static message, which affects the tip surface and supports time-targeted experiments.
- Irene Ni removed the New Tab daily briefing slice from the New Tab Page, so users will no longer see the daily-briefing card on new tabs and related New Tab slice prefs/registrations were cleaned up.
- Jack Brown migrated the New Tab ContextMenu/LinkMenu implementation to the panel-list component, so right-click menus and link context behavior on the New Tab now use panel-list rendering (affects keyboard navigation, theming, and menu perf).
- Irene Ni removed a root-level <hr> selector from the Weather forecast widget SCSS that leaked global divider styles into the New Tab Page layout, restoring correct dividers and preventing spacing/layout regressions on about:newtab.
- Irene Ni enabled the remote-settings-driven sections layout in Nightly, flipping the remote-settings/sections layout so Nightly users receive Discovery Stream section composition from Remote Settings.
- Irene Ni automated the New Tab Page locales update for train-hop to ensure locale bundles are refreshed on train deploys so users see corrected translations and no longer encounter stale labels after a hop.
- Reem Hamoui fixed the Crossword widget double-counting and removed broad “interaction” user_actions so telemetry and UX-triggered actions reflect a single user event and analytics driven by user_action are no longer inflated.
- Dre fixed the “Show more widgets” visibility by adjusting the widget container overflow/visibility logic so the Show more control is reliably revealed on constrained viewports, restoring widget discoverability.
- Joel fixed newtab.closed and newtab.sections_impression firing unexpectedly on the New Tab Page by gating event emission on section visibility and tab lifecycle, which stops spurious impression and close telemetry pings and improves the accuracy of NTP impression/close counts for affected users.
- Joel added a topsite display customization event to newtab ping, updating the New Tab ping schema so user topsite layout and appearance changes are emitted as topsite.display_customization events, enabling reliable capture of pin/remove/resize/customization actions in Telemetry.
- Nina Pypchenko [:nina-py] added widgets.stocks.interaction and flip it on user actions so explicit click/tap interactions with the Stocks widget now generate widgets.stocks.interaction events, improving engagement capture for the Stocks surface.
- Nina Pypchenko [:nina-py] migrated the Stocks widget telemetry to the shared useWidgetTelemetry hook, standardizing how the Stocks widget emits metrics and ping fields to match other widgets, which reduces missing/duplicate events and makes per-widget telemetry consistent across platforms.
- Irene Ni created an initial JSON dump of Remote Settings sections layouts for cold startup to prepopulate New Tab Page sections on first launch and reduce layout flash or missing tiles.
- Nina Pypchenko [:nina-py] added a persistent “New” badge to the Stocks widget until first user interaction, which improves discoverability of the Stocks card and is cleared on the user’s first click/tap.
- Maxx Crawford implemented a side-by-side content layout variant for the New Tab Page feed, which introduces a new responsive layout option that changes feed column behavior and visual density on wider viewports.
- Scott Downe added support for five-column content feed layouts, which enables denser content grids for large displays by updating grid logic and responsive breakpoints and affects NTP rendering on wide screens.
- Dre added a “Celebrations” UI state to the Privacy Widget, which surfaces milestone/celebratory visuals and transient animations in the Privacy Widget when triggers are satisfied.
- Irene Ni updated the New Tab topsite context menu button to respect prefers-reduced-motion via CSS/media-query changes, so users with reduce-motion enabled no longer see the button’s motion/animation.
- Scott Downe expanded New Tab’s list of region and locales for content support, updating the New Tab content selection config and region→locale mappings so more users in newly-added locales receive localized tiles and recommendations on the New Tab Page.
- Irene Ni fixed the New Shortcut / Edit Shortcut prompt background being transparent with the Newtab addon installed, restoring CSS/background opacity for the edit UI so shortcut editing is readable across themes and addon combinations.
- Maxx Crawford added a dedicated trainhopConfig.widgetPrivacy payload for the Privacy widget feature, introducing a per-trainhop config payload in Discovery Stream so Privacy widget rollouts and toggles can be controlled without code deploys.
- Maxx Crawford added a layout management panel in Discovery Stream Admin, giving editors an admin UI to modify New Tab/stream layouts (reduces manual config edits and speeds layout experiments).
- Dre reduced the Privacy Widget celebration sparkles on the New Tab Page in Privacy Widget Celebration: Reduce the Sparkles by lowering particle counts and throttling animation cadence in the widget’s CSS/JS animation code, reducing visual noise and a small amount of GPU/animation work for users during the celebration without changing privacy settings.
- Maxx Crawford restored the “Change size” context menu item for the side-by-side experimental New Tab layout so users with the side-by-side exp layout enabled regain the resize control in widget context menus.
- Maxx Crawford stopped the sports widget from rendering regardless of the pref so unwanted sports content no longer appears on New Tab when the pref should prevent it.
Picture-in-Picture
- Thanks to Lukáš Lipinský for adding live event caption support for ceskatelevize.cz!
- Thanks to Mike Conley for fixing play / pause issues with the PiP player on Udemy.
Search and Urlbar
- Nova: continued work on the Nova redesign, focusing on CSS fixes, tab group and container styling, and tab/address bar polish. Efforts are underway to ensure the UI integrates correctly with platform themes and high-contrast modes.
- IPC Urlbar / Multi-Context Address Bar (MCAB) on New Tab: Significant progress has been made on the IPC Urlbar implementation. The CI variant is now live and upgraded to Tier 2, allowing for better bug detection. Currently focused on making content modules content-process-safe and preparing for new tab search bar integration. Here’s moz-urlbar rendering something on about:newtab for the first time:
![]()
- Post-MVP work continues on refining the new search bar that can be added to the toolbar.
- Google address bar messaging experiment relaunched.
- Search & Suggest Telemetry: Development is ongoing for search term telemetry, specifically regarding fetching results from Merino for online suggestions. Also preparing to retire legacy telemetry for certain search service metrics.
- Favicon & Places:
- Also trim www from URLs, behind pref