Performance.js
Post-Spectre, browsers deliberately coarsen performance timeline timestamps. A browser returning full-precision timing when others have coarsened it is a fingerprint signal. All numeric properties on returned entries are rounded to one decimal place via a cached Proxy.
const proxy = new Proxy(entry, {
get(target, prop) {
const value = Reflect.get(target, prop, target)
if (typeof value === 'number' && prop !== 'entryType') {
return Math.round(value * 10) / 10
}
return typeof value === 'function' ? value.bind(target) : value
},
})
Performance.js
Post-Spectre, browsers deliberately coarsen performance timeline timestamps. A browser returning full-precision timing when others have coarsened it is a fingerprint signal. All numeric properties on returned entries are rounded to one decimal place via a cached Proxy.