Using Motion Without Making a Portfolio Feel Unprofessional
Motion should support meaning, not perform tricks. Where to add it, where to hold back, and how to keep a site feeling composed.
Animation is the fastest way to make a portfolio feel premium — and the fastest way to make it feel like a toy. The difference is almost always restraint and intent.
Motion should explain, not decorate
Good motion answers a question the user already has: where did this come from, what changed, what's related to what. If an animation doesn't clarify a relationship, it's probably noise.
A few rules I keep coming back to
- Keep durations short — 200 to 500ms covers most UI transitions.
- Ease out, not linear. Things should arrive gently.
- Animate transforms and opacity, not layout, for smooth frames.
- One hero moment per screen. Everything else should be quiet.
Always honor reduced motion
A meaningful share of users have prefers-reduced-motion set. Treat it as a hard requirement, not a nice-to-have — disable non-essential movement and let the content stand on its own.
@media (prefers-reduced-motion: reduce) {
* { animation: none !important; transition: none !important; }
}The most professional motion is the kind people feel but never notice.
Have a product or frontend challenge worth discussing?
I'm always happy to talk through interface, motion, or engineering problems.
Start a conversationKeep reading
All articlesDesigning Clear Filters for Data-Heavy Products
Filtering is where data products live or die. A look at patterns that keep dense interfaces calm, scannable, and fast to operate.
· 9 min readBuilding Accessible React Forms with React Hook Form and Zod
A practical guide to forms that are validated, keyboard-friendly, and genuinely accessible — without fighting the framework.
· 10 min read