The React vs Next.js question is the wrong framing in 2026. React is a UI library — it renders components. Next.js is a full-stack framework that uses React for the UI layer. You don't choose between them; you choose whether you need the framework on top.
When Next.js is the obvious pick
- Public-facing sites that need SEO. Next.js gives you server rendering, metadata APIs, sitemaps, and OG image generation. Vanilla React is client-only — invisible to search engines without extra work.
- Marketing sites, blogs, landing pages. Static generation + ISR means fast pages and low hosting cost. This is what Next.js was built for.
- Apps with API routes. Next.js API routes let you build a backend without a separate server. Authentication, webhooks, database queries — all in one project.
- AI-generated apps. Every serious AI app builder outputs Next.js because it provides the infrastructure patterns (routing, metadata, deploy) that raw React doesn't.
When vanilla React still makes sense
- Embedded widgets and micro-frontends. If you're rendering inside another platform (Salesforce, Shopify, an existing app), a standalone React build is simpler.
- Desktop apps with Electron. Electron + React doesn't need server rendering. Next.js adds weight you don't use.
- Mobile with React Native. React Native is its own framework; Next.js doesn't apply here.
- Teams already on Vite. If your project is Vite + React and working fine, migrating to Next.js is a cost. Only do it if you need server rendering or the other framework features.
The 2026 default
For new web projects, Next.js is the default. Not because React is insufficient, but because the things Next.js adds (routing, SSR, deploy) are things every serious project eventually needs. Starting with them is cheaper than adding them later.
Vanilla React is the right pick when you specifically don't need the framework layer — embedded UIs, desktop apps, mobile. For everything else, start with Next.js.