Should it animate at all?

Never animate keyboard actions or anything used 100+ times a day.

Emil Kowalski@emilkowalski
Hover transitions seen tens, maybe even hundreds of times a day can make your interface feel slower. Make them snappy by removing the transition altogether.
Aug 25, 2025View on X ↗
Emil Kowalskiemilkowal.ski
I use Raycast hundreds of times a day. If it animated every time I opened it, it would be very annoying.
You don't need animationsRead article ↗
Emil Kowalski@emilkowalski
Scoped to one view with extra context for more accurate judgement: "Find animation opportunities in the checkout flow. It's used a few times per session by each customer, factor this in."
Jul 16, 2026View on X ↗
Emil Kowalski@emilkowalski
I should've clarified that this is more about decorative elements rather than functional ones. The graph on Linear's features page is purely decorative there, so a spring animation doesn't hurt the experience.
Apr 29, 2025 · reply to a finance user who found a sprung graph laggyView on X ↗

From emil-design-eng and You don't need animations.

A shortcut used 100×/day

Press ⌘K and type at once, or run 20 opens.

AnimatedBad
250ms + 175ms3.0 h/year0/20
InstantGood
transition: none0/20
document.addEventListener("keydown", (e) => {
  if ((e.metaKey || e.ctrlKey) && e.key === "k") {
    e.preventDefault();
    palette.hidden = !palette.hidden;
    if (!palette.hidden) input.focus();
  }
});

Hover you sweep all day

Sweep fast down both lists, or tap the rows.

Transitioned hoverBad
transition: background-color 300ms ease
Instant hoverGood
background-color: no transition
@media (hover: hover) and (pointer: fine) {
  .row:hover { background: var(--accent-soft); }
}

Data you read shouldn’t bounce

Switch quarters; the total updates before the sprung bars.

Spring on dataBad

Revenue $0k

spring({ stiffness: 180, damping: 9 })
Instant updateGood

Revenue $0k

bar.style.transform = `scaleY(${v})`

Why it matters, pros and cons

Why it matters

Motion is paid on every repeat. At 100 times a day, any motion reads as lag.

Pros

  • Frequent actions feel instant.
  • Keyboard users get results without delay.
  • Motion stays rare, so it still means something.

Cons

  • Occasional modals and toasts feel broken without motion.
  • Rare, first-time moments lose their delight.
  • Frequency is per user; admins repeat things constantly.