A from-first-principles exploration of SSG, SSR, CSR, ISR, and PPR - built with zero frameworks.
HTML is generated ONCE at build time. Run `node src/build.js` to regenerate. The timestamp on the page won't change until you rebuild.
HTML is generated fresh on EVERY request. Refresh the page repeatedly - the timestamp updates each time.
Server sends a near-empty HTML shell. JavaScript runs in your browser, fetches the data, and builds the DOM. View source - you'll see almost no content.
Serves a cached static file. After 10 seconds of staleness, the NEXT request triggers a background rebuild. You get the stale page instantly; the page after you gets the fresh one.
Static shell served instantly from disk. Dynamic hole filled at request time. Both arrive in ONE HTTP response via chunked transfer - no extra network round-trips.
Streams exactly like PPR, but the shell is rendered on every request instead of read from disk. Refresh both: this timestamp changes, PPR's shell timestamp doesn't.