30 lines
752 B
JavaScript
30 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,
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|