From MozillaWiki
Jump to: navigation, search

Firefox Desktop Perceived Performance Team

The purpose of this team is to improve the perceived performance of Firefox. Our focus is mostly on front-end code that impacts the perceived performance of the browser itself, not the performance of rendering web pages. There are other teams focused on the latter.


  • Mike Conley (:mconley)
  • Florian Queze (:florian)
  • Paolo Amadini (:paolo)
  • Gijs Kruitbosch (:Gijs)
  • Philipp Sackl (:phlsa)
  • Panos Astithas (:past)

Operating principals

  • Our work should impact key user interactions of the browser front-end. From a high-level, these are:
    • Browser startup
    • Tab operations
      • Opening
      • Closing
      • Switching
      • Drag and drop
      • Scrolling
    • Window operations
      • Opening
      • Closing
      • Focusing
    • Menu operations
      • Opening
      • Closing
      • Navigating submenus / subviews
    • URL bar operations
      • Showing the URL bar panel
      • Showing results in the URL bar panel
    • Jank, real or perceived slowness that can occur at seemingly random times in the parent process
    • Browser shutdown
  • If you notice a pattern of performance issues, it is better to try to address the pattern in general than to spot fix individual instances.
    • The playbook is usually: create a whitelist of pre-existing cases of the bad behaviour to make adding new cases impossible, then whittle down the whitelist. Once the whitelist is empty, remove the whitelist.
    • Example: Making main-thread IO impossible is better than fixing a single instance of main-thread IO. We should aim to have a whitelist of places where main-thread IO is currently used, and crash if new main-thread IO is added. We should then file bugs to whittle down the whitelist.
  • If you improve something, try to write regression tests to ensure it doesn't get worse. Mochitests are preferred, as Talos tests can be too noisy to be truly useful.
    • Example: We moved a lot of scripts so that they don't run until after first paint. There are still some scripts remaining, and we've added a whitelist for those scripts. This ensures that the problem we identified cannot get worse, and only better.
    • Example: We've eliminated some synchronous layout flushes caused by our JavaScript code, and have written tests to exercise the user interactions that caused them. Those tests ensure that a whitelist of synchronous layout flushes are possible, which makes it much harder to accidentally add new ones in the future.


Team Meeting

Day of week Pacific Time Eastern Time UTC Central European Time
Fridays 8:30AM - 9:00AM 11:30AM - 12:00PM 4:30PM - 5:00PM 5:30PM - 6:00PM
  • Frequency: One meeting per week on Friday.
  • Duration: 30 min
  • Vidyo Room: Firefox
  • Meeting notes: Google Doc
  • IRC: #fx-team
  • Mailing list: firefox-dev


Bugzilla components don't tend to align properly with this project's boundaries, so this team is monitoring bugs across a number of components that block the photon-performance meta bug. Here is the dependency tree. Common components of interest are Firefox:General, Firefox:Tabbed Browser, Toolkit:General and more.

Selecting a New Bug for the Current Release

  1. Select any 'P1' bug which is currently unassigned and not blocked on a dependency. If no 'P1' bugs are available then select from the available 'P2' bugs, and so on.
  2. Add the following if not already present:
  • [fxperf] whiteboard tag.
  • perf keyword.
  • qe-verify-, unless it is a bug that QA can reasonably verify.

Adding a New Bug to the Backlog

  1. Add the [fxperf] tag to the whiteboard.
  2. Add the perf keyword.
  3. Set the bug as a dependency of a user story bug or a meta bug if applicable.
  4. Set the bug priority per the following guidelines or call it out for a priority decision in the Weekly Meeting:
  • 'P1': Must Have - development occurring in the current release.
  • 'P2': Should Have - targeted for next release.
  • 'P3': Could Have - planned for development in an upcoming release.
  • 'P5': Will Have - not scheduled for any particular release, patches accepted.

Submitting a Bug for Triage

  1. Mark the bug by adding the [fxperf] tag to the whiteboard.


Collection of work waiting for the team to review and determine if it should be included in the Product Backlog

Bugs blocking photon-performance-triage - View in Bugzilla

