SSR renderuje przy każdym żądaniu, SSG renderuje na etapie builda, a ISR odświeża stronę w tle po czasie revalidate. To kompromis między świeżością danych, szybkością i czasem builda.
Te pojęcia opisują *kiedy* generujesz HTML i jak kontrolujesz świeżość.
W App Router to głównie kwestia cache/revalidate:
// Odświeżaj tę trasę co 60s (ISR)
export const revalidate = 60
// Per-request (SSR)
await fetch(url, { cache: 'no-store' })