Automated auditing, performance metrics, and best practices for the web.
APACHE-2.0 License
Bot releases are hidden (Show)
We expect this release to ship in the DevTools of Chrome 126, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
As per Chrome’s updated Installability Criteria, Lighthouse has removed the PWA category. For future PWA testing, users will be directed to use the updated PWA documentation.
The SEO category has been updated to reflect the priorities of Google search in 2024. As such, several audits have been removed or moved to other categories:
is-crawlable
audit is now weighted high enough to fail the SEO category on its own. (#15933)viewport
and font-size
audits are no longer priorities for SEO, but are still important for UX in general so they have been moved to the best practices category. (#15930)plugins
audit is no longer a priority for SEO and has been removed. (#15928)tap-targets
audit is no longer a priority for SEO and has been replaced with the target-size
audit in accessibility. (#15906)The overallSavingsMs
value on performance diagnostic audits has been deprecated (#15902). We recommend using metricSavings.LCP
or metricSavings.FCP
to understand the estimated metric savings of performance diagnostics.
aria-conditional-attr
, aria-deprecated-role
and aria-prohibited-attr
Axe checks have been added to the Lighthouse accessibility category. (#15963)redirects-http
audit has been brought back, but will only passively check for a http -> https redirect if the provided URL happens to be on http (#13548)layout-shifts-elements
audit is removed. Improved layout shift information can be found in the layout-shifts
audit. (#15931)no-unload-listeners
audit is removed. Unload listeners are deprecated and are still flagged in the deprecations
and bf-cache
audits. (#15874)duplicate-id-active
audit is removed because it's corresponding Axe check is deprecated. (#15900)uses-rel-preload
and preload-fonts
audits have been moved to the experimental config. Preload advice is still on hold and these audits were already in a disabled state. (#15876)CSSUsage
artifact (#15952)ScriptElements
artifact (#15879)service-worker
gatherer (#15942)tldts-icann
to 6.1.16 (#15967)third-party-web
to 0.24.2 (#15966)BenchmarkIndexes
base artifact (#15941)lighthouse-cli
file (#15935)Published by adamraine 6 months ago
We expect this release to ship in the DevTools of Chrome 125, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
impactedNodes
(#15915)Published by adamraine 7 months ago
We expect this release to ship in the DevTools of Chrome 125, and to PageSpeed Insights within 2 weeks.
manifest-parsing-or-network-error
(#15849)getArtifact
phase once (#15827)chrome-launcher
to 1.1.1 (#15871)Published by adamraine 8 months ago
We expect this release to ship in the DevTools of Chrome 124, and to PageSpeed Insights within 2 weeks.
axe-core
to 4.8.4 (#15805)Published by adamraine 9 months ago
We expect this release to ship in the DevTools of Chrome 123, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
Published by adamraine 10 months ago
We expect this release to ship in the DevTools of Chrome 122, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
Chrome plans to remove support for third-party cookies which can be detected using a new Lighthouse audit. Learn more about phasing out third-party cookies. (#15632)
else
to punctuation (#15624)Published by adamraine 12 months ago
We expect this release to ship in the DevTools of Chrome 121, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
clearStorageTypes
option (#15508)lighthouse-stack-packs
to 1.12.1 (#15566)Published by adamraine about 1 year ago
We expect this release to ship in the DevTools of Chrome 120, and to PageSpeed Insights within 2 weeks.
This update includes an overhaul to the performance category. Performance insights are now scored and prioritized based on their estimated impact to the performance metrics. Additionally, the performance score gauge includes more detailed information about how each metric affects the score.
propertyRuleIssue
(#15491)axe-core
to 4.8.1 (#15446)Published by adamraine about 1 year ago
We expect this release to ship in the DevTools of Chrome 119, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
bootup-time
(#15431)index.cjs
types (#15387)DevtoolsLog
and Trace
artifacts (#15345)rawHref
crawlable (#15406)third-party-web
to 0.24.0 (#15354)axe-core
to 4.8.0 (#15430)Published by adamraine about 1 year ago
We expect this release to ship in the DevTools of Chrome 118, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
The --legacy-navigation
flag on the CLI, the legacyNavigation()
function in the Node API, and the "Legacy navigation" checkbox in the DevTools panel have all been removed.
DevtoolsLog
and Trace
artifactsFor custom audits, the devtoolsLogs['defaultPass']
and traces['defaultPass']
artifacts have been deprecated in favor of DevtoolsLog
and Trace
. See our plugin docs for example usage.
devtoolsLogs
and traces
still exist for compatibility purposes but will be removed in a future breaking release.
resource-summary
audit (#15299)DevtoolsLogError
and TraceError
artifacts (#15311)service-worker
audit (#15257)first-contentful-paint-3g
audit (#15252)Scripts
as a dependency (#15293)lighthouse-logger
to 2.0.1 (#15282)chrome-launcher
to 1.0.0 (#15287)devtoolsLogs
and traces
(#15318)fraggle-rock
fixtures directory to user-flows
(#15291)Published by adamraine over 1 year ago
We expect this release to ship in the DevTools of Chrome 117, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
Published by adamraine over 1 year ago
We expect this release to ship in the DevTools of Chrome 116, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
federatedAuthUserInfoRequestIssue
(#15149)stylesheetLoadingIssue
(#15144)puppeteer
and puppeteer-core
(#15143)afterPass
(#15057)lighthouse-logger
to v1.4.0 (#15081)Published by adamraine over 1 year ago
We expect this release to ship in the DevTools of Chrome 115, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
getArtifact
(#15024)Published by adamraine over 1 year ago
We expect this release to ship in the DevTools of Chrome 114, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
had_recent_input
by timing window (#14402)--channel
flag (#14924)http-link-header
and node polyfills (#14889)Published by brendankenny over 1 year ago
We expect this release to ship in the DevTools of Chrome 113.
FrameCommittedInBrowser
with processPseudoId
(#14800)redirects
: use requestId
instead of URL to find requests (#14838)artifacts
are defined (#14818)bf-cache
: count failures based on affected frames (#14823)legacy-javascript
: update polyfill size graph (#14828)prioritize-lcp-image
: use request initiators for load path (#14807)prioritize-lcp-image
: better identify lcp request (#14804)moduleResolution: "node"
(#14815)channel
naming conventions (#14799)metrics-tricky-tti
on ToT (#14790)primaryPageTarget
function (#14839)undefined
(#14817)Published by adamraine over 1 year ago
We expect this release to ship in the DevTools of Chrome 112, and to PageSpeed Insights within 2 weeks.
Published by connorjclark over 1 year ago
Full Changelog
Release article
We expect this release to ship in the DevTools of Chrome 112, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributors 👽🐷🐰🐯🐻!
In the 8.0 release, we described TTI's waning role, and today we have the followup. Time to Interactive (TTI) no longer contributes to the performance score and is not displayed in the report. However, it is still accessible in the Lighthouse result JSON.
Without TTI, the weighting of Cumulative Layout Shift (CLS) has increased from 15% to 25%. See the docs for a complete breakdown of how the Performance score is calculated in 10.0, or play with the scoring calculator.
Lighthouse now includes type declarations! Our example TypeScript recipe demonstrates how to achieve proper type safety with Lighthouse.
Since Lighthouse 5.3, the community-driven third-party-web
dataset has been used to summarize how every third-party found on a page contributes to the total JavaScript blocking time, via the third-party-summary
audit. With Lighthouse 10.0, we are adding a new property to the JSON result (entities
) to make further use of this dataset. Every origin encountered on a page is now classified as first-party or third-party within entities
. In 10.0, this classification is used to power the existing third-party filter checkbox.
In a future version of Lighthouse, this will be used to group the table items of every audit based on the entity it originated from, and aggregate the impact of items from that specific entity.
The Back/forward cache (bfcache for short) is a browser optimization that serves pages from fully serialized snapshots when navigating back or forwards in session history. There are over 100 different reasons why a page may not be eligible for this optimization, so to assist developers Lighthouse now attempts to trigger a bfcache response and will list anything that prevented the browser from using the bfcache. #14465
For more on bfcache, see the web.dev article.
Note: This audit initially will not be available for PageSpeed Insights.
The audit password-inputs-can-be-pasted-into
is now paste-preventing-inputs
. This audit's logic works just as before, but rather than just considering [type=password]
inputs, it now fails if any non-readonly input element prevents the user from pasting. #14313
Our documentation is no longer hosted on web.dev. For the most up to date audit docs, please go to developer.chrome.com/docs/lighthouse/
Under the hood, Lighthouse now uses the new user-flow supporting infrastructure by default, even for traditional navigation runs. You can opt out of this by: in the CLI, use --legacy-navigation
; in DevTools: check “Legacy Navigation” in the settings menu. If you have a use case that necessitates this escape hatch, please file an issue. We plan to remove this legacy path in 11.0.
Until now, there were two URL fields to describe a Lighthouse run:
requestedUrl
: the url given by the users, which Lighthouse instructs Chrome to navigate tofinalUrl
: the url after any server-initiated HTTP and JS-initiated redirectsThis taxonomy cannot account for more complex scenarios, such as JS-initiated redirects, usage of the History API or soft-navigations. They were also ill-defined for timespan and snapshot modes. To account for that, Lighthouse 10.0 now has these URL fields:
requestedUrl
: The URL that Lighthouse initially navigated to before redirects. This is the same as it was before for navigation mode, but now it will be undefined
in timespan/snapshot.mainDocumentUrl
: The URL of the last document requested during a navigation. It does not account for soft navigations or history API events made after the page loads. It is only available in navigation mode, and will be undefined in timespan and snapshot modes.finalDisplayedUrl
: The URL displayed in the browser combobox at the end of a Lighthouse run. It accounts for soft navigations and history API events. Available in navigation, timespan, and snapshot modes.finalUrl
: Same value as mainDocumentUrl
.password-inputs-can-be-pasted-into
-> paste-preventing-inputs
preload-lcp-image
-> prioritize-lcp-image
third-party-summary
no longer uses a link
value for item.entity
, instead uses a raw text
valuefull-page-screenshot
is no longer an audit, instead it is stored at lhr.fullPageScreenshot
. To suppress collection of the full-page screenshot in the CLI, you must migrate from --skip-audits full-page-screenshot
to --disable-full-page-screenshot
.lighthouse-core/
and lighthouse-cli/
folders are now simply core/
and cli/
await import('lighthouse')
. For access to just the lighthouse
function in CommonJS, you can also use require('lighthouse/core/index.cjs')
LHError
is now LighthouseError
. If you are attempting to catch an error thrown by Lighthouse, be sure to account for this!The lighthouse
function now has better integration with Puppeteer. Use lighthouse(url, flags, config, page)
to run Lighthouse, passing an existing Puppeteer.Page
handle as page
.
The user flow api has moved to the top level node entrypoint and can be imported with import {startFlow} from 'lighthouse'
.
New flow.startNavigation()
and flow.endNavigation()
functions let you define a user triggered navigation without any callback function. See the user flow docs for an example.
To change settings for a single user flow step, define the settings overrides on the toplevel flags options flow.snapshot({skipAduits: ['uses-http2']})
instead of on the settingsOverride
property.
To give a flow step a custom name, use flow.snapshot({name: 'Custom name'})
. Previously this was done via stepName
.
passes
to load the page multiple times in navigation mode anymore. If you need to load the page multiple times, we recommend using a user flow. See our config docs for instructions on how to convert to the new config format
ScriptElements
artifact is now Scripts
, with a slightly different shape
Audit.makeOpportunityDetails
and Audit.makeTableDetails
now accept an options object as the third parameter. This ends up being a breaking change for just Audit.makeOpportunityDetails
.performance.now
in isolation (#14685)usePassiveGathering
flag (#14610)BFCacheFailures
artifact (#14485)index.js
(#14543)externs.d.ts
(#14537)api.js
into index.js
, new report generator api (#14531)bypass
, th-has-data-cells
, and video-caption
informative (#14453)fraggle-rock
directory (#14377)requestedUrl
with unexpected value (#14010)requestedUrl
optional (#13816)mainDocumentUrl
instead of finalUrl
(#13793)context.url
(#13806)MainResource
for main document (#13756)i18n.createMessageInstanceIdFn
(#14251)supportedModes
in category (#13921)Config.Json
to Config
(#14673)config
to name every config json (#14649)puppeteer
and puppeteer-core
(#14435)*String
exports (#14374)Page.getResourceTree
with Page.getFrameTree
(#14663)resolvedConfig
to name every resolved config (#14600)configContext
with flags
(#14050)lcp-lazy-loaded
with LCP audits (#14724)focus-visible
for the three-dot menu (#14497)perf-diagnostics-third-party
for FR (#14092)webkitStorageInfo
deprecation in m110 (#14541)oopif-scripts
in FR (#14150)oopif-requests
(#14148)lantern-idle-callback-short
(#14670)createCommonjsRefs
(#14004)Published by adamraine almost 2 years ago
We expect this release to ship in the DevTools of Chrome 109, and to PageSpeed Insights within 2 weeks.
Published by brendankenny about 2 years ago
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.
Published by adamraine about 2 years ago
We expect this release to ship in the DevTools of Chrome 107, and to PageSpeed Insights within 2 weeks.
Thanks to our new contributor 👽🐷🐰🐯🐻!