Fix live metrics memory leak There are two main issues at play here: 1) web-vitals-inject.ts uses global arrays to monkeypatch Event Listeners and Performance Observers (and their args!) and never removes these when the Event Listeners and POs are finished with. I believe this is the main memory leak. Gemini suggested a better alternative. 2) The web-vital.js library tracks the event entries into pendingGroups for two reasons: i) to allow them to be emitted in the object should the user wish to use them for some reason, and ii) to handle out of order LoAFs. DevTools doesn't use them and also emits the entries right away so does not benefit from holding on to them. This only is a problem for really slow frames (as the demo in b/484342204 highlights) and we should only keep the top 50 + 10, but that can still really add up and, as I say, it is not actually needed for DevTools usage of web-vitals.js anyway. I'm going to do more clean up in web-vitals 5.2 (reducing the 50 to 5 and capping the queued entries to 5 as well, and Jack has a onIdleOrHidden fix as well), but for now this seems to solve the main issue in DevTools. We can have the Chat team test in Canary, once this lands. Bug: 484342204 Change-Id: I7c4575289a4df76e8e29bee112aabc32831ad5d1 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/7644771 Reviewed-by: Jack Franklin <jacktfranklin@chromium.org> Commit-Queue: Barry Pollard <barrypollard@chromium.org> Reviewed-by: Paul Irish <paulirish@chromium.org>
The client-side of the Chrome DevTools, including all TypeScript & CSS to run the DevTools webapp.
The frontend is available on chromium.googlesource.com. Check out the Chromium DevTools documentation for instructions to set up, use, and maintain a DevTools front-end checkout, as well as design guidelines, and architectural documentation.
DevTools frontend repository is mirrored on GitHub.
DevTools frontend is also available on NPM as the chrome-devtools-frontend package. It's not currently available via CJS or ES modules, so consuming this package in other tools may require some effort.
The version number of the npm package (e.g. 1.0.373466) refers to the Chromium commit position of latest frontend git commit. It's incremented with every Chromium commit, however the package is updated roughly daily.
There are a few options to keep an eye on the latest and greatest of DevTools development:
Follow What's new in DevTools.
Follow Umar's Dev Tips.
Follow these individual Twitter accounts: @umaar, @malyw, @kdzwinel, @addyosmani, @paul_irish, @samccone, @mathias, @mattzeunert, @PrashantPalikhe, @ziyunfei, and @bmeurer.
Follow to g/devtools-reviews@chromium.org mailing list for all reviews of pending code, and view the log, or follow @DevToolsCommits on Twitter.
Checkout all open DevTools tickets on crbug.com
Use Chrome Canary and poke around the experiments.