Surf with more Perf(ormance) - These Weeks in Firefox: Issue 133

Skip to first unread message

Mike Conley

Mar 7, 2023, 11:59:27 AMMar 7
to Firefox Dev
Hey all,

A few weeks back, the Firefox Desktop team got together to compare notes on various things that have been happening in the codebase. We've taken the liberty of taking the notes from that meeting and turning them into something a little more palatable for your perusement.

Thanks to Niklas Baumgardner and Katherine Patenio who put these notes together with me!


  • The DevTools team has improved Pretty Printing performance in the Debugger by ~30%! This improvement is available in Beta and currently slated to go out in Firefox 111.

  • Mak has changed the frecency (the URL bar ranking algorithm) recalculation to happen on idle, rather than immediately when bookmarks are added/removed, or when visits are removed. This allows for more performant recalculation during large operations!

  • Daisuke has completed the conversion of bookmarks from the old Places notifications to new ones, and has finally removed the nsINavBookmarksObserver interface. The new notifications, originally designed with the help of Doug Thayer from the Perf Team, are much more performant and detailed, and will improve the performance of history and bookmarks consumers.

  • Our WebExtensions team has made it easier for extension authors to migrate from Manifest V2 to Manifest V3:

    • Bug 1811443 (landed in Firefox 111) introduced an optional “background.type” manifest property that can be set to either “classic” or “module”. When set to “module”, all the background scripts are loaded as ES Modules in the auto-generated background and event pages

  • All of the Colorways are now available as themes at If there was one you never got to try, now’s your chance!

Friends of the Firefox team

Resolved bugs (excluding employees)

Volunteers that fixed more than one bug

  • CanadaHonk [:CanadaHonk]

  • Itiel

  • portiawuu

  • Razvan Cojocaru

  • steven w

New contributors (🌟 = first patch)

Project Updates

Add-ons / Web Extensions

Addon Manager & about:addons
  • Colorway built-in themes migration:

WebExtensions Framework
  • As part of fixing a regression (originally introduced in Firefox 96 by Bug 1675456) in Bug 1792559, we landed an initial (partial) fix for the issue with extension exceptions raised from a WebExtensions API event listener being missing from the add-on debugging toolbox (which technically is logged in the Browser Console when the multiprocess mode is enabled, but logged without the expected source url and line number from the extension code raising the exception in the error stack trace)

    • Bug 1792559 is a partial fix because, without further changes, we can’t include the full error stack from the original exception (in particular when the extension code is throwing “undefined” or an object that is not an instance of “Error”). Bug 1810582 is tracking further follow-ups to achieve a more comprehensive fix.

  • Bug 1808459 made sure that if the “extensions.getAddons.showPane” pref is set to “false” then clicking the extensions button when there is no extension installed is going to open the about:addons “extensions list” view instead of opening the about:addons “recommendation” view (which is disabled by the pref).

    • Thanks to Malte Jürgens for contributing the fix!

  • Bug 1795213 fixed a Fluent error logged when the add-on install popup was being disabled (as a side note: besides the fluent error being logged, there wasn’t any issue from a user perspective)

WebExtension APIs
  • As part of the ongoing work on the declarativeNetRequest API:

    • Bug 1811947 introduced a permission warning for the “declarativeNetRequestFeedback” permission

    • Bug 1816319 exposed the API namespace properties for the DYNAMIC_RULESET_ID and SESSION_RULESET_ID constants

Developer Tools

  • Christian Sonne landed a patch to display subgrid in the auto-complete suggestions for grid-template-* and grid properties in the Rules view (bug)

    • [Screenshot]

      • Caption: The CSS rule pane from the Inspector DevTool is shown, with a "grid-template" rule selected. "subgrid" is shown as an item in an autocomplete panel.

  • Emilio fixed an issue that would leave the page in a weird state when closing Responsive Design Mode (bug)

  • Arai fixed eager evaluation so it does not assume getters are effect-free anymore (bug)

  • Nicolas added support for “Change array by copy” methods in eager evaluation (bug

  • Julian fixed the "Disable javascript" feature (bug)

  • Alex made it possible (again) to select or click html response in the Network panel (bug)

  • Hubert is working on the Debugger “Search in all files” feature:

    • We now show results from minified and pretty-printed tabs (bug), as well as matches from node_modules folder  (bug)

    • We don’t search within files that are blackboxed anymore (bug)

    • [Screenshot]

      • Caption: A side-by-side comparison of the DevTools Debugger search result pane for Firefox 110 and 111. In the former, a search query is showing no results. In the latter, several results are appearing because they match strings contained within the source files.

WebDriver BiDi
  • Sasha added support for two new commands script.addPreloadScript (bug) and script.removePreloadScript (bug) to schedule scripts guaranteed to run before any other content script (used by test frameworks to preload helpers for instance).

  • Sasha fixed a bug which prevented us from using preload scripts and events simultaneously (bug)

  • Henrik released a new version of geckodriver v0.32.2 which fixes a semver issue introduced with the previous version (bug).

ESMification status

Migration Improvements (CalState LA Project)


Performance Tools (aka Firefox Profiler)

  • Improved timer markers make it easier to see what timers are running when and at which frequency. Add the Timer thread to the thread filter to see them. Example profile

    • [Screenshot]

      • Caption: The marker chart from the Firefox Profiler UI is shown, with a large series of timers being displayed in the char. The markers show the timer duration as text on top of the marker.

Search and Navigation

Storybook / Reusable components

Below the fold

  • General triage:

  • [gijs] Last week I changed the APIs used to load URLs into browsers! I posted an overview to fx-dev. TL;DR: loadURI takes a URI now (not a string). Prefer passing URIs over passing strings. Use BrowserTestUtils for tests (which still takes strings for ~everything).

    • For performance reasons, we’ll be transitioning various callsites to use URIs, to reduce the frequency with which we convert from strings to URIs and then throw the URI away and do the same thing again, and again.

  • [gijs] Yesterday, I landed a patch that adds 2 desktop-frontend-focused try presets. You can now use one of these commands to run frontend-focused tests only. The first only runs mochitest-browser-chrome, the second also runs xpcshell and a few other tests, on desktop only:

    • ./mach try --preset mochitest-bc --artifact

    • ./mach try --preset desktop-frontend --artifact

    • You can also filter this further, e.g. if you know your patch only touches Windows, with something like:
      ./mach try --preset desktop-frontend --artifact -xq "windows" 

  • [mconley] I added a rule to make it so that mochitest manifests should always be in alphabetical order. That sounds like a pedantic thing, but it’s really so that the manifest listing matches the execution order so that it’s easier to use --start-at and --end-at . Rule violations are currently a warning, but I’d like to transition all existing manifests to alphabetical, and then switch it to an Error. Let me know if you want to help out! Tracking meta bug. Special thanks to kcochrane for the first alphabetical-izing review.

  • [mconley] Google Docs seems to pay attention to single-backticks for code snippets, and triple-backticks for code snippets. On a new line, use triple-backticks and press enter. (You must enable this by going to Tools > Preferences and checking “Automatically detect Markdown”).

This information, including all of the previous updates, are fully available in this doc:

Also note that I'm really just synthesizing and humanizing the stuff that's on the Wiki, which is freely available from here:, so check that out if you want the source material. It'll also be posted (minus the Below the Fold stuff) to the Nightly blog.

Finally, if there's a Firefox-ish team that you feel isn't being represented here, please let them know about the above meeting so we can get their updates.

Keep on rockin' the free web,


You received this message because you are subscribed to the Google Groups "" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
To view this discussion on the web visit
Reply all
Reply to author
0 new messages