Why I Switched Every Project to Next.js
After years of building SPAs with Create React App and later Vite, I finally made the full switch to Next.js for every project. Here's an honest breakdown.
The Breaking Point
It started when a client complained about SEO. We had a beautiful React app — fast, smooth, well-structured. But Google couldn't crawl it properly. The time-to-first-contentful-paint was embarrassing.
What Changed
Server-side rendering was the obvious win. Pages load with content already in the HTML. No white flash, no spinner, no waiting for JavaScript to hydrate before seeing anything.
The App Router changed how I think about layouts. Nested layouts, loading states, error boundaries — all declarative. I stopped writing the same wrapper components over and over.
Image optimization out of the box. The next/image component alone saved hours of configuration on every project.
What I Still Miss
Vite's development speed is genuinely faster. The HMR in Next.js has improved massively, but for pure frontend work, Vite is still snappier.
The opinionated file-based routing is amazing until you need something it doesn't support natively. Then you're reading GitHub issues at 2am.
The Verdict
For anything with SEO requirements, a mix of static and dynamic content, or a team larger than one — Next.js wins every time. For small internal tools or purely client-side apps, I still reach for Vite.
The mental model shift from "SPA" to "hybrid rendering" is worth the learning curve.