What Next.js Adds to React

React 7,897 , as React.js describes it, is a rendering library: it turns state into a component tree and reconciles that tree against the DOM. It has no opinion about URLs, no way to talk to a database, no build step and no server. The Vite 25,978 setup of Creating a Project with Vite supplies one of those: a bundler.

Next.js 10,514 supplies the rest by moving the first render to the server. A request for /books reaches a Node process, page.tsx runs there as an async function, awaits the data it needs, and the server streams finished HTML. Only components marked 'use client' ship as code to hydrate.

A page request in a Vite-built React app and in Next.js
A page request in a Vite-built React app and in Next.js

That change pulls a list of concerns inside the framework: routing becomes folders under app/ instead of react-router (Routing with the App Router), data fetching becomes await in a component instead of useEffect (Fetching Data), caching gets a first-class API in "use cache" and tags (Caching and Revalidation), mutations become Server Actions (Server Actions and Mutations), endpoints that must stay endpoints become route.ts handlers rather than a separate Express 24,430 app (Route Handlers and the Proxy), and images and fonts get next/image and next/font (Styling, Fonts, and Images). None of it replaces React: your components, props, state, effects and hooks are the ones from React.js and behave identically once they run in the browser.