Framer Motion Made My Site Look Great — Until I Tested It on a Slow Device

When I started building my recent project, I wanted the UI to feel modern, smooth, and lively. So I went with Framer Motion , one of the most popular animation libraries for React. And honestly, at first… it felt like magic.

Everything was buttery smooth on my own laptop and phone. Sections faded in, modals popped beautifully, and page transitions just felt alive.

But then came the real test — I tried it on:

  • My friend's old Android phone

  • A slightly outdated laptop with average specs

  • I even throttled CPU in Chrome DevTools

And that’s when it hit me...


⚠️ The Performance Drop

The website started lagging. Transitions weren’t smooth anymore. Scrolling was choppy. Some elements stuttered during animations.

I realized something important:

What feels smooth on your machine might lag badly on someone else’s.


➣ What I Did Wrong

  • Too many simultaneous animations on one page

  • Animations triggered on every route change

  • Didn’t consider mobile or low-end device rendering

  • Didn’t check for prefers-reduced-motion

  • Animated elements even when they were offscreen

Here’s an example from my hero section:

<motion.div
  initial={{ opacity: 0, y: 20 }}
  animate={{ opacity: 1, y: 0 }}
  transition={{ duration: 0.8 }}
>
  <h1>Welcome to My Project</h1>
</motion.div>

→ Now imagine I had 6–7 of these all over the page. The impact added up quickly.

➣ What I Learned

  1. Animations aren’t free
    They use real CPU/GPU power — and low-end devices suffer.

  2. Subtle animations > Flashy ones
    If the animation doesn’t enhance UX, skip it.

  3. Test early on mobile and slow devices
    Don’t wait till the end to check performance.

  4. Use useReducedMotion() from Framer
    Respect users who prefer less animation.

import { useReducedMotion } from "framer-motion";

const shouldReduceMotion = useReducedMotion();

Be intentional with AnimatePresence and layout animations
Powerful tools , but can become heavy fast.

➣ How I Improved Things

  • Removed non-essential scroll animations

  • Used AnimatePresence selectively

  • Lazy-loaded large sections

  • Reduced animation duration and overlap

➣ Final Thoughts

I still love Framer Motion — it’s an amazing tool.

But this experience taught me something real:

Beautiful UI is great. But fast, responsive UI is essential.

Build for users, not just for your own screen.

0
Subscribe to my newsletter

Read articles from Aditya Srivastava directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Aditya Srivastava
Aditya Srivastava