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
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
1364468 Push notifications can still be received during shutdown NEW [fxperf:p3]
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]

37 Total; 37 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
536910 Too many ID-less form elements makes Firefox slow NEW [fxperf] meta, perf
886447 [Session Restore] Optimize communications [meta] NEW [Async:team][fxperf] main-thread-io, meta, perf
899401 [meta][Page Thumbnails] Minimize impact of page thumbnail service NEW [fxperf] meta
934934 [meta][Session Restore] Track sites that spam sessionstore.js, find defensive strategies NEW [tracking][fxperf] meta, perf
1304389 Session Restore generates sustained large disk traffic [meta] NEW [fxperf] meta
1336241 [meta] Closing a window should be fast NEW [photon-performance] [fxperf] meta
1349822 [meta] updateCurrentBrowser can be slow NEW [qf:meta][fxperf] meta, perf
1355956 [meta] Photon - Make Firefox start more quickly NEW [photon-performance] [fxperf] meta
1363748 [meta] Photon - Opening any of the primary menus should be fast NEW [fxperf] meta
1363767 [meta] Photon - window interactions should be immediate NEW [fxperf] meta
1363771 [meta] Photon - Eliminate or greatly reduce pauses that can occur randomly in front-end code NEW [fxperf] meta
1363772 [meta] Photon - Speculatively open network connections as soon as possible when we know the intended site destination. NEW [fxperf] meta
1363777 [meta] Photon - Photon performance bugs that can be taken individually NEW [fxperf] meta
1363780 [meta] Photon - shutdown should not feel slow NEW [fxperf] meta
1370647 [meta] Start faster when creating a new profile NEW [fxperf] meta
1384733 [meta] "List all tabs" dropdown list is slow with many tabs (~750), takes 2-3 seconds to show NEW [fxperf] meta, perf
1399891 [meta] Suppress the Windows »waiting« cursor when possible NEW [photon-performance] [fxperf] meta
1436584 [meta] Eliminate JS nsIFile access (sync IO), especially on startup NEW [fxperf] meta
1519366 [meta] Too many restyles when opening new tabs NEW [fxperf] meta
1527936 [meta] Reduce time to paint first frame of about:home NEW [fxperf] meta

20 Total; 20 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

No results.

0 Total; 0 Open (0%); 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) (:⚙️) (Catching up from PTO) 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

Full Query
ID Summary Status Whiteboard Keywords Assigned to
1425602 [meta] fix all the blocklist things NEW [fxperf] meta

1 Total; 1 Open (100%); 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] Photon - Make closing tabs fast NEW [photon-performance] [gfx-noted] [qf:meta] [fxperf] meta, perf Mike Conley (:mconley) (:⚙️) (Catching up from PTO)
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
1358998 [meta] Stop using the :not(:target) selector in SVG for the Firefox UI NEW [photon-performance] [fxperf] meta, perf
1361095 Can nsContentPrefService avoid main thread IO before the first window is shown? NEW [qf:meta] [fxperf] meta, perf
1363755 [meta] Photon - Tab interactions should be immediate NEW [fxperf] meta
1363757 [meta] Photon - Interacting with the AwesomeBar should be fast and smooth NEW [fxsearch] [fxperf] meta
1371371 [meta] Find out why focus switches sometimes result in layout flushes NEW [fxperf] meta

8 Total; 8 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
1363507 [meta] Write reflow tests for the AwesomeBar NEW [photon-performance] [fxperf] meta

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%);