Why frame budgets deserve the same weight as visual design constraints, and the practical habits that keep an interface feeling instant.
Performance is usually framed as an engineering concern — something you audit after the design is done. That framing is backwards. The way a site moves is the design. A beautiful layout that stutters reads as broken; a simple one that responds instantly reads as premium.
Every animation on this site had to answer one question before it shipped: can this run inside 8 milliseconds on a mid-range phone? If the answer was no, the animation changed — not the budget.
Compositor-only motion
The single highest-leverage habit is refusing to animate anything except transform and opacity. Layout-triggering properties — width, top, margin — force the browser back through style, layout and paint on every frame. Transforms go straight to the compositor.
GSAP makes this easy to get right, but it also makes it easy to get wrong. The library will happily tween any property you give it. The discipline has to come from you.
Measure on hardware you don't own
Your development machine is a lie. Chrome's CPU throttling is a decent approximation, but nothing replaces opening the site on a three-year-old Android phone. That is where scroll jank lives.
A reliable rule of thumb: if it holds up on a throttled 4× CPU with a cold cache, it will feel fine everywhere else. Design for the floor, and the ceiling takes care of itself.