Skip to contact form
← BlogEngineeringMarch 29, 2026 · 5 min read

The details nobody asks for

Three small effects—a number odometer, scroll bar, and reading-line focus—explained with live demos.

ot every detail earns a whole article. Some effects are two motion values and a spring, doing one small job well, and writing a thousand words about any one of them alone would inflate something that's supposed to be quiet. So instead of three thin posts, here are three real pieces of the site's motion system in one place — each with the actual component embedded, not a description of it.

When a real figure appears on the site, it doesn't just fade into view — it counts up from zero, prefix and suffix held still while only the numeric part animates. It exists specifically so a stat never gets a chance to be skimmed past unread; the motion holds your eye on the number for the half-second it takes to land.

0MB

example — prefix/suffix held still

0%

example — decimals preserved too

<0s

example — leading symbol untouched

Those three are illustrative, not a claim about anything — the component is built to only ever animate a number that's actually been sourced from somewhere real, on the site itself. A regex pulls the numeric core out of a string like "40MB" or "<1s", a spring drives it from zero to that target the moment it scrolls into view, and everything the regex didn't capture — the unit, the symbol — just sits there unanimated the whole time.

A thin gradient line sits fixed to the top of every page, its width tracking scroll progress through the whole document. It's a small thing to notice consciously, and that's rather the point — it answers "how much is left" at a glance, in your peripheral vision, without asking you to look for a scrollbar that half of browsers hide by default now anyway.

The one below is the same bar, same spring, but pointed at a small scrollable box instead of the page — Framer Motion's useScroll takes an optional container option, and swapping the page for that one ref is the entire difference between the site-wide version and this embedded one.

Case-study decisions and this post's own section headings use the same effect: whichever row is passing through the center of your viewport sits at full brightness, while rows above and below dim and sit a few pixels off — not because they were animated once, but because their opacity and position are a continuous function of where they are relative to the middle of the screen, recalculated every frame you scroll.

None of these three would carry an entire article on their own, and none of them are trying to. Put together they're most of what makes scrolling through the site feel considered rather than assembled — small, continuous reactions to exactly where you are, instead of animations that just play once and stop.

Want this kind of thinking on your project?

This is how we work through real decisions. If you're weighing a build of your own, tell us about it — we reply within one working day.