Every route in the App Router is rendered using one of a small number of strategies, and which one applies determines when the work of producing the page happens, how fast it is served, and how current its data is. The three strategies you must understand are static rendering, where the page is produced once at build time and served as a cached artifact; dynamic rendering, where the page is produced fresh on every request; and Incremental Static Regeneration, which is static rendering that is allowed to update itself periodically or on demand without a full rebuild. These are not settings you usually toggle directly with a single switch; instead, Next.js infers the strategy from how your code behaves — what data you fetch and how, and which request-specific APIs you touch.
This inference-based model is powerful but it is also the source of a great deal of confusion, because a developer can change a route's rendering strategy without realizing it simply by adding a call to read cookies or by changing a fetch's cache option. The same page that was a blazing-fast static artifact yesterday becomes a per-request dynamic render today, with measurably different performance, because one line opted it into dynamic behaviour. Mastering rendering strategies therefore means learning to read your own code the way Next.js does — recognizing which constructs force which strategy — so that the rendering behaviour of every route is something you chose deliberately rather than something that happened to you. This lesson maps each strategy, the signals that select it, and how to combine them within one application so each route renders the way its content actually demands.