Scroll position is read once per scroll event, never inside the frame loop.
WhyReading scrollHeight during render forces the browser to recompute layout on every single frame. Cached at module level, the frame loop only reads a number.
CostThe cached value is one event stale, which is invisible at this scale but would matter for anything requiring exact scroll sync.
Every interpolation is damped against delta time, not a fixed step.
WhyA fixed easing factor makes the camera move more than twice as fast on a 144Hz display as on a 60Hz one. Damping against delta makes the motion identical on both.
CostSlightly more arithmetic per frame, and easing constants stop being intuitive.
Device pixel ratio capped at 1.25, and at 1.0 for coarse pointers.
WhyAn uncapped canvas on a 3x phone screen renders nine times the pixels for no perceptible gain, and fill rate is the first thing to break on mobile.
CostSlightly softer edges on high-density displays. Accepted, since antialiasing is off anyway.
Adaptive performance drops resolution rather than frame rate.
WhyA scene at 60fps and reduced resolution reads as smooth. The same scene at full resolution and 24fps reads as broken. Given the choice, sharpness is the thing to give up.
CostVisible resolution shifts on a struggling device.
Removed it from the homepage entirely.
WhyIt cost 903 KB of JavaScript and pushed largest contentful paint from 0.66s to 2.5s, to render decoration behind the text that actually makes the case. It was not evidence for anything the site claims.
CostThe homepage lost its most distinctive visual. That is a real loss, and the measurement still says it was the right trade.