All posts
March 10, 2026·
~2 min read
Next~.jsReactWeb Dev

Why I switched from CRA to Next.js

Create React App served me well for years. It's simple, familiar, and gets you off the ground fast. But as my projects grew, I kept running into the same walls: no SSR, slow builds, and bundle sizes that made me cringe.

The tipping point

The tipping point was SEO. A client project needed proper meta tags, Open Graph images, and fast first-paint. CRA's SPA model just doesn't cut it out of the box.

What Next.js gave me

  • File-based routing - no more giant router configs
  • Server components - ship less JavaScript by default
  • Image optimization - automatic WebP, lazy loading, blurhash placeholders
  • Edge functions - run code close to the user
  • The learning curve

    It wasn't painless. The App Router (introduced in Next 13) was a paradigm shift. Understanding when to use "use client" vs server components took time. But once it clicked, the mental model made total sense.

    Would I go back?

    Not a chance. Next.js is my default now for any serious project.