Development & StackJérémy Marquer

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#React#Framework#Performance#SEO

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

MetricNext.js 15React (CRA)Vite + React
First Paint<1s2-3s1-2s
Time to Interactive1-2s3-5s2-3s
Lighthouse95-10070-8585-95
Bundle sizeAuto-optimizedManualOptimized

Winner: Next.js (except for pure SPA)

SEO

FeatureNext.js 15React 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

AspectNext.js 15Vite + React
Setupnpx create-next-appnpm create vite
RoutingFile-basedReact Router
APIIntegratedSeparate backend
DeployVercel 1-clickManual config
Hot reloadTurbopack (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 ToolkitZustand 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.

Share this article