changelog-pre10.md
See the newer changelog for newer revisions.
<a name="9.6.8"></a>
We expect this release to ship in the DevTools of Chrome 109, and to PageSpeed Insights within 2 weeks.
<a name="9.6.7"></a>
This is an npm-only release. We have no plans to release this specific version to DevTools or PSI, but the changes will be rolled up into the next release in those clients.
<a name="9.6.6"></a>
We expect this release to ship in the DevTools of Chrome 106, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributor 👽🐷🐰🐯🐻!
<a name="9.6.5"></a>
This is an npm-only release and affects only the raw JSON report. We have no plans to release this specific version to DevTools or PSI, but the changes will be rolled up into the next release in those clients.
<a name="9.6.4"></a>
We expect this release to ship in the DevTools of Chrome 106, and to PageSpeed Insights within 2 weeks.
<a name="9.6.3"></a>
This is an npm-only release and affects only the raw JSON report. We have no plans to release this specific version to DevTools or PSI, but the changes will be rolled up into the next release in those clients.
<a name="9.6.2"></a>
We expect this release to ship in the DevTools of Chrome 104, and to PageSpeed Insights within 2 weeks.
<a name="9.6.1"></a>
We expect this release to ship in the DevTools of Chrome 103, and to PageSpeed Insights within 2 weeks.
<a name="9.6.0"></a>
We expect this release to ship in the DevTools of Chrome 103, and to PageSpeed Insights within 2 weeks.
InstallabilityErrors in legacy mode (#13622)navigationStart with falsy document url (#13848)<a name="9.5.0"></a>
We expect this release to ship in the DevTools of Chrome 101, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributor 👽🐷🐰🐯🐻!
Support for auditing user flows (#11313)
logLevel to config context (#13681)lodash per-method packages with full lodash (#13695)<a name="9.4.0"></a>
We expect this release to ship in the DevTools of Chrome 100, and to PageSpeed Insights within 2 weeks.
stale-while-revalidate (#13612)_includes and lhr.timing (#13619)<a name="9.3.1"></a>
<a name="9.3.0"></a>
We expect this release to ship in the DevTools of Chrome 100, and to PageSpeed Insights within 2 weeks.
<a name="9.2.0"></a>
We expect this release to ship in the DevTools of Chrome 99, and to PageSpeed Insights within 2 weeks.
endTime (#13452)Support for auditing user flows (#11313)
lang to html tag (#13454)<a name="9.1.0"></a>
We expect this release to ship in the DevTools of Chrome 98, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
Support for auditing user flows (#11313)
<a name="9.0.0"></a>
We expect this release to ship in the DevTools of Chrome 98, and to PageSpeed Insights within 2 weeks.
See the What's new in Lighthouse 9.0 blog post. Continue for the changelog.
Thanks to our new contributors 👽🐷🐰🐯🐻!
Lighthouse now offers auditing user flows, scripted with Puppeteer, via the Node CLI. This means you can now audit a page beyond its initial load. See the Lighthouse user flows blog post for more.
hidden group is used (#13241, #13310)renderScoreGauge, replaced with renderCategoryScore (#13269)Support for auditing user flows (#11313)
<a name="8.6.0"></a>
We expect this release to ship in the DevTools of Chrome 97, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
Support for auditing user flows (#11313)
supportedModes filter to categories (#13161)engines grammar (#13183)<a name="8.5.1"></a>
This is a patch release to fix an issue in the CLI when error reporting has been enabled.
Thanks to our new contributor 👽🐷🐰🐯🐻!
Support for auditing user flows (#11313)
<a name="8.5.0"></a>
We expect this release to ship in the DevTools of Chrome 96, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
Support for auditing user flows (#11313)
<a name="8.4.0"></a>
We expect this release to ship in the DevTools of Chrome 95, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
Support for auditing user flows (#11313)
--output argument is passed (#12836)<a name="8.3.0"></a>
We expect this release to ship in the DevTools of Chrome 94, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
.d.ts files to modules (#12870, #12880, #12888)Support for auditing user flows (#11313)
<a name="8.2.0"></a>
We expect this release to ship in the DevTools of Chrome 94, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributor 👽🐷🐰🐯🐻!
Support for auditing user flows (#11313)
require (#12721)<a name="8.1.0"></a>
We expect this release to ship in the DevTools of Chrome 93, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
Support for auditing user flows (#11313)
ws to latest (#12638)<a name="8.0.0"></a>
We expect this release to ship in the DevTools of Chrome 93, and is already in PageSpeed Insights!
The Performance Category had a number of scoring changes to align with other performance tools and to better reflect the state of the web.
See the v8.0 Performance FAQ for more detail.
<a href="https://github.com/GoogleChrome/lighthouse/blob/main/docs/v8-perf-faq.md"></a>
The report includes a new metric filter. Pick a metric to focus on the opportunities and diagnostics most relevant to improving just that metric:
The Lighthouse Treemap is now available across all the major Lighthouse clients. If your site exposes source maps to Lighthouse, look for the "View Treemap" button to see a breakdown of your shipped JavaScript, filterable by size and coverage on load.
csp-xss has been added to Best Practices to evaluate Content Security Policies and suggest ways of making them more secure. This can be a challenging audit to pass depending on hosting environment and page content, so for now it is unscored (#12514, #12551)estimated-input-latency and first-cpu-idle have been deprecated, unweighted, and hidden since Lighthouse 6. They have now been removed (#12553)full-icu by default, so the very large intl polyfill has been removed from Lighthouse's dependencies. See the readme FAQ if you're stuck with small-icu but need localization support (#12426)uses-webp-images has a new ID, modern-image-formats. WebP is now rather mainstream, and this frees the audit to start including details on other cutting-edge image formats in the future (#12535)image-elements artifact has been restructured for clarity (#12568)Support for auditing user flows (#11313)
settings to gather context (#12574)inspector-issues gatherer (#12530)tags-blocking-first-paint gatherer (#12527)response-compression gatherer (#12508)navigation-runner with legacy gather-runner (#12478)debug.json (#12555)lighthouse-plugin-publisher-ads to 1.4.1 (#12592)axe-core to 4.2.1 (#12575)puppeteer to 9.1.1 (#12284)chrome-launcher to 0.14.0 (#12507)<a name="7.5.0"></a>
We expect this release to ship in the DevTools of Chrome 92, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributor 👽🐷🐰🐯🐻!
<a name="treemap-release"></a> We are releasing the Lighthouse Treemap!
<a href="https://user-images.githubusercontent.com/4071474/118602146-2d08d480-b767-11eb-9273-9a8de7000e67.png"></a> <a href="https://user-images.githubusercontent.com/4071474/118602240-4742b280-b767-11eb-9f6a-433788029a30.png"></a>
You may already be familiar with treemaps thanks to webtreemap (which we use!) or source-map-explorer. With Lighthouse Treemap, you'll be able to view all the JavaScript bundles on your page easily from a Lighthouse report, in addition to some insights that may help reduce the amount of JavaScript on a page. The only requirement is that source maps are accessible (either publicly, or securely from the same computer that is running the Lighthouse audit).
We even collect code coverage data from Chrome, and extrapolate the coverage of individual modules in a bundle. Note: this only takes into account a cold-load: code only used after user interaction will be marked as unused. Stay tuned for a future release, which will enable you to configure user flows and capture even more accurate performance insights.
If we detect a large module included by multiple bundles, we'll alert you of that too.
You can access Lighthouse Treemap from the report:
Currently, only reports generated with the Lighthouse Node CLI will connect to the Lighthouse Treemap App. This functionality will be in DevTools and PageSpeed Insights as of Lighthouse v8.0.
Support for auditing user flows (#11313)
<a name="7.4.0"></a>
We expect this release to ship in the DevTools of Chrome 92, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
Support for auditing user flows (#11313)
<a name="7.3.0"></a>
We expect this release to ship in the DevTools of Chrome 91, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributor 👽🐷🐰🐯🐻!
<a name="7.2.0"></a>
We expect this release to ship in the DevTools of Chrome 90, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
Support for auditing user flows (#11313)
<a name="7.1.0"></a>
We expect this release to ship in the DevTools of Chrome 90, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
Support for auditing user flows (#11313)
<a name="7.0.1"></a>
We expect this release to ship in the DevTools of Chrome 90, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
Support for auditing user flows (#11313)
<a name="7.0.0"></a>
Lighthouse 7.0 includes a number of programmatic breaking changes and new audits in the Accessibility and PWA categories. There were some improvements in the accuracy of metric calculations, but it is not expected that Performance scores will change significantly for almost all sites. There may be larger changes in Accessibility and PWA scores due to the new audits.
This release is expected to ship in the DevTools of Chrome 89, and to PageSpeed Insights within 2 weeks.
start_url respond with 200 when offline. Separately, the "Page load is fast enough on mobile network" audit was removed—while it's no longer part of the PWA section, we encourage folks building a PWA to consult the Performance category to ensure their web app is speedy and delightful.lighthouse@next on npm. Note that while automated tests pass before publishing, it's expected that this version will be more unstable than the regular releases (#11792, #11805, #11810)axe-core has been updated to the latest 4.1.1 release. The accessibility audits are now faster, more robust, and include multiple new checks (#11661)Thanks to Kohta Ito (@koh110) and Sam Stoelinga (@samos123) for their first contributions!
installable-manifest PWA audit, mentioned above, uses Chrome's own installability criteria so it will always stay in sync with installability requirements (#11745)third-party-facades looks for third-party embeds in the test page that can be lazy loaded with a static "facade". If the embed isn't necessary for immediate interaction by a user, consider using one of the facades to speed up page load (#11290)aria-treeitem-name, aria-command-name, aria-tooltip-name, aria-meter-name, and aria-progressbar-name (#11661)axe-core also removes two audits that weren't checking much: layout-table and video-description (#11661)works-offline and offline-start-url audits were removed as their checks are now covered by the new installable-manifest implementation (#11806)load-fast-enough-for-pwa audit has also been removed since Lighthouse's existing performance metrics more than cover the needs there (#11764)without-javascript has been removed (#11711)--emulated-form-factor or other emulation-related configuration, you'll need to make changes. The new settings should be considerably simpler to use with custom Lighthouse runners using real devices, Puppeteer, or system-level throttling. See the emulation docs for migration guidance. (#11779)These changes are unlikely to affect end users, but may be important if you are writing custom configs, plugins, or processing the Lighthouse JSON output.
ConsoleMessages is a new artifact that is a combination of the old ConsoleMessages and RuntimeExceptions artifacts, with some expanded data on items logged to the console. RuntimeExceptions has been removed (#11663)NodeDetails property on each element (#11474, #11695, #11752)ImageElements artifact has been streamlined to better represent the data collected and how it's used (#11703, #11707, #11733)extends: true was allowed as an alias for extends: 'lighthouse:default' to extend a config from the default Lighthouse config file. The boolean option has been removed to prepare the way for extending from any valid config file (#11835)service-worker audit to the pwa-optimized group; its path in the JSON and metadata on scope URLs are unchanged (#11798)Runtime.evaluate from function code (#10816)InstallabilityErrors (#11782)uses-http2 audit (again) (#11777)script-treemap-data: fix sourceRoot and missing coverage bugs (#11825)warn-not-offline-capable in test (#11799)third-party-facades test (#11786)uses-http2: remove mention of h2 push in docs (#11834)redirectPass to work around crbug (#11813)*.d.ts files (#11793)git --deepen if no token (#11785)npm pack command (#11783)lighthouse-plugin-publisher-ads in Lightrider (#11648)print-contributors.js script (#11736)<a name="6.5.0"></a>
We expect this release to ship in the DevTools of Chrome 89, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
extends property (#11488)<a name="6.4.1"></a>
This is a minor release to fix an issue in the npm package where v6.4.0 was published with a lot of unncessary files.
Thanks to our new contributor 👽🐷🐰🐯🐻!
<a name="6.4.0"></a>
We expect this release to ship in the DevTools of Chrome 88, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
<a name="6.3.0"></a>
We expect this release to ship in the DevTools of Chrome 87, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
<a name="6.2.0"></a>
We expect this release to ship in the DevTools of Chrome 86, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
<a name="6.1.1"></a>
This is a patch release to fix an issue that only occurred in 6.1.0 for Node environments. It will only be released to npm.
<a name="6.1.0"></a>
We expect this release to ship to DevTools in Chrome 85, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
unused-javascript audit. In future versions of Lighthouse, source maps will be used for entirely new audits (#10990).KiB instead of KB. This is simply a label change; the value was and still is equal to 1024 bytes (#10870).Features hidden behind the --preset=experimental flag.
__LIGHTHOUSE_JSON__ (#10879)<a name="6.0.0"></a>
We expect this release to ship in the DevTools of Chrome 84.
So many! See the Lighthouse 6.0: What's New blog post for an in-depth look.
layout-shift-elements is another companion diagnostic that gives information about the elements that shifted as the page loaded (#10702).unused-javascript is an audit that has been kicking around for some time but is only now turned on by default. It accounts for what JavaScript was loaded but never executed during page load and estimates the load time that could be saved via code splitting, dead code elimination, or judicious use of the delete key (#9854).maskable-icon just looks better on your homescreen, so this new audit encourages you to have at least one available in your manifest (#10370).timing-budget expands budget assertions to now be settable on all the performance metrics (#9901, #9925).charset audit ensures a proper character encoding for page content (#10284, #10389, #10689).image-size-responsive checks that images have an aspect ratio and resolution that match well with how they are displayed on a page (#10460).axe-core has unlocked a number of new accessibility audits: aria-hidden-body, aria-hidden-focus, aria-input-field-name, aria-toggle-field-name, duplicate-id-active, duplicate-id-aria, form-field-multiple-labels, heading-order (#9798).These audits are not yet part of the default Lighthouse experience, but they will provide performance advice based on analysis of a page's JavaScript bundles. They can be tested today on the command line with the --preset=experimental flag.
legacy-javascript rummages through your bundles looking for polyfills and bundler transforms that aren't necessary or are outdated (#10303, #10568, #10564).duplicated-javascript also takes a dive through a page's JavaScript looking for code that has ended up duplicated within bundles or across multiple bundles (#10314).unused-javascript now runs by default (as mentioned above), but when run under experimental, the audit can use source maps to show what original source code was never run and could be postponed or eliminated (#10090).Thanks to @TGiles, @roelfjan, @chruxin, @warrengm, @alexgreencode, @mikedijkstra, @egsweeny, @johnsampson, @jazyan, @b3none, @mattjared, @Malvoz, @Beytoven, @Munter, @jayaddison, @msomji, @piotrzarycki, @awdltd, @mathiasbynens, @Carr1005, @staabm, @SphinxKnight, @sk-, @AndreasKubasa, @jantimon, @kmanuel, @Kikobeats, @RolandBurrows, @nxqamar, @catalinred, and @baseeee for their first contributions! So many!
frameNavigated events are now used to track redirects, which means JS redirects are now accounted for when determining the run's finalUrl (#10339).mixed-content preset has been removed as it was not widely used and takes too long to be added to the default Lighthouse experience (#10159, #10750).full preset has been renamed experimental to signify that the code there may not be ready for running by default (#9930, #10311, #10333, #10585).installable-manifest: icons in the Web app manifest must be fetchable to be considered installable (#10168, #10320)These changes are unlikely to affect end users, but may be important if you are writing custom configs, plugins, or processing the Lighthouse JSON output.
LH.Audit.Context passed into audits is now treated as immutable. If code previously pushed to context.LighthouseRunWarnings to get a top-level warning, it should now pass that back in runWarnings on the audit's product (#10555).Audit.computeLogNormalScore has been redefined to specify log-normal curves with median and p10 points (dropping the "point of diminishing returns"). Existing audits have been moved to this new definition so that no score changes should occur (#10715).loadFailureMode setting has been added to Config passes to control behavior in case of page load failure. Previously this was implicitly controlled (e.g. no offline page available did not cause an error) (#9987)time-to-first-byte has been renamed server-response-time to better reflect what is being measured by the audit (#10735).resource-summary: details.items.size has been renamed to transferSize for clarity (#10700, #10743).The following changes are considered to be bug fixes or updates to better match what was intended to be audited, but the changes may cause adjustments in audit scores or behavior.
initiatorRequest when there are duplicate records (#10097)offscreen-images: look outside three viewports for possible images to defer (#10643)uses-responsive-images: include offscreen images larger than viewport (#10506, #10561)accessibility: include axe-core 'incomplete' results in artifact to include even partial a11y results (#10072, #10270)audio-caption: remove check that has been disabled by axe-core (#10453)link-text: Add more keywords to blocklist (#9986)font-size: don't allow a deleted node to fail gatherer (#9928)installable-manifest: lower required icon size from 192px to 144px (#10175)is-on-https: add filesystem to secure schemes (#10073)offscreen-images: exclude lazy or eager loading images (#10117)resource-summary: don't include favicon.ico in summary (#10190)uses-rel-preconnect: warn if more than three preconnects found (#9903, #10293)third-party-summary: don't include main resource if origin in third-party list (#10006)js-lib-detector: handle new fast lib detection entries, version heterogeneity (#9888, #10295, #10176)is-on-https: update description to reference mixed content (#10712)definition-list: mention <div> is allowed to group content in <dl> (#10479)offline-start-url: improve failure messages (#9982)numericUnit property to specify the units for their numericResult (#9979)ImageElements: add usesPixelArtScaling and usesSrcSetDensityDescriptor properties (#10481)MetaElements: include property attribute (#9978)HostFormFactor (#9923)unused-javascript-summary as a computed artifact (#10387, #10634)js-bundles (#10078)unused-css as a computed artifact (#10160)firstPartyHostnames to the API (#10105, #10324)tolerance property from API (#9770)axe-core errors are properly serialized (#10646)audit-details type names (#10603)finished state on hidden network-requests audit (#10530)driver: dead code cleanup (#10491, #10571)__internalOptionalArtifacts for experimental artifacts (#10355)font-size: use DOMSnapshot.captureSnapshot for better performance (#10200)evaluateAsync when fetching content from the test page (#10130)script-elements: fetch script content in parallel (#9713)GatherRunner.runPass in internal perf timing numbers (#10205)GatherRunner.isPerfPass for clarity (#9896)--chrome-flags (#10607)--output (#10188)--chrome-ignore-default-flags (#10184)--extra-headers as object (#9962)external-anchors-use-rel-noopener: use node audit details type (#10242)is-crawlable: include robots.txt line number that blocks crawling (#10154)font-size relative to report-font-size (#10761)null jsdoc type annotations for internal linter (#10454)channel to runtime settings (#10099)Util.UIStrings to Util.i18n (#10153)source-location details for linking to source code (#9354)runLighthouseInWorker and expose to worker (#10005)settings.internalDisableDeviceScreenEmulation (#9377)lighthouse-plugin-publisher-ads in bundle (#9924, #10583, #10682)roll-to-devtools and track upstream changes (#9942, #10310, #10036, #10758, #10762)log.verbose() for outdated-strings warning (#9931)NODE_PATH (#9997, #10028)--disable-storage-reset in recipe (#10189)build/ directory (#10004)yarn test-docs (#10263)yarn update:sample-json (#10557, #10661)bundle.js runner for driving bundled lighthouse tests (#9943)bundle.js runner + bundled lighthouse for integration testing in a browser (#9873, #10727)static-server hook to modify response body (#9872)pwa.rocks for testing (#10648)driver-test (#10135, #10123)gather-runner-test (#10136, #10215, #10230)i18n-test.js bugs in Node 13 (#10595)assert in strict assertion mode (#10606, #10733)report-ui-features: add tests and remove interdependencies (#10199, #10201)coveragePathIgnore jest configuration (#10448)speedline: remove flaky test (#10181)global.URL for jsdom tests (#10186)puppeteer's chromium (#9877)yarn now-build (#10151)Lighthouse Authors (#10469)timings-data/ to .npmignore (#10584)CODEOWNERS for codereview assignment (#10265, #10274, #10282)bump-versions.js release script (#9998).mailmap file (#10766)compare-runs script (#10296, #10519, #10526, #10652)git3po scripts for managing Github issues and PRs (#10231, #10266, #10255, #10271, #10338, #10256, #10304, #10658, #10257)lighthouse-plugin-publisher-ads: upgrade to 1.1.0-beta.0 (#10544, #10776)chrome-launcher: upgrade to 0.13.2 (#9904, #10535, #10724)yargs-parser: upgrade to 18.1.3 (#10723)third-party-web: upgrade to 0.11.1 (#10711)axe-core: upgrade to 3.5.3 (#10056, #10344, #10637)typescript: upgrade to 3.8.3 (#10461)puppeteer: upgrade to 1.20.0 (#10275)bundlesize: upgrade to to 0.18.0 (#10272)devtools-protocol: upgrade to 0.0.729809 (#10207)angular test fixture into repo (#10086)mkdirp and make-dir for fs.mkdir (#9858)<a name="6.0.0-beta.0"></a>
This beta release will not ship in Chrome DevTools, but we'll ship the final 6.0 release.
See the 6.0.0 release notes for full changelog.
<a name="5.6.0"></a>
We expect this release to ship in the DevTools of Chrome 79.
Thanks to @dpacassi, @lirantal and @yeonjuan for their first contributions!
<a name="5.5.0"></a>
devtools and provided throttling only) and can be found in the hidden metrics audit in the raw LHR JSON (#9706)"Fatal trace logic error - expected start event, got X" (#9491)<script> element id has been added to the ScriptElements artifact (#9718)Thanks to @LarsKumbier, @TimvdLippe, and @uchoudh for their first contributions!
registerLocaleData to worker (#9645)Runtime.cachedResources (#9758)utm_medium check for web.dev links (#9737)runWarnings (#9732)<a name="5.4.0"></a>
Expected DevTools release in Chrome 79 (December 2019)
<a name="5.3.0"></a>
Expected DevTools release in Chrome 79 (December 2019)
Thanks to our new contributors @alabiaga, @olore, @letanure, and @mfriesenhahn!
maxWaitForFcp to 30s (#9509)mainRecord (#9576)budget.json (#9453)link-text audit (#9446)offlinePass (#9451)source-maps gatherer (#9101)channel from configSettings (#9554)registerLocaleData() method (#9638)aria-required-children titles (#9590)pwa-page-transitions description (#9615)intl-messageformat (#9570)uses-rel-preconnect description (#9568)robots.txt displayValue (#9567)UIStrings (#9487)td-headers-attr titles (#9587)axe-core validation of report output (#9421)document.write() audit and intervention (#9644)collect-strings to use glob and work on windows (#9406)yarn.lock cruft & deduplicate dependencies (#9603, #9600)uglify-es with terser (#9594)<a name="5.2.0"></a>
Expected DevTools release in Chrome 77 (September 2019)
Thanks to @AngeloGulina, @jamesgeorge007, @johnemau, @kaushikchaubal, @mitchellsimoens, @NickolasBenakis, @noelyoo, @PatOnTheBack, @rishichawda, and @Remexllee for their first contributions!
Third-Party Usage, a new performance diagnostic that shows a breakdown of third-party resources in the page and the time/bytes needed to load them (#9067)Total Blocking Time an experimental new metric that serves as a companion to TTI to help prioritize unblocking the main thread. Since it is currently experimental, it is unscored and appears only in the raw LHR JSON, not in the HTML report. (#8975, #9409)lib/tracehouse/ to serve as a more standalone library (9f80524, 1af2edd, 7ba6776, ddff3d6)requiredArtifacts will be gathered (#9284)domstats: support an empty html body (#9340)font-display: limit false positives (#9148)font-size: calculate accurate line/column for styles (#9356)font-size: comment why source 'Other' occurs (#9363)gather-runner: add PageLoadError base artifact (#9236)gather-runner: don't save trace on pass with pageLoadError (#9198)gather-runner: treat Chrome interstitials as pageLoadErrors (#9176)gather-runner: always reset scroll position (#9060)gather-runner: convert PAGE_HUNG to non-fatal runtimeError (#9121)manifest-parser: handle blob manifests (#9088)page-functions: don't try to clone a ShadowRoot (#9079)tap-target's isVisible() (#9056)processForProto method signature, string -> LH.Result (#9016)axe-core to 3.3.0 (#9343)typescript to 3.5.3 (#9357)chrome-launcher to 0.11.1 (#9339)intl: move from devDep to dep (#9309)debug to 2.6.9 (#9398)open from opn (#9267)brfs to 2.0.2 (#9312)commitizen as local dep (#9246)extend to 3.0.2 (#9184)js-yaml (#9131)bundlesize, add more budgets (#9089)understanding-results.md (#9226)Exthouse to related projects (#9243)lighthouse-jest-example to related projects (#9172)lighthouse-persist to related projects(#9161)gimbal integration to related projects (#9083)lighthouse-mocha-example related project (#9158)en-XL (#9192)best-practices (#9092)es-419 (#9171)<defs> have unique ids (#9151)font-size: assert on source (#9400, #9413)vulnerable-library ranges have upper bounds (#9308)yarn.lock (#9362)lhr.runtimeError (#9130)tags-blocking-first-paint: make alternate stylesheets not blocking (#9248)gather-runner tests (#9227)yarn.lock and translations master drift (#9404)network-server-latency: fix serverResponseTime typo (#9388)GatherRunner error (#9291)devtoolsLog as requiredArtifact (#9290)yarn static-server script (#9293)performance-budget smoke test (#9244).idea to .gitignore for WebStorm developers (#9275)CHROME_PATH variable in CI and scripts (#9202)<a name="5.1.0"></a>
Thanks to our new contributors 👽🐷🐰🐯🐻! @thebengeu @boyney123
<a name="5.0.0"></a>
apple-touch-icon PWA audit (#8857)max-potential-fid (new in HTML report) (#8729, #8817)performance-budget (#8539)resource-summary (#8522)rawValue has been removed from audit results. If the audit had a meaningful numeric result (like a metric), this result will now be on numericValue. (#8343, #8385, #8421)--disable-device-emulation flag has been removed. Use --emulated-form-factor. (#8289, #8334)dom-size now ignores elements in <head> and limits scoring to only DOM nodes in the body. (#7241)diagnostics audit details have had their type value changed to debugdata (#8298)screenshot-thumbnails screenshots has changed. They are now a full image data URL. (#8299)Thanks to @arnabsen, @housseindjirdeh, @MarkelFe, @muuvmuuv, and @Meggin for their first contributions!
font-display: do not use invalid sourceURLs (#8535)link-text audit (#7547)image-alt to SEO category (#8407)--help: remove screenshots mention from --save-assets (#8263)<a name="4.3.1"></a>
<a name="4.3.0"></a>
Thanks to @rdlabo and @yashrajbharti for their first contributions!
<a name="4.2.0"></a>
@pra85, @tgfjt, @gidztech and @jburger424. Thank ya!
<a name="4.1.0"></a>
@castilloandres you da man, man.
meta-elements artifact (#7025)ImageUsage to match other *Elements artifacts (#7030)LH.Result (#7051)<a name="4.0.0"></a>
@mattzeunert, @dima74, @jeffbcross, @knoxmic, and @shogunsea. Thanks!
A bevy of bug fixes and performance improvements.
A special reward for getting a perfect score.
A new layout for the PWA category, emphasizing speed, installability, and polish.
<a href="https://user-images.githubusercontent.com/316891/51218948-6e60ef00-18e3-11e9-8a48-535b59a41301.png"></a>
scoreDisplayMode 'not-applicable' is now 'notApplicable' (#6783)no-websql audit removed due to performance cost (#6293)speed-index scoring now scales based on throttling (#7007)critical-request-chain audit result (#6211)mobile3G renamed to the more accurate mobileSlow4G with no change in values (#6163)types/ (#6617)lighthouse-core/computed/ (#6618)Full Changelog (in addition to the changes in 4.0.0-beta, 4.0.0-alpha.1, and 4.0.0-alpha.0)
Driver.gotoURL (#6739)waitForFCP when tracing (#6944)usesObjectFit property for ImageElement (#6761)'not-applicable' to 'notApplicable' (#6783)start_url is within SW's scope (#6678)ClientRects (#6703)NON_NETWORK_PROTOCOLS (#6711)displayValue to be string only (#6767)pwmetrics-events (#6980)--help: use HTTPS link to bit.ly/chrome-flags (#6692)runnerResult from runLighthouseInExtension() (#6839)errorCode in expectations (#6851)URLSearchParams (#6929)cli/tests/ (#6874)<a name="4.0.0-beta"></a>
<a name="4.0.0-alpha.1"></a>
<a name="4.0.0-alpha.0"></a>
Thanks to @carlesnunez and @justin0022 for their first contributions!
Thanks to @CodeDem for improving how the image-aspect-ratio audit handles small images!
Huge thanks to myself (@Hoten) for joining Lighthouse! Go me!
<a name="3.2.1"></a>
<a name="3.2.0"></a>
emulatedFormFactor setting (#6098)cursor:pointer on Passed Audits, etc (#5977)<a name="3.1.1"></a>
<a name="3.1.0"></a>
Huge thanks to @midzer and @justinribeiro for being so darn helpful. Great stuff. :D
And thanks to @mettamatt for some helpful documentation. Who doesn't love better docs?!
| Previously | Now | |
|---|---|---|
| Red (bad) | 0-44 | 0-49 |
| Orange (average) | 45-74 | 50-89 |
| Green (good) | 75-100 | 90-100 |
Scoring itself hasn't changed; only what color is used to decorate a score.
<a name="3.0.3"></a>
<a name="3.0.2"></a>
Thanks to @schalkneethling and @eduardosada for their first contributions!
<a name="3.0.1"></a>
<a name="3.0.0"></a>
Changelog of v3.0.0-beta.0 to 3.0 final
Thanks to @underbyte, @nourikhalass and @ernstmul for their first contributions! Awesome stuff.
natives dep for node 10.4 compat (#5497)<a name="3.0.0-beta.0"></a>
<a name="3.0.0-alpha.2"></a>
<a name="3.0.0-alpha"></a>
<a name="2.9.1"></a>
Thanks to @GaryJones for helping us spel gud!
<a name="2.9.0"></a>
Thanks to @FadySamirSadek, @christhompson and @rupesh1 for their first contributions! Awesome stuff.
<link rel=preload> audit (#3450)font-display: optional (#3831)--extra-headers: Enable sending additional HTTP Headers (#3732)--mixed-content: triggers the mixed content audit (#4441)about:blank (#4310)push build for non-master. (af8dbd0)<a name="2.8.0"></a>
Thanks to @jianzhoufeng and @nhodges for their first contributions!
<a name="2.7.0"></a>
Thanks to @sanjsanj, @dennismartensson, @daannijkamp, @crimeminister!
<a name="2.6.0"></a>
@peterjanes, @stevector, @AkshayIyer12, @manekinekko, @alekseykulikov, @coliff, @emazzotta
redirects: avoid page redirects (#3308)link-text: descriptive anchor text audit (#3490)is-crawlable: page is blocked from indexing (#3657)bootup-time: JS bootup time per script (#3563)uses-long-cache-ttl: detects savings from leveraging caching (#3531)mainthread-work-breakdown: audit for page-execution timings (#3520)chromeFlags (#3775)aspect-ratio: skip aspect ratio audit for svg (#3722)href=javascript:.* for rel=noopener audit (#3574)critical-request-chains: Remove iframe as Critical Request (#3583)dependency-graph: add acyclic check (#3592)devtools-model: fix missing Runtime.experiments object (#3514)Emulation.setVisibleSize (#3536)errors-in-console: include runtime exceptions (#3494)image-aspect-ratio: pass audit when no images are missized (#3552)image-usage: add null check for parentElement (#3779)predictive-perf: predict FCP (#3730)predictive-perf: refactor simulation logic (#3489)response-compression: add transferSize sanity check (#3606)optimalValue (#3774)speed-index: only compute perceptual speed index (#3845)changelog-generator: Generate changelogs (#3632)bug-labels.md: Create bug-labels.md (#3522, #3525, #3535)new-audits.md: Principles and guidance for new audits (#3617)comcast throttles the websocket (bedb9a1)image-aspect-ratio: fix audit description (#3843)render-blocking-stylesheets: improve actionability of helpText (#3544)eslint (and goog config) to latest (#3396)eslint: use --quiet flag rather than --silent (#3491)byte-efficiency tester to deflake appveyor (#3804)web-inspector: add test for setImmediate polyfill (#3670)chrome-launcher to 0.8.1 (#3479)Runtime and queryParam() (#3497)meta.category (#3554)commitizen: new-audit => new_audit (#3534)cz-customizable to establish a commit message convention (#3499)image-aspect-ratio audit (#3513)<a name="2.5.1"></a>
<a name="2.5.0"></a>
image-aspect-ratio best practice audit (#3084)time-to-first-byte perf audit (last fixes and now enabled) (#2231)errors-in-console best practice audit (#2836)no-vulnerable-libraries best practice audit (#2372)unused-javascript coverage audit (#3085)meta-description SEO audit (#3227)http-status-code SEO audit (#3311)predictive-perf shell and base audit (#2720, #3189)unused-css-rules audit to support new coverage format (full-config only) (#2518)Audits.getEncodedResponse in optimized-images audit (#3087)Page.navigate to resolve to listen for page load (#3413)v8.execute trace event category (ab6aabde)\u2028 and \u2029 from breaking the report (#3442)unused-css-rules audit expectations (#3036)\_JAVA_OPTIONS for DevTools' compile_frontend.py test (#3354)comma-dangle rule, fix all new errors (#3324)time-to-first-byte smoke test (#3310)blockedUrlPatterns support to CLI (#3125)yargsParser directly for chromeFlags parsing (#3408)chrome-launcher has moved to a standalone npm package
SIGINT handling (#2959)spawnPromise (#2939)lighthouse-logger/ from npm package (#3411)perfX code (#3431)bundlesize to 0.13.2 (#3122)axe-core to 2.4.1 (#3284, #3320)ws to 1.1.2 (2d2206b8)<a name="2.4.0"></a>
LIGHTHOUSE_CHROMIUM_PATH (#2929) (de408ad)<a name="2.3.0"></a>
<a name="2.2.1"></a>
<a name="2.2.0"></a>
chrome-launcher shipped as a standalone moduleThe chrome-launcher module is now on npm. Great for working with Chrome headless.
The Lighthouse Report Viewer can now view data from Lighthouse 2.x, including JSON saved from the CLI, exported from the Chrome extension or DevTools Audits panel. (#2521)
Thanks to Katie Hempenius, Artur M, Kevin Farrugia, Piper Chester, Robin Drexler, and Mike Deverell. Due to the effort of these developers we now have an audit for checking for paste-blocked password fields, unified usage of toLocaleString(), a correct gulp recipe, a well-functioning chrome-launcher module, and improved clarity in the audit test descriptions. We truly appreciate all these improvements!
Since 2.1.0 we've had a number of other features, fixes, and improvements. Presented by category:
<a name="2.1.0"></a>
Fixed bugs:
<a href="https://user-images.githubusercontent.com/39191/28991453-b9061d48-793c-11e7-957f-1399ae992e84.png"></a> Everything is brand new UI. header footer, left nav, export, score gauges… screenshots! filmstrip . pass and failures seperated. Sparklines. Accessibility by section. Perf sections..
<br clear=all>Take a look at the DevTools' Audit tab, where Lighthouse is now integrated
Overall the Operation Yaquina Bay (Issue #2146) effort made massive improvements to the total lighthouse runtime:
Huge thanks to who contributed 27 epic PRs.
<details> printing fixcurly rule to google js style (#2263)<a name="1.6.5"></a>
This is a maintenance release on the stable 1.6 branch.
Master branch (tagged at 2.0.0-alpha) is under some heavy refactors, so we're holding off on shipping a new version. Expect one by mid-May. ( Poke around recent PRs and issues if you're curious what we're up to ;)
In the meantime, only a few changes here in 1.6.5:
Thanks to @ebidel and @paulirish for merging this stuff back to stable branch.
<a name="1.6.0"></a>
There were 44 PRs landed for this release. These are their stories.
Huge thanks to @sendilkumarn, who contributed four epic PRs. Also welcome to @tommycli, @narendrashetty, @mohsen1 and @dentemple. Readme tweaks are how it all starts. ;)
WebPageTest integration is in beta
By popular demand, you will soon have a way to run Lighthouse on demand in the cloud. We've worked closely with WebPageTest to enable Lighthouse auditing and analysis from within a WPT run. Our contribution WPO-Foundation/webpagetest#825 was just merged and Lighthouse on WPT is currently in private beta.
Lighthouse's CLI output has taken a chill pill - #1764
While you can view all Lighthouse results on the command line, it hasn't scaled well. A few screenworths of report was generally dumped to stdout right as Lighthouse finished up. Now, to keep your terminal happy, you will no longer see the reams of results printed to stdout.
The HTML report is saved to disk by default, and you can automatically open it with lighthouse --view.
If you still want the stdout output, use --output=pretty. Oh so pretty.
Thanks to a large effort from @XhmikosR, we now have an eye in the sky on Lighthouse's Windows compatibility. Now, all PRs are tested on both Linux and Windows.
New audit: DOM stats (total nodes, depth, width). (#1673) Get flagged if the size or depth of your DOM is big enough to cause big slowdowns.
New audit: Total byte weight audit (#1759). An extra check to make sure folks don't ship 5MB webpages.
-chrome-flags option to CLI. (#1761)--disable-storage-reset flag to skip clearing cache and storage (#1675)<a name="1.5.1"></a>
Full changelog (2017-02-10)
management permission to study effect first (#1689) - #1687<a name="1.5.0"></a>
There were 128 PRs landed for this release. These are their stories.
@graph1994, @denar90, and @kiermasp
Dropped support for Node earlier than v6 - #1519
Node v6 became the Node long-term-support version in October 2016. After a suitable mourning period for v4 with a --harmony flag, Lighthouse has moved on and will only support v6+ going forward.
Improved selection of First Contentful and Meaningful Paint events from unusual traces - #1632, #1634
Lighthouse has banished the dreaded -1 score that has long plagued runs for certain sites.
First Meaningful Paint is now detected much more robustly. While it is not yet a completely solved problem, a large class of these errors should be eliminated. Reporting on these errors has also improved over the ambiguous -1, clearly differentiating between an issue with Lighthouse and an issue with the page being tested.
Open local report in online report Viewer - #1179
When viewing a Lighthouse HTML report generated locally—in the extension or from the command line—a new option is available in the "Export..." dropdown that allows you to upload to the Lighthouse Online Viewer.
You can then use the Viewer share button to get a report URL that you can share freely.
Behind the scenes, Viewer gets your permission via OAuth to create a GitHub secret gist and saves the report there. Since it's done as your gist, you maintain full control over the sharing of the report and you can delete it at any time. You can revoke the Viewer's permission to create gists under your GitHub settings.
Performance metrics are injected into trace saved with --save-assets for viewing in timeline - #1446
Lighthouse metrics like "First meaningful paint", "Time to Interactive", etc are mocked out as User Timing measures and injected back into the trace taken by Lighthouse.
If you save a run's trace with --save-assets and then open it in DevTools or Timeline Viewer, you'll be able to see your key metrics in context with the full trace of the page load.
Throttling and emulation information in report - #1485, #1608, fc858ea
It's easy to forget what throttling and emulation settings were used for a particular Lighthouse run after some time has passed. The settings used are now saved in the raw JSON results and are printed at the top of the HTML report under the arrow dropdown.
UI to interactively block certain page resources and measure the load performance difference
The first version of the Performance Experiment project is landing in 1.5.0. When Lighthouse is run with the --interactive flag, a special report is generated that allows interactive selection of costly page resources. The experiment server then reruns Lighthouse on that page with those resources blocked.
This lets you experiment with your page load performance, interactively testing the effects of blocking or delaying assets in your critical path.
CSS usage - #1421, #1479, #1466, #1496, #1557
Reports the number of unused style rules in your page and the byte/time savings of removing them:
Image optimization - #1452, #1579
Reports images that are unoptimized and the byte/time savings of optimizing them:
Report Chrome's deprecated API warnings - #1470
Lists console warnings from Chrome if your page is using deprecated APIs or features that have interventions:
Responsive image sizing - #1497
Reports images that are too big and the potential byte/time savings of sizing them correctly for the given device:
no-old-flexbox audit - #1374speed-index audit results - #1430, #1558--output-path when saving artifacts and assets from run - #1601--perf config to include latest perf audits - #1640all-event-listeners collection commands in parallel to improve performance - #1667<details> on print - #1468goog_* from user timings - #1563geolocation-on-start gatherer cannot be run on insecure origins - #1679LIGHTHOUSE_CHROMIUM_PATH variable on Windows - #1572bash and node explicitly in npm scripts for cross-platform compatibility - #1510json-stringify-safe only when necessary - #1435[].includes(), and default parameters - #1524, #1580, #1633TraceOfTab computed artifact to centralize extraction of key trace events - #1549-1 ad hoc system - #1560, #1623, #1641, #1624-1s and score more consistently - #1591, #1649, f92b8edPage and Network events - #1665, #1669tracingModel to computed artifact to halve time spent constructing timeline model - #1668package.json - #1439, #1488, #1522package.json dependencies to specific versions - #1422mocha to 3.2.0 - #1585<a name="1.4.1"></a>
<a name="1.4.0"></a>
@dracos, @lokson, and @AdrianoCahete
external-anchors-use-rel-noopener audit - #1358no-console-time and no-datenow audits - #1288"minimal-ui" as an allowed Manifest display value - #1268which failures when looking for Linux Chrome executable - #1395server.js - #1189mkdirp dependency once - #1284marked - #1226<a name="1.3.2"></a>
<a name="1.3.1"></a>
@XhmikosR
noreferrer from helpText links (#1190)driver.captureFunctionCallSites in the face of Error polyfills - #1218<a name="1.3.0"></a>
@Janpot, @robdodson, and @WeiweiAtGit
whatwg-url to parse URLs - #997firstMeaningfulPaint trace event directly - #1066paintNonDefaultBackgroundColor event from user-timings - #1077tracingStartedInPage doesn't precede navStart in trace - #1152, 9c8d13e5--view flag which serves generated report after Lighthouse run - #1130, f6afd225evaluateAsync rejects - #1037helpText toggle to pure CSS - #1104rimraf async for deleting Chrome temp profile - #1127ChromeLauncher.kill() twice - #1131reportContext when generated by the CLI - #1171evaluateAsync when page has overridden native Promise - #1037, #1178eslint and eslint-config-google to latest - #1136, #1159, #1160notification-on-start - #1089no-console-time helpText - #1142helpText docs - #1161requiredArtifacts before running - #1088axe-core results - #1167bin.ts execution and error-handling paths - #1141this.artifact - #1122tsc to es3ify viewer code - #1150whatwg-url - #997opn - #1130jszip - #1094eslint and eslint-config-google - #1136axe-core to 2.1.7; now 8x faster - #1155<a name="1.2.2"></a>
@beaufortfrancois
driver.captureFunctionCallSites resolves to an array - #1036eval'd code in driver.captureFunctionCallSites - #1073noopener when in list of link types in rel - #1035description strings - #1045helpText to remaining audits - #998<a name="1.2.1"></a>
<script> elements in head that block first paint - #965without-javascript gatherer and audit - #971artifact.debugString) in geolocation gatherer - #999all-event-listeners gatherer - #1013_ in chrome launcher - #981npm install (for now) on Travis after their change to prefer yarn - #994<a name="1.2.0"></a>
@Bassoon08, @karanjthakkar, @chowse, @hsingh23, @olingern, and @patrickhulce
<link> elements in head that block first paint - #892rel=noopener on external links - #912--quiet logging as silent - #881DOM.disable call - #895, #907<link>s in link-blocking-first-paint audit - #911<link>s and fix unit of time in link-blocking-first-paint audit - #963main field to CLI's package.json - #875gt handlebars helper to accessibility formatter - #929and helper to show displayValue in reports - #938helpText typo - #955description text - #956chrome-debug binary to use internal Chrome launcher - #898<a name="1.1.7"></a>
lighthouse-background.js - #803driver.captureJSCallUsage - #779driver.captureFunctionCallSites to use updated driver.evaluateAsync - #809npm run dbw to use new emulation flags - #834extendedInfo returned from DBW http2 audit to prevent circular references - #842log - #835DOM domain to be redundantly disabled - #861targetId requirement for checking if other tabs will share a service worker - #852Error - #862--quiet flag - #774outputMode conditional - #846tsc has not been run before use - #857prefer-const eslint rule - #804getLogNormalDistribution and getRiskToResponsiveness on TracingProcessor - #806--select-chrome flag - #829web-inspector.js worker friendly - #795driver.evaluateAsync to Runtime.evaluate(awaitPromise) - #793Connection abstraction from driver - #800connections/ directory for debugger protocol connection classes - #822--disable-device-emulation and --disable-network-throttling flags - #747<a name="1.1.6"></a>
<a name="1.1.5"></a>
pauseAfterLoad option #697Date.now() -> performance.now() audit #707console.time() -> performance.mark() audit #712document.write() audit #716chrome-debug binary to launch the debuggable standalone chrome #678npm run dbw to run DoBetterWeb audits #696helpText associated with audit results #695generatedTime property in json output #752helpText #751auditWhitelist argument #676--save-assets #711--mobile flag #721'use strict'; to files where it was missing #694sendCommand promise rejections #703config.json properties #727queryCurrentTab impl #680user-timing test assertions #732<a name="1.1.3"></a>
<a name="1.1.2"></a>
<a name="1.1.1"></a>
<a name="1.1.0"></a>
<a name="1.0.6"></a>
<a name="1.0.5"></a>
<a name="1.0.4"></a>