← Notes

Performance is design

22 September 20261 min readCraft · CraftDraft

The first thing a person feels about an interface is whether it answered. Before type, before colour, before the clever interaction: did it move when I did.

I hold two rules. A high-frequency interaction gets instant feedback or a transition no longer than 150ms on opacity or colour. Anything slower there charges its cost on every trigger, and a person triggers it hundreds of times a day.

The second is zero idle cost. An always-mounted expressive component – a beam, an orb, a liquid group, a stage of cards – must cost nothing when nothing moves. The animation loop sleeps; instances pause offscreen and when the tab is hidden. On this site the collection's loop idles the moment it settles; a suite checks that no layout write happens for a second afterwards.

  • Measure the frame budget, not the impression: a DevTools performance trace on the real device, then decide
  • Transitions over keyframes for anything interactive; keyframes only for one-shot staged sequences
  • Never blur functional content to make it feel richer; blur is the most expensive effect you can spend

When not to: a page a person sees once, where the load itself is the moment. Spend there, and only there.

The whole story / 0 chapters

Performance is design

Choose a chapter. Your reading position stays here until you do.