Next.js 15 vs React: Which Framework to Choose in 2025?
Complete comparison of Next.js 15 and React for your web project: performance, SEO, development, costs. Decision guide for CTOs and developers.
Next.js 15 vs React: Which Framework to Choose in 2025?
Next.js 15 has just been released and revolutionizes web development. But do you necessarily need to migrate from pure React? Here's my analysis after 50+ production projects.
TL;DR: When to Use What?
Use Next.js if:
- ✅ SEO crucial (showcase site, e-commerce, blog)
- ✅ Performance critical (LCP <2.5s)
- ✅ Full-stack (API + Frontend)
Use pure React if:
- ✅ Internal SPA (backoffice, admin)
- ✅ No SEO (app behind login)
- ✅ Frontend only (separate API)
Next.js 15: 2025 New Features
1. Stable Turbopack
Before (Webpack): 10-30s build Now (Turbopack): 2-5s build
Impact: +70% developer productivity
2. Improved Server Actions
// No more API routes needed!
'use server'
export async function submitForm(formData: FormData) {
const email = formData.get('email')
await db.insert({ email })
revalidatePath('/newsletter')
}
Before: API route + client-side fetch Now: Direct server action
3. Partial Prerendering (Experimental)
Mix: Static generation + Streaming Result: Ultra-fast FCP + dynamic data
4. React 19 Support
- Stable Server Components
- Native Actions
- use() hook for fetching
Detailed Comparison
Performance
| Metric | Next.js 15 | React (CRA) | Vite + React |
|---|---|---|---|
| First Paint | <1s | 2-3s | 1-2s |
| Time to Interactive | 1-2s | 3-5s | 2-3s |
| Lighthouse | 95-100 | 70-85 | 85-95 |
| Bundle size | Auto-optimized | Manual | Optimized |
Winner: Next.js (except for pure SPA)
SEO
| Feature | Next.js 15 | React SPA |
|---|---|---|
| SSR/SSG | ✅ Native | ❌ Requires external lib |
| Dynamic meta tags | ✅ Simple | ⚠️ Complex |
| Auto sitemap | ✅ Built-in | ❌ Manual |
| OG images | ✅ Auto-generated | ❌ Manual |
Winner: Next.js (overwhelming if SEO important)
Developer Experience
| Aspect | Next.js 15 | Vite + React |
|---|---|---|
| Setup | npx create-next-app | npm create vite |
| Routing | File-based | React Router |
| API | Integrated | Separate backend |
| Deploy | Vercel 1-click | Manual config |
| Hot reload | Turbopack (fast) | Vite (very fast) |
Winner: Tie (personal preference)
Hosting Costs
Next.js (Vercel):
- Hobby: Free (100GB/month)
- Pro: $20/month (1TB)
- Auto-scaling serverless
React SPA (Netlify/Vercel):
- Hosting: Unlimited free
- Separate API: $5-50/month
Winner: React SPA (if tight budget)
Detailed Use Cases
1. E-commerce / Marketplace
Recommendation: Next.js 15 🏆
Reasons:
- Product SEO crucial
- ISR (Incremental Static Regeneration)
- Server Components for catalog
- Secure server-side payment
Typical Stack:
Next.js 15 + Stripe + Prisma + PostgreSQL
Examples: Amazon, Airbnb, Nike use Next.js
2. SaaS / Web App
Recommendation: Next.js 15 or React + Vite ⚖️
Next.js if:
- Marketing pages SEO
- Dashboard + integrated API
- Server Actions convenient
React + Vite if:
- 100% behind login
- Existing API (Go, Python)
- Team prefers frontend/backend separation
Next.js Stack:
Next.js 15 + tRPC + Prisma + Supabase
React Stack:
Vite + React + TanStack Query + External API
3. Blog / Showcase Site
Recommendation: Next.js 15 🏆
Reasons:
- SEO = priority #1
- SSG for max performance
- No need for complex backend
Alternative: Astro (even faster if no interactivity)
Stack:
Next.js 15 + MDX + Tailwind
4. Admin / Backoffice
Recommendation: React + Vite 🏆
Reasons:
- No SEO (private app)
- Pure SPA simpler
- Flexible React Router
- Lighter build
Stack:
Vite + React + React Router + TanStack Query
5. Progressive Web App (PWA)
Recommendation: React + Vite 🏆
Reasons:
- Offline-first difficult with Next.js
- Better service worker support
- Smaller bundle
Stack:
Vite + React + Workbox + Capacitor
Migration React → Next.js: Guide
Step 1: Assessment (1-2 days)
Questions:
- How many routes? (<10 = easy, 50+ = complex)
- External API or create?
- State management (Redux/Zustand) = migration
Estimated Effort:
- Small project (<10 routes): 3-5 days
- Medium (10-50 routes): 2-4 weeks
- Large (50+ routes): 1-3 months
Step 2: Next.js Setup (1 day)
npx create-next-app@latest --typescript
Config:
- App Router (recommended)
- Tailwind CSS
- ESLint
Step 3: Progressive Migration
Approach: Page by page
Week 1: Landing + 3 static pages
Week 2: Authentication + dashboard
Week 3: Dynamic features
Week 4: Tests + deployment
Step 4: State Management Migration
Redux Toolkit → Zustand or React Context
Next.js Server Components = less need for global state
Step 5: Optimization
- Image optimization (
next/image) - Font optimization (
next/font) - SEO metadata
- Server Components where possible
Real Costs: TCO over 1 Year
React SPA (Vite)
Development:
- Initial setup: 2 days (€1.5K)
- Features: same as Next.js
Hosting:
- Frontend (Netlify): Free
- API (Railway/Render): $5-20/month
- DB (Supabase): $25/month Total hosting: $30-45/month = €360-540/year
Maintenance:
- Updates: 1d/quarter (€0.7K/year)
TCO 1 year: ~€3K
Next.js 15 (Vercel)
Development:
- Initial setup: 1 day (€0.8K)
- Features: same as React
Hosting:
- Vercel Pro: $20/month
- DB (Vercel Postgres): $20/month Total hosting: $40/month = €480/year
Maintenance:
- Updates: 0.5d/quarter (€0.5K/year)
TCO 1 year: ~€2.5K
Winner: Next.js (slightly cheaper + better SEO)
Common Mistakes to Avoid
❌ Using Next.js for Everything
Mistake: "Next.js is modern so we take Next.js" Consequence: Unnecessary complexity for internal SPA Solution: Pure React if no SEO
❌ Misusing Server Components
Mistake: Everything in Client Components ("use client") Consequence: Lose Next.js advantages Solution: Server Components by default, Client only for hooks/events
❌ Ignoring Vite for React
Mistake: Using Create React App (obsolete) Consequence: Slow build, bad DX Solution: Vite if pure React
❌ Premature Over-optimization
Mistake: Spend 2 weeks on Webpack config Consequence: Delayed time to market Solution: Next.js defaults = sufficient 95% cases
My Opinion After 10 Years React
I Use Next.js When:
- End client (SEO vital)
- Need simple integrated API
- Vercel deployment
- Junior team (Next.js conventions = guide)
I Use React + Vite When:
- SaaS behind login
- Existing backend API (Go, Rust, Python)
- Offline-first PWA
- Senior team (prefers freedom)
The Real Question:
Not "Next.js vs React" but "SSR/SSG or SPA?"
- If SEO → Next.js
- If no SEO → Pure React
Conclusion
In 2025: Next.js 15 is the default choice for new web projects with SEO.
Pure React remains relevant for:
- Internal apps (no SEO)
- Offline PWAs
- Non-Node.js backends
My favorite stack: Next.js 15 + TypeScript + Tailwind + Prisma + Vercel
Need help choosing? I can audit your project and recommend the optimal stack.
About: Jérémy Marquer has been developing with React since 2016, Next.js since 2019. 30+ Next.js projects in production.
Related articles
Choosing Your Startup Tech Stack 2025: Decision Guide (Next.js, React, Python)
Complete framework to choose startup tech stack: Next.js vs React, Node vs Python, PostgreSQL vs MongoDB. Criteria, benchmarks, costs, mistakes to avoid.
Scale a Tech Startup: From 10 to 100 Users Without Exploding
Practical guide to scale infrastructure, team and processes from 10 to 100 users. Architecture, monitoring, technical debt, budget. Avoid the pitfalls.
MVP in 15 Days: The Complete Guide for Fast-Moving Startups
Learn how to launch your MVP in 15 days with a proven methodology. Modern stack, agile development, and rapid production deployment.
