- Cap pending LoAFs to avoid memory leak (#796)
- Fix negative inputDelay in INP attribution (#789)
- Prevent spurious CLS report of 0 after bfcache restore (#786)
- Guard
supportedEntryTypesfor older browsers (#787)
- Scope the navigation interaction count to each InteractionManager (#783)
- Add Resource Timing buffer for LCP attribution (#776)
- Prevent JavaScript error if
PerformanceObservernot available (#772)
v6 introduces Soft Navigation support for the Web Vitals metrics when supported by the browser.
Note
See the upgrading to v6 guide for a complete list of all API changes in version 6.
- [BREAKING] Remove unneeded modules with tsconfig
verbatimModuleSyntax(#741) - Add source maps (#771)
- Cap RequestIdleCallback to 1 second to ensure metrics report even when busy (#755)
- Flip default for
includeProcessedEventEntriesto false for v6 (#763) - Add Soft Navigation support (#308)
- Add bfcache support for reporting small INP interactions (part of #308)
- Remove
getFirstHiddenTimePolyfill(#729) - Fixed issue where the same configuration object to multiple metric functions can result in errors (#731)
- Add more robust
interactionTargetsetting for INP (#744)
- Replace
filter()[0]withfind()for better performance (#658) - Use
queueMicrotaskfor microtask scheduling (#660) - Simplify the event and LoAF entry clean up logic (#662)
- Remove obsolete FID polyfill types (#675)
- Use
LargestContentfulPaint.idas fallback when element is removed from DOM (#676) - Fix bug for
onLCPwhen attached late (#697) - FHandle initially hidden pages and onLCP registered on visibility change (#698)
- Ensure we clear idle callbacks in
whenIdleOrHidden(#707) - Limit pending events to conserve memory (#710)
- Add
includeProcessedEventEntriesoption (#714) - Reduce bundle size by refactoring (#713)
- Register
visibility-changeearly (#637) - Only finalize LCP on user events (
isTrusted=true) (#635) - Fallback to default
getSelectorif custom function is null or undefined (#634)
- Remove visibilitychange event listeners when no longer required (#627)
- Handle layout shifts with no sources (#623)
- Fix missing FCP and LCP for prerendered pages (#621)
Note
See the upgrading to v5 guide for a complete list of all API changes in version 5.
- [BREAKING] Remove the deprecated
onFID()function (#519) - [BREAKING] Change browser support policy to Baseline Widely available (#525)
- [BREAKING] Sort the classes that appear in attribution selectors to reduce cardinality (#518)
- Extend INP attribution with extra LoAF information: longest script and buckets (#592)
- Add support for generating custom targets in the attribution build (#585)
- Support multiple calls to
onINP()with different config options (#583) - Use visibility-state performance entries (#612)
- Ensure idle callbacks don't run twice (#541) and (#548)
- Cap
nextPaintTimeatprocessingStart(#540) and (#546) - Cap INP breakdowns to INP duration (#528)
- Cap LCP load duration to LCP time (#527)
- Fix memory leak in registering new event listeners on every keydown and click (#554)
- Fix missing LoAF entries in INP attribution (#512)
- Fix interaction count after bfcache restore (#505)
- Fix compatibility issues with TypeScript v5.5 (#497)
- Refactor INP attribution code to fix errors on Windows 10 (#495)
- Fix pending LoAF cleanup logic (#493)
- Move the support check to the top of the onINP() function (#490)
- Fix missing LoAF attribution when entries are dispatched before event entries (#487)
- Add the
ReportCallbacktype back but deprecate it (#483)
Note
See the upgrading to v4 guide for a complete list of all API changes in version 4.
- [BREAKING] Update types to support more generic usage (#471)
- [BREAKING] Split
waitingDurationto make it easier to understand redirect delays (#458) - [BREAKING] Rename
TTFBAttributionfields from*Timeto*Duration(#453) - [BREAKING] Rename
resourceLoadTimetoresourceLoadDurationin LCP attribution (#450) - [BREAKING] Add INP breakdown timings and LoAF attribution (#442)
- [BREAKING] Deprecate
onFID()and remove previously deprecated APIs (#435) - Expose the target element in INP attribution (#479)
- Save INP target after interactions to reduce null values when removed from the DOM (#477)
- Cap TTFB in attribution (#440)
- Fix
reportAllChangesbehavior for LCP when library is loaded late (#468)
- Pick the first non-null
targetfor INP attribution (#421)
- Add extra guard for
PerformanceEventTimingnot existing (#403)
- Run
onLCPcallback in separate task (#386) - Fix INP durationThreshold bug when set to 0 (#372)
- Prevent FID entries being emitted as INP for non-supporting browsers (#368)
- Make
bindReportergeneric over metric type (#359) - Update INP status in README (#362)
- Fix Metric types for better TypeScript support (#356)
- Fix selector for SVGs for attribution build (#354)
- Export metric rating thresholds in attribution build as well.
- Export metric rating thresholds, add explicit
MetricRatingThresholdstype (#323) - Trim classname selector (#328)
- Add link to CrUX versus RUM blog post (#327)
- Prevent LCP being reported for hidden prerendered pages (#326)
- Add Server Timing information to docs (#324)
- Fix link in
onINP()thresholds comment (#318) - Update web.dev link for
onINP()(#307) - Add a note about when to load the library (#305)
- Version number skipped
- Defer CLS logic until after
onFCP()callback (#297)
- Add support for
'restore'as anavigationType(#284) - Report initial CLS value when
reportAllChangesis true (#283) - Defer all observers until after activation (#282)
- Ignore TTFB for loads where responseStart is zero (#281)
- Defer execution of observer callbacks (#278)
- Clamp LCP and FCP to 0 for prerendered pages (#270)
- Ensure
attributionobject is always present in attribution build (#265)
- Set an explicit unpkg dist file (#261)
- Use the cjs extension for all UMD builds (#257)
- [BREAKING] Add a config object param to all metric functions (#225)
- [BREAKING] Report TTFB after a bfcache restore (#220)
- [BREAKING] Only include last LCP entry in metric entries (#218)
- Update the metric ID prefix for v3 (#251)
- Move the Navigation Timing API polyfill to the base+polyfill build (#248)
- Add a metric rating property (#246)
- Add deprecation notices for base+polyfill builds (#242)
- Add a new attribution build for debugging issues in the field (#237, #244)
- Add support for prerendered pages (#233)
- Rename the
ReportHandlertype toReportCallback, with alias for back-compat (#225, #227) - Add support for the new INP metric (#221, #232)
- Rename
getXXX()functions toonXXX()(#222) - Add a
navigationTypeproperty to the Metric object (#219)
- Prevent TTFB from reporting after bfcache restore (#201)
- Only call report if LCP occurs before first hidden (#197)
- Ensure reported TTFB values are less than the current page time (#187)
- Add feature detects to support Opera mini in extreme data saver mode (#186)
- Add batch reporting support and guidance (#166)
- Detect getEntriesByName support before calling (#158)
- [BREAKING] Update CLS to max session window 5s cap 1s gap (#148)
- Ensure CLS is only reported if page was visible (#149)
- Only report CLS when FCP is reported (#154)
- Update the unique ID version prefix (#157)
- Ignore negative TTFB values in Firefox (#147)
- Add workaround for Safari FCP bug (#145)
- Add more extensive FID feature detect (#143)
- Remove use of legacy API to detect Firefox (#128)
- Fix incorrect UMD config for base+polyfill script (#117)
- Fix missing getter in polyfill (#114)
- Add support for Set in place of WeakSet for IE11 compat (#110)
- Fix missing
typingsdeclaration (#90)
- [BREAKING] Add support for reporting metrics on back/forward cache restore (#87)
- [BREAKING] Remove the
isFinalflag from the Metric interface (#86) - Remove the scroll listener to stop LCP observing (#85)
- Remove the unload listener (#68)
- Ensure reports only occur if a PO was created (#58)
- Remove package
typefield (#35)
- Initial public release
- Initial pre-release