The Short Answer
Use Next.js for anything that will be publicly indexed, needs fast initial load, or will run in production. Use plain React (via Vite) for internal tools, dashboards, or prototypes where SEO doesn't matter.
That's it. The rest of this post is the reasoning.
What Next.js Adds on Top of React
Next.js is a React framework — all Next.js apps are React apps, but not all React apps use Next.js.
The key additions: server-side rendering out of the box, static generation, file-based routing, API routes, an Image optimisation component, and SEO-friendly defaults that you'd otherwise piece together by hand.
Next.js App Router (Next.js 13+)
The App Router, stable since Next.js 13 and the default in Next.js 15, uses React Server Components. Pages render on the server by default — only components explicitly marked with "use client" run in the browser.
This gives faster time-to-interactive (less JavaScript sent to the browser), better SEO (content rendered in HTML, not JavaScript), and simpler data fetching with async/await directly in components.
When to Choose Next.js
- Marketing sites, landing pages, and blogs where SEO is critical
- E-commerce where product pages need to be indexed
- SaaS applications needing both public pages and authenticated dashboards
- Any app where you care about Core Web Vitals and page speed scores
When Plain React Is Fine
- Internal admin dashboards with no public SEO requirements
- Single-page tools accessed only by authenticated users
- Rapid prototypes where Next.js conventions get in the way more than they help
One Honest Note
Next.js isn't free. The App Router has a real learning curve — Server vs Client Components catches every team out the first time. If you don't actually need SSR or SEO, you're paying that complexity tax for nothing. We've seen teams choose Next.js for an internal dashboard "just in case" and spend weeks fighting the framework instead of shipping. Pick the simpler tool when you can.
The Bottom Line
In 2025, Next.js is the default for production React web development. The App Router makes SSR and SSG straightforward without manual setup complexity. The only reason to skip it is if your app genuinely has no public pages — in which case skip it.
Talk to us if you want a second opinion on which fits your project — we'll tell you honestly when plain React is the better call.