Insights: fix broken re-rendering of Insights This CL makes a change to how we render Insights in the sidebar. We found that if you have two traces, and the ordering of the Insights in the sidebar changes, you could end up with a completely broken sidebar. In the logs, this would appear as the code passing the LCP Breakdown model into the Cache insight, for example. Tracking this down, I think it is down to how Lit deals with trying to re-render efficiently. Now we are rendering a series of devtools-widgets, rather than the component itself, it would not always destroy and re-order the list. Looking at https://lit.dev/docs/templates/lists/#when-to-use-map-or-repeat, it states: > If the DOM nodes have state that isn't controlled by a template > expression, use the repeat directive. The introduction of the repeat() directive here, even though we have just one item in the array, provides a way for us to put an explicit key to the node. In this case, the key is the model (each trace has unique model references) and Lit supports using an object here. Doing this means we relate the DOM to the exact model that backs it and avoids any chance of Lit trying to reuse elements and causing a breakage. Bug: 498621626 Change-Id: I1f23bba7fd3ad818632c0f6484085ebd318d1659 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/7817996 Commit-Queue: Alina Varkki <alinavarkki@chromium.org> Auto-Submit: Jack Franklin <jacktfranklin@chromium.org> Reviewed-by: Alina Varkki <alinavarkki@chromium.org> Commit-Queue: Jack Franklin <jacktfranklin@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.