M
← Blog
Animation

Framer Motion: Animations That Actually Feel Good

5 min readFramer Motion · Animation · UX

Springs versus tweens

Springs feel alive on draggable panels and micro-interactions; tweens feel precise for choreographed page entrances. I default to springs for user-driven motion and short tweens for scroll-linked or sequenced reveals. Mixing both in one component without reason usually reads as inconsistent.

Ad Unit — Configure after AdSense approval

Layout animations

layout and layoutId in Framer Motion solve shared-element transitions when the DOM structure changes — expanding cards, reordering lists. The trick is keeping dimensions stable enough that the browser can interpolate; avoid animating layout on elements whose size depends on async content without a min-height skeleton.

Gestures

Hover and tap states should respect pointer modality. I keep press feedback subtle on desktop and slightly larger on touch. Drag gestures get clear bounds and resistance at edges so users understand limits without reading docs.

AnimatePresence and exits

Lists and modals need exit animations as much as entrances. Wrapping conditional trees in AnimatePresence with stable key values prevents flashes. I use mode="wait" when swapping mutually exclusive views so outgoing content finishes before incoming mounts.

Reduced motion

I read prefers-reduced-motion at the provider level and swap spring configs for short opacity fades or disable non-essential motion entirely. It is a requirement for professional sites, not an enhancement.

Summary

Animation should reinforce hierarchy and feedback, not decorate for its own sake. Consistent timing, respectful motion settings, and deliberate use of layout animations are what separate polish from noise in production.

Working on something similar?

I help European tech teams ship better frontends.

Let's Work Together