home / skills / hoangnguyen0403 / agent-skills-standard / rendering
This skill helps you choose and apply Next.js rendering strategies (SSG, SSR, ISR, Streaming, and PPR) to balance data freshness and performance.
npx playbooks add skill hoangnguyen0403/agent-skills-standard --skill renderingReview the files below or copy the command above to add this skill to your agents.
---
name: Next.js Rendering Strategies
description: SSG, SSR, ISR, Streaming, and Partial Prerendering (PPR).
metadata:
labels: [nextjs, rendering, isr, ssr, ssg]
triggers:
files: ['**/page.tsx', '**/layout.tsx']
keywords: [generateStaticParams, dynamic, dynamicParams, PPR, streaming]
---
# Rendering Strategies (App Router)
## **Priority: P0 (CRITICAL)**
Choose rendering strategy based on data freshness and scaling needs. See [Strategy Matrix](references/strategy-matrix.md).
## Guidelines
- **SSG (Default)**: Build-time render. Use `generateStaticParams`.
- **SSR**: Per-request render. Triggered by `cookies()`, `headers()`, or `cache: 'no-store'`.
- **Streaming**: Wrap slow components in `<Suspense>` to avoid blocking.
- **ISR**: Post-build updates. Use `revalidate` (time) or `revalidatePath` (on-demand).
- **PPR**: Static shell + dynamic holes. Experimental `ppr` config.
- **Runtime**: Node.js (Full) or Edge (Lighter/Faster).
## Scaling & Hydration
- **Static Shell**: Render layout as static, personalize via Suspense.
- **Error Boundaries**: Use `error.tsx` with `reset()` to catch runtime errors.
- **Hydration Safety**: Avoid `typeof window` or `Date.now()` in initial render. Use `useEffect`.
## Anti-Patterns
- **No Root Awaits**: Avoid waterfalls in `page.tsx`. Use Streaming.
- **Bailouts**: Understand [Suspense Bailout Rules](references/SUSPENSE_BAILOUT.md).
## References
- [Strategy Selection Matrix](references/strategy-matrix.md)
- [Implementation Details](references/implementation-details.md)
- [Scaling Patterns](references/scaling-patterns.md)
This skill documents Next.js App Router rendering strategies: SSG, SSR, ISR, Streaming, and Partial Prerendering (PPR). It guides choice based on data freshness, performance, and scaling needs. The content focuses on concrete patterns, pitfalls, and practical configuration tips for production apps.
The skill inspects route code and runtime signals to determine the rendering mode: build-time generation (SSG), per-request server render (SSR), incremental updates (ISR), streamed partials, or PPR experimental shells. It highlights triggers like cookies(), headers(), cache settings, revalidate values, Suspense usage for streaming, and runtime target (node vs edge). It also surfaces scaling and hydration concerns and common anti-patterns to avoid.
How do I trigger SSR instead of SSG?
SSR is triggered when server-only signals are used, such as cookies(), headers(), or cache: 'no-store' in the route code.
When should I use ISR vs revalidatePath on-demand?
Use time-based revalidate for predictable refresh cadence; use revalidatePath when you need immediate, on-demand updates after specific events (e.g., CMS publish).