rsnext/packages/next/next-server/lib/fid-measure.js
Houssein Djirdeh 04ceba4309
Adds first input delay performance metric (#8884)
* measures fid

* updates typings, fixes logic, updates per review comments

* update to es5

* separate clearMeasures

* use relayer

* creates fid polyfll render helper + simplifies measure

* switch to dynamic import

* creates fid experimental flag

* removes unecessary time-to-first-input metric

* removes hydration measure removes

* default flag to false

Co-authored-by: Joe Haddad <joe.haddad@zeit.co>
2020-04-13 14:46:46 -04:00

29 lines
752 B
JavaScript

/* global hydrationMetrics */
export default onPerfEntry => {
hydrationMetrics.onInputDelay((delay, event) => {
const hydrationMeasures = performance.getEntriesByName(
'Next.js-hydration',
'measure'
)
if (hydrationMeasures.length > 0) {
const { startTime, duration } = hydrationMeasures[0]
const hydrateEnd = startTime + duration
if (event.timeStamp > hydrateEnd) {
onPerfEntry({
name: 'first-input-delay-after-hydration',
startTime: event.timeStamp,
duration: delay,
})
} else {
onPerfEntry({
name: 'first-input-delay-before-hydration',
startTime: event.timeStamp,
duration: delay,
})
}
}
})
}