A practical guide to Next.js 15 App Router patterns: route groups, Server vs Client Components, data fetching without useEffect, Server Actions, Suspense boundaries, and middleware — with code examples for each.
Why the App Router Requires a Different Mental Model
Next.js 15 App Router is not an incremental upgrade from the Pages Router — it is a fundamentally different architecture based on React Server Components. In the Pages Router, every page ran client-side by default, with getServerSideProps or getStaticProps as explicit escape hatches to the server. In the App Router, every component runs on the server by default. The browser receives pre-rendered HTML plus only the JavaScript needed for interactive components.
Topics covered
Next.js 15 App RouterReact Server ComponentsNext.js route groupsNext.js Server ActionsNext.js data fetchingNext.js Suspense loadingNext.js middlewareNext.js error.tsxNext.js loading.tsxNext.js generateMetadataclient server boundary Next.jsuse client directiveNext.js layout.tsxasync Server ComponentrevalidatePath Next.jsNext.js caching strategyNext.js App Router tutorialuse server directive