React and Next.js aren't alternatives — Next.js builds on top of React. The real question is whether you need the infrastructure layer Next.js provides: server-side rendering, the App Router, API routes, image optimization, and the deployment primitives that Vercel offers.
Use plain React (Create React App, Vite) when you're building a SPA with no SEO requirements, your data is entirely client-side or comes from APIs you control, and you want zero framework opinions about routing or data fetching. Internal dashboards, desktop-electron wrappers, and tooling UIs are good fits.
Use Next.js when SEO matters, you want server components to reduce client bundle size, you need ISR or SSG for content-heavy pages, or you're deploying to Vercel and want the platform to handle routing, edge functions, and CDN automatically. The App Router (stable since Next.js 13, mature by 14) changed the default: components render on the server now, client components are opt-in via 'use client'. This cuts initial JS payload dramatically — the GitIntel marketing site is Next.js 15, and the homepage TTI is under 1.2s on 4G.
React 19 landed concurrent features and the new compiler that auto-memoizes components. These improvements flow into Next.js automatically. For new projects in 2026, Next.js is the default for public-facing web unless you have a specific reason to avoid it. The framework overhead is negligible; the performance and SEO benefits are concrete.