Question presented to candidate: "You are designing a product page, a blog and an account dashboard. For each, would you use static with ISR, fully dynamic SSR, or Partial Prerendering, and why?"
What a strong answer should cover:
- Static or ISR: content is the same for everyone and may be minutes or hours stale; fastest first byte, cheapest to serve.
- Dynamic (SSR): content depends on the request and must be exact; every request renders, and the first byte waits for data unless you stream.
- PPR: mostly shared content with a few personal parts; the shell is prerendered and the personal holes stream in the same response.
- Streaming with loading.js or Suspense improves dynamic pages when PPR is not available.
- In Next.js 16, PPR comes with Cache Components (
cacheComponents: true), no longer an experimental flag; since 16.4 new create-next-app projects have it on, withpartialPrefetching.
Clarifying questions expected:
- "Which parts of the page differ per user?" — those decide whether the page needs holes.
- "How quickly must edits appear?" — decides lifetime and on-demand revalidation.
Code / implementation expected: Optional — the configuration for each strategy.