Option A
React (vanilla)
JavaScript library for building user interfaces
Option B
Next.js
React framework with routing, rendering, and tooling built in
Background
React is the underlying library — it manages UI state and rendering. Next.js is a framework on top of React that adds routing, server rendering, image optimization, API routes, and many other production necessities. Choosing 'React' alone in 2025 means rebuilding what Next.js gives you for free.
Side-by-side comparison
| Criterion | React (vanilla) | Next.js | Winner |
|---|---|---|---|
| Built-in routing | No — pick React Router or roll your own | Yes — file-based, App Router or Pages Router | Next.js |
| Server-side rendering / static generation | Manual — needs custom setup | First-class | Next.js |
| SEO friendliness | Poor by default (CSR only) | Strong — SSR, SSG, metadata API | Next.js |
| Image optimization | Manual or via libraries | Built-in next/image with lazy loading and modern formats | Next.js |
| Performance out of the box | Variable | Strong defaults — Core Web Vitals friendly | Next.js |
| API routes / backend | Need a separate backend | Built-in API routes / Route Handlers | Next.js |
| Learning curve for React devs | Lower for the library itself | Modest extra surface area to learn (routing, rendering modes) | React (vanilla) |
| Hosting flexibility | Anywhere | Anywhere; best on Vercel/Netlify/Cloudflare | Tie |
Which one for which scenario
New marketing website needing SEO
Next.jsNext.js handles SSR, metadata, and Core Web Vitals out of the box.
Embedded widget on a non-React site
React (vanilla)React without Next.js is the right tool for a small embedded UI.
Internal admin tool or dashboard
EitherEither works — Next.js adds structure but vanilla React + Vite is fast for internal apps.
Single-page web app with no SEO needs
React (vanilla)Vite + React is excellent for SPA app shells.
E-commerce, SaaS, or content-heavy app
Next.jsNext.js handles SSR, routing, image optimization, and APIs in one framework.
Final verdict
Default to Next.js for any new website or web app. Choose vanilla React only when SEO doesn't matter and you specifically need the lightest possible surface (embedded widgets, internal tools, SPA app shells).
Frequently asked questions
What about Astro, Remix, or SvelteKit?
All viable. Astro shines for content-heavy sites with islands of interactivity. Remix is now part of React Router. SvelteKit is excellent if you want to leave React entirely. Next.js remains the default React framework with the largest ecosystem.
Do we need Vercel to use Next.js?
No — Next.js runs on any Node host, on Cloudflare Workers, on AWS, or as a self-hosted container. Vercel is the smoothest option but not required.
Is Next.js overkill for a 5-page website?
Not at all — for anything that needs SEO and Core Web Vitals, the framework's defaults pay back the small extra setup quickly.
Can we mix React and Next.js?
All Next.js apps are React apps. The framework doesn't lock you out of any React capability — it just adds structure.
What about TanStack Start or React Server Components?
TanStack Start is promising. RSC is a Next.js capability now widely adopted. Both extend the model rather than replacing it.