Next.js App Router Caching: ISR, Tag Revalidation, and Trust Boundaries
When to use time-based ISR versus tag-driven revalidation, how fetch() caching behaves across Next.js 14 and 15, and how to keep server/client trust boundaries intact while maintaining fresh content.