Next.js and React Explained: Building Modern Web Apps
React and Next.js are often mentioned together as if they’re one thing, but they solve different problems — React is a UI library, Next.js is the framework that turns it into a complete, deployable web application.
What React actually is
React, built by Meta, gives you a component model: you describe your UI as a tree of reusable components, each managing its own state, and React efficiently re-renders only what changed when that state updates (via a virtual DOM diffing process). JSX — writing markup directly inside JavaScript — is React’s syntax for describing what a component renders. This is the entire scope of what React provides: no built-in routing, no data-fetching convention, no opinion on how your app is served.
What Next.js adds
Next.js, built by Vercel, fills in everything React deliberately leaves out:
- The App Router — file-based routing, plus React Server Components, which let parts of your UI render on the server and send only the result (not the component code) to the browser, reducing the JavaScript the client has to download and execute.
- Rendering strategy per page — server-side rendering (SSR) for pages that need fresh data on every request, static generation (SSG) for pages that can be built once and served instantly from a CDN, and incremental static regeneration (ISR) as a middle ground that regenerates a cached page on a schedule rather than every request.
- API routes — backend endpoints living in the same project as your frontend, useful for small-to-medium apps that don’t need a fully separate backend service.
- Built-in image and font optimization — automatic resizing, format conversion, and loading strategies that would otherwise be manual performance work.
- Middleware — logic that runs before a request reaches your page, useful for auth checks, redirects, and A/B test routing.
When Next.js is the right choice
Next.js earns its complexity for products with real interactivity and per-user, per-request state: SaaS dashboards, customer portals, anything behind a login where content genuinely differs by user and by moment. If you’re building that kind of product, the App Router’s server/client component split and flexible rendering strategy are worth the additional conceptual overhead compared to a plain React single-page app.
When something else fits better
For a fully static site — marketing pages, a blog, documentation — a framework built around static-first output by default, like Astro, produces a faster result with less to configure, since you’re not opting out of dynamic-rendering machinery you never needed in the first place; you’re using a tool that never assumed you wanted it. See our website vs. web app guide if you’re deciding which category your project falls into.
Elmeris builds with React and Next.js for application-shaped products, and Astro for content and marketing sites — matched to the project, not applied by default. See our web app development services and Next.js & React technology page, or get in touch to talk through your project.
