Next.js Curriculum

Data Fetching & Request Lifecycle

Modern Next.js eliminates internal REST boilerplate by enabling direct database and ORM queries inside asynchronous Server Components.Master the critical breaking change in Next.js 15 and 16: asynchronous request APIs where params, searchParams, cookies(), and headers() return Promises.Eliminate sequential request waterfalls using parallel Promise resolution, streaming Suspense boundaries, and per-request memoization via React.cache().

Lesson 01Easy25 min

Async Server Components & Direct Database Access

Async React Server Components execute exclusively on the server, allowing developers to query databases (Prisma, Drizzle, pg) and backend services directly with async/await. This eliminates internal REST/GraphQL API hops, prevents database credentials from reaching the client, and removes client-side loading spinners for initial HTML.

Lesson 02Medium30 min

Breaking Change: Async Request APIs in Next.js 15+

In Next.js 15+, dynamic request data—specifically params, searchParams, cookies(), and headers()—is asynchronous and must be awaited. This architectural breaking change allows Next.js to start prerendering static page shells before the server even receives the incoming HTTP request headers or URL parameters, forming the foundation for Partial Prerendering (PPR).

Lesson 03Medium30 min

Request Waterfalls: Prevention with Promise.all and Suspense

Request waterfalls occur when sequential async operations block subsequent requests unnecessarily. In Next.js, waterfalls are resolved using two primary patterns: parallel fetching with Promise.all() for colocated independent data, and granular Suspense boundaries to stream independent sub-trees concurrently without blocking the parent page.

Lesson 04Medium25 min

Static Param Pre-generation with generateStaticParams

generateStaticParams replaces Pages Router’s getStaticPaths in the App Router. It runs at build time to define the list of route segment parameters that will be statically prerendered to HTML and RSC Flight files. Routes not returned by generateStaticParams can be statically generated on-demand on the first request or routed to 404 based on dynamicParams configuration.

Lesson 05Medium25 min

Request Deduplication & React.cache Internals

Request deduplication ensures that identical data requests within a single server render cycle execute only once. Native fetch() requests with identical URLs and options are deduplicated automatically by Next.js. For non-fetch operations (Prisma, Drizzle, raw DB queries, internal calculations), React provides the cache() utility to memoize results per-request lifecycle.