Full Query
ID Summary Status Whiteboard Keywords Assigned to
691507 [meta] Periodic hangs in the UI due to Places NEW [qf:meta] meta, perf
887887 Use Sqlite.jsm in Form History NEW [fxperf][qf:meta] main-thread-io, meta, perf
1320534 [meta] Speed and performance of importing bookmarks from JSON or HTML files is awful NEW [fxperf:p3][qf:p3][fxsearch:p5] hang, meta, nightly-community, perf
1352518 Avoid calling getComputedStyle() in isElementVisible() in UITour.jsm NEW [qf-][API used a few times/year][fxperf:p5] perf
1353725 [meta] displaying the awesomebar panel could be smoother NEW [reserve-photon-performance] [fxsearch][qf:meta] meta, perf
1353744 Incorrect font size while opening a new window on an external screen NEW [qf-][tpi:+][fxperf:p3] perf
1354562 Consider moving some <style> elements to separate sheets NEW [fxperf:p5]
1355956 [meta] Photon - Make Firefox start more quickly NEW [photon-performance] [fxperf:meta] meta
1355978 show tab favicons immediately UNCONFIRMED [fxperf:p5] perf
1357481 1.03ms uninterruptible reflow at appendPrompt@chrome://browser/content/browser.js:8426:5 NEW [ohnoreflow][qf:p3][fxperf:p3] perf
1358390 1.24ms uninterruptible reflow at useLandscapeMode@chrome://devtools/content/inspector/inspector.js:460:27 NEW [ohnoreflow][qf:p3][fxperf:p3] perf
1358724 1.15ms uninterruptible reflow at updateOverflowStatus@chrome://browser/content/places/browserPlacesViews.js:1163:1 NEW [ohnoreflow][qf:p3][fxperf:p3] nightly-community, perf
1358729 1.75ms uninterruptible reflow at onResize@chrome://devtools/content/sourceeditor/codemirror/codemirror.bundle.js:3783:1 NEW [ohnoreflow][qf:p3][fxperf:p3] perf
1358730 2.41ms uninterruptible reflow at stop@chrome://global/content/bindings/browser.xml:99:13 NEW [ohnoreflow][qf:p3][fxperf:p5] perf
1358810 0.91ms uninterruptible reflow at create@resource://gre/modules/commonjs/toolkit/loader.js -> resource://devtools/client/framework/toolbox-hosts.js:86:5 NEW [ohnoreflow][qf:p3][fxperf:p5] perf
1358899 Opening a link from an external application while Firefox is idle is slow NEW [qf-] perf
1359408 0.29ms uninterruptible reflow at _handleDOMChange@chrome://extensions/content/ext-browser-content.js:215:24 NEW [ohnoreflow][qf:p3:responsiveness][fxperf:p3]triaged perf
1360028 0.99ms uninterruptible reflow at showNotification@chrome://browser/content/browser-addons.js:412:22 NEW [ohnoreflow][qf:f63][qf:p3][fxperf:p3] perf
1361115 1.42ms uninterruptible reflow (sync layout flush) at onResize in tabprompts.jsm NEW [ohnoreflow][fxperf:p3][qf:p3] perf
1361347 Can refreshIdentityBlock be optimized? NEW [fxperf:p3]
1362529 0.97ms uninterruptible reflow at @chrome://browser/content/tab-content.js:85:43 NEW [ohnoreflow][qf-][fxperf:p3] perf
1362533 1.0ms uninterruptible reflow at PT__onDragOver@chrome://browser/content/places/browserPlacesViews.js:1600:11 NEW [ohnoreflow][qf:p3][fxperf:p5] perf
1364290 1.89ms uninterruptible reflow at insertPlaceholder@resource://app/modules/DragPositionManager.jsm:181:7 NEW [ohnoreflow][qf:p3][fxperf:p3] perf
1364324 0.98ms uninterruptible reflow at AreaPositionManager@resource://app/modules/DragPositionManager.jsm:24:23 NEW [ohnoreflow][qf:p3][fxperf:p3] perf
1373694 Don't block on beforeunload events from third-party tracking domain scripts NEW [qf:p3] perf
1383444 3.01ms uninterruptible reflow at nextStep@chrome://global/content/bindings/progressmeter.xml:83:19 NEW [ohnoreflow][qf:p3][fxperf:p3] perf
1387045 Suppress window animation for profile manager NEW [fxperf:p5]
1387142 Suppress window animation for New Window NEW [fxperf:p3]
1388758 Restoring sessions with multiple windows is very slow NEW [fxperf:p3] perf
1462373 1.39ms uninterruptible reflow at _calculateMaxHeight@resource:///modules/PanelMultiView.jsm:1032:9 NEW [ohnoreflow][qf:p3][fxperf:p3]
1482581 1.08ms uninterruptible reflow at _openAutocompletePopup@chrome://browser/content/urlbarBindings.xml:2229:11 NEW [ohnoreflow][fxperf:p3]
1482654 1.43ms uninterruptible reflow at onxblunderflow@chrome://browser/content/tabbrowser.xml:47:11 NEW [ohnoreflow][fxperf:p3]
1482669 2.25ms uninterruptible reflow at _getDragItemSize@resource:///modules/CustomizeMode.jsm:2216:16 NEW [ohnoreflow][fxperf:p5]
1482670 1.38ms uninterruptible reflow at recreatePopup@resource:///modules/UITour.jsm:1443:5 NEW [ohnoreflow][fxperf:p3]
1482671 2.32ms uninterruptible reflow at showHighlightElement@resource:///modules/UITour.jsm:1046:24 NEW [ohnoreflow][fxperf:p3]
1482734 2.09ms uninterruptible reflow at onxbldragover@chrome://browser/content/tabbrowser.xml:1391:9 NEW [ohnoreflow][fxperf:p3]

36 Total; 36 Open (100%); 0 Resolved (0%); 0 Verified (0%);

Tracked bugs without a priority set - View in Bugzilla

Full Query
ID Summary Status Whiteboard Keywords Assigned to
1606879 [meta] Tracking bug for fast shutdown via _exit(0) or similar NEW [fxperf] meta
1627071 [meta] Startup Task DAG Phase 1: Disk IO Orchestration NEW [fxperf] meta
1630334 [meta] Mass rewrite boolean attribute selectors in CSS NEW [fxperf] meta
1670190 Increased redirectEnd metric in Firefox 80 when connecting to Jira UNCONFIRMED [fxperf]

4 Total; 4 Open (100%); 0 Resolved (0%); 0 Verified (0%);


Current Release

P1: Must Have - development occurring in the current release - View in Bugzilla

Duration: Tuesday January 23 - Monday March 12

Full Query
ID Summary Status Whiteboard Keywords Assigned to
1670060 Massive memory leak when opening the browser console after opening the browser toolbox NEW [fxperf] perf

1 Total; 1 Open (100%); 0 Resolved (0%); 0 Verified (0%);

Current Release: Completed

View in Bugzilla

Full Query
ID Summary Status Whiteboard Keywords Assigned to Priority
1223303 nsChromeTreeOwner::OnLocationChanged is very confused about what a docshell and a window are RESOLVED [fxperf] Florian Quèze [:florian] --
1336227 Show a blank window as soon as possible after start-up (pref'd off) RESOLVED [fxperf] Florian Quèze [:florian] P2
1425600 Stop using nsIPluginTag.filename and .name thousands of times because it's clownshoes RESOLVED [fxperf] Chris Peterson [:cpeterson] P1
1434376 Make BrowserUtils.promiseReflowed and BrowserUtils.promiseLayoutFlushed reliable RESOLVED [fxperf] Mike Conley (:mconley) (:⚙️) P1
1434945 browser.xul should look correct if it's painted after domcontentloaded RESOLVED [fxperf] Florian Quèze [:florian] P1
1436559 setOverLink loves to do busy-work RESOLVED [fxperf] :Gijs (he/him) P1

6 Total; 0 Open (0%); 6 Resolved (100%); 0 Verified (0%);

Next Release

P2: Should Have - targeted for the current release if production capacity exists - View in Bugzilla

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


P3: Could Have - planned for development in an upcoming release - View in Bugzilla

Full Query
ID Summary Status Whiteboard Keywords Assigned to
1344302 [meta] Tab closing performance NEW [photon-performance] [gfx-noted] [qf:meta] [fxperf] meta, perf Mike Conley (:mconley) (:⚙️)
1353586 _saveStateAsync shouldn't pile up on existing jank ASSIGNED [qf:meta] [fxperf] meta, perf, stale-bug Will Wang [:WillWang]
1356825 [meta] AddonManager startup is too slow NEW [qf:meta], triaged [fxperf] meta, perf
1361095 Can nsContentPrefService avoid main thread IO before the first window is shown? NEW [qf:meta] [fxperf] meta, perf
1580658 [meta] Investigate disk activity on Linux using strace NEW [fxperf] meta, perf

5 Total; 5 Open (100%); 0 Resolved (0%); 0 Verified (0%);

Patches Accepted

P5: Will Have - not scheduled for any particular release, patches accepted - View in Bugzilla

Full Query
ID Summary Status Whiteboard Keywords Assigned to
1349822 [meta] updateCurrentBrowser can be slow NEW [qf:meta][fxperf] meta, perf

1 Total; 1 Open (100%); 0 Resolved (0%); 0 Verified (0%);


P4: (should be reprioritized to P3 or P5) - View in Bugzilla

Full Query
ID Summary Status Whiteboard Keywords Assigned to
887887 Use Sqlite.jsm in Form History NEW [fxperf][qf:meta] main-thread-io, meta, perf

1 Total; 1 Open (100%); 0 Resolved (0%); 0 Verified (0%);