Next.js

React.js left you with a React 7,897 application that lives entirely in the browser. The server sends an empty <div id="root"> and a bundle of JavaScript; everything the user reads is assembled after that bundle arrives and runs. That is fine behind a login, and a poor trade for a catalog or a blog you want indexed. It also forces a second program — the Express 24,430 API of Express.js — to exist so the browser has somewhere to fetch from.

Next.js 10,514 closes that gap. It is a React framework, built by Vercel 3,061 and released under the MIT license, that runs your components on the server first, ships HTML, then hydrates only the parts that must be interactive. Routing comes from the file system, data fetching is a plain await inside a component, mutations are functions you call from a form but that execute on the server, and the bundler, TypeScript setup, image optimizer and production server are already wired together. React itself stays in React.js; the Bookshelf API and collections of Express.js and MongoDB become the data behind the front end built here.

The version throughout is Next.js 16.3.5, released 11 September 2026, running on Node.js 25.8.0 2,131 ; every command, transcript and screenshot came from a real project on that stack. Next.js 16 changed enough that older tutorials mislead: Turbopack 10,514 is the default bundler, rendering is dynamic by default with caching opted into through Cache Components, middleware.ts has become proxy.ts, next lint is gone, and params, cookies() and headers() are asynchronous.

What you will learn

Sections