Episode 2 — React Frontend Architecture NextJS / 2.19 — Rendering Strategies in NextJS

2.19.c — Incremental Static Regeneration (ISR)

In one sentence: ISR serves cached static pages but refreshes them on a schedule or on-demand so you avoid full rebuilds while accepting bounded staleness.

Navigation: ← SSG · → 2.19 Overview


1. What ISR Solves

ISR keeps most benefits of SSG (fast CDN, high hit rate) while allowing periodic or on-demand refresh without rebuilding the entire site.

1.1 Stale-while-revalidate mental model

At a high level:

  1. Serve cached static page immediately (fast).
  2. After a revalidate interval, the next request may still get stale HTML while a background regeneration runs.
  3. Once regeneration completes, subsequent visitors get fresh HTML.

Interview phrase: "Users can see slightly stale content bounded by your SLA; you trade absolute freshness for cost and performance."

1.2 Pages Router: revalidate: N

export async function getStaticProps() {
  const post = await loadPost();
  return { props: { post }, revalidate: 300 };
}

1.3 App Router equivalents (conceptual)

Caching moved toward fetch options (next: { revalidate: N }), segment config, and tag/path revalidation APIs. Always align explanations with the Next version you deploy.

1.4 On-demand revalidation

CMS publishes → webhook → revalidatePath / revalidateTag. Great for editor expectations ("I clicked publish, it's live").

1.5 Failure modes

  • Background regen fails → users may keep seeing stale until retry succeeds.
  • Misconfigured tags → blast radius too wide/narrow.
  • Thundering herd when many edges miss cache simultaneously.

1.6 ISR vs SSR decision matrix

NeedLean
Sub-second freshnessSSR or client
Minutes/hours staleness OKISR
Legal must be instantSSR or client-gated

1.7 Observability

Track age of served HTML, revalidation success rate, and origin load during spikes.

1.8 Tag graph design (advanced)

Treat tags like reverse dependencies. If a page shows User, OrderSummary, and PromoBanner, decide whether one tag (user:123) invalidates only profile routes or also any page embedding that widget. Narrow tags reduce unnecessary origin hits; wide tags simplify mental models but increase cache churn.

PatternTag exampleWhen it shines
Entity-centricproduct:SKU-42PDP, wishlists, search tiles all refresh together
Route-centricpath:/blogSimple sites; coarse invalidation
Time-windowprices:2026-04-11Intraday pricing batches

1.9 Double invalidation (time-based + on-demand)

Using both a short revalidate window and webhooks is valid when:

  • Editors need instant updates (webhook path).
  • Anonymous visitors still get protection if the webhook fails (time-based path eventually heals).

Document precedence: which wins when both fire within the same second? (Depends on platform implementation — say honestly in interviews and point to docs for your deployed version.)

1.10 Deleted content and HTTP semantics

ISR caches success representations. If a CMS deletes an article:

  • Cached 200 may persist until revalidation.
  • Mitigation: on delete webhook, call revalidation and optionally push a 410 Gone static replacement on next regen, or move deletes to SSR for sensitive compliance.

1.11 Thundering herd sketch

When many PoPs simultaneously detect expiry, you can stampede the origin.

Mitigations (conceptual):

  1. Jitter revalidation windows per route shard.
  2. Single-flight deduplication at origin (common in data loaders).
  3. Warm critical paths after deploy via synthetic traffic.

1.12 Deploy + ISR interaction

New deployment changes component code while CDN may still serve old HTML referencing old hashed assets briefly. Teams mitigate with immutable asset hosting and consistent versioning so old HTML keeps working until HTML itself refreshes.

1.13 Personalized fragments on ISR pages

Danger: caching HTML that embeds user-specific prices. Patterns:

  • Keep personalized pieces client-fetched after static shell.
  • Or use SSR for those segments with no-store.
  • Or edge personalization (advanced) with strict cache keying.

1.14 ISR for JSON Route Handlers?

Sometimes teams cache GET JSON responses at CDN with s-maxage similar to ISR semantics. Mentally relate: HTTP cache headers on APIs vs page ISR — same CDN physics, different framework knobs.

1.15 SLA template (copy for RFCs)

Freshness SLA:
  - Marketing pages: <= 15 minutes stale (ISR 900)
  - Product price: <= 60 seconds (SSR segment or client overlay)
  - Legal docs: immediate after publish (on-demand revalidate + verify)
Rollback:
  - Increase revalidate window if origin unstable
  - Fall back to SSR for single critical route

1.16 Interview story arc: “Black Friday”

Setup: Product grid ISR 5 minutes; inventory sells out faster.

Answer: Static segment for non-inventory content; inventory badge via short TTL client fetch or SSR micro-segment; optionally edge config feature flag to flip route to SSR under load.

1.17 Metrics dashboard (what to chart)

  • Staleness histogram (time since last-modified equivalent).
  • Regeneration failures / minute.
  • Origin CPU correlated with deploys.
  • CDN hit ratio per route class.

1.18 Comparison to “pure” SSG + cron rebuild

ApproachProsCons
ISRIncremental costComplex mental model
Nightly full rebuildSimpleNot real-time; huge builds

1.19 Testing ISR behavior

Use integration tests that:

  1. Request page twice with controlled clocks or webhook triggers.
  2. Assert response headers or embedded build id / data timestamp when you stamp them for tests.

1.20 Glossary (speak precisely)

  • Origin: Your Next server / serverless function backing regeneration.
  • PoP: CDN edge point-of-presence serving cached HTML.
  • SWR (conceptual): Serve stale while fetching fresh — ISR is in this family.

Part 2 — Deep Encyclopedia (Incremental Static Regeneration (ISR))

How to use this section: Read sequentially or jump by drill number. Each block has a scenario, a prompt (what an interviewer might ask), a model answer, and often a code sketch.

E001 — ISR drill 1: Stale content served 10 minutes

Scenario: Stale content served 10 minutes — support complains 'I published'. (variation 1: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #1.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #1, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E002 — ISR drill 2: On-demand revalidation webhook from CMS

Scenario: On-demand revalidation webhook from CMS — signature verification. (variation 2: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #2.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #2, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E003 — ISR drill 3: revalidate: 60 vs revalidatePath after mutation

Scenario: revalidate: 60 vs revalidatePath after mutation — double invalidation? (variation 3: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #3.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #3, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E004 — ISR drill 4: ISR page deleted in CMS

Scenario: ISR page deleted in CMS — still 200 with stale body until revalidate. (variation 4: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #4.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #4, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E005 — ISR drill 5: High-traffic article

Scenario: High-traffic article — thundering herd on first request after expiry. (variation 5: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #5.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #5, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E006 — ISR drill 6: Tag-based revalidation shared across 50 pages

Scenario: Tag-based revalidation shared across 50 pages — blast radius. (variation 6: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #6.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #6, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E007 — ISR drill 7: Background revalidation fails silently

Scenario: Background revalidation fails silently — how to detect? (variation 7: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #7.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #7, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E008 — ISR drill 8: Deploy new code while old HTML references old chunk hashes.

Scenario: Deploy new code while old HTML references old chunk hashes. (variation 8: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #8.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #8, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E009 — ISR drill 9: ISR + personalized cookie banner

Scenario: ISR + personalized cookie banner — cache poisoning risk. (variation 9: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #9.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #9, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E010 — ISR drill 10: Choosing ISR vs SSR for stock ticker that updates every second.

Scenario: Choosing ISR vs SSR for stock ticker that updates every second. (variation 10: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #10.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #10, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E011 — ISR drill 11: Stale content served 10 minutes

Scenario: Stale content served 10 minutes — support complains 'I published'. (variation 11: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #11.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #11, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E012 — ISR drill 12: On-demand revalidation webhook from CMS

Scenario: On-demand revalidation webhook from CMS — signature verification. (variation 12: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #12.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #12, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E013 — ISR drill 13: revalidate: 60 vs revalidatePath after mutation

Scenario: revalidate: 60 vs revalidatePath after mutation — double invalidation? (variation 13: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #13.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #13, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E014 — ISR drill 14: ISR page deleted in CMS

Scenario: ISR page deleted in CMS — still 200 with stale body until revalidate. (variation 14: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #14.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #14, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E015 — ISR drill 15: High-traffic article

Scenario: High-traffic article — thundering herd on first request after expiry. (variation 15: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #15.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #15, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E016 — ISR drill 16: Tag-based revalidation shared across 50 pages

Scenario: Tag-based revalidation shared across 50 pages — blast radius. (variation 16: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #16.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #16, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E017 — ISR drill 17: Background revalidation fails silently

Scenario: Background revalidation fails silently — how to detect? (variation 17: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #17.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #17, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E018 — ISR drill 18: Deploy new code while old HTML references old chunk hashes.

Scenario: Deploy new code while old HTML references old chunk hashes. (variation 18: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #18.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #18, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E019 — ISR drill 19: ISR + personalized cookie banner

Scenario: ISR + personalized cookie banner — cache poisoning risk. (variation 19: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #19.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #19, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E020 — ISR drill 20: Choosing ISR vs SSR for stock ticker that updates every second.

Scenario: Choosing ISR vs SSR for stock ticker that updates every second. (variation 20: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #20.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #20, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E021 — ISR drill 21: Stale content served 10 minutes

Scenario: Stale content served 10 minutes — support complains 'I published'. (variation 21: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #21.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #21, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E022 — ISR drill 22: On-demand revalidation webhook from CMS

Scenario: On-demand revalidation webhook from CMS — signature verification. (variation 22: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #22.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #22, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E023 — ISR drill 23: revalidate: 60 vs revalidatePath after mutation

Scenario: revalidate: 60 vs revalidatePath after mutation — double invalidation? (variation 23: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #23.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #23, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E024 — ISR drill 24: ISR page deleted in CMS

Scenario: ISR page deleted in CMS — still 200 with stale body until revalidate. (variation 24: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #24.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #24, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E025 — ISR drill 25: High-traffic article

Scenario: High-traffic article — thundering herd on first request after expiry. (variation 25: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #25.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #25, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E026 — ISR drill 26: Tag-based revalidation shared across 50 pages

Scenario: Tag-based revalidation shared across 50 pages — blast radius. (variation 26: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #26.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #26, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E027 — ISR drill 27: Background revalidation fails silently

Scenario: Background revalidation fails silently — how to detect? (variation 27: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #27.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #27, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E028 — ISR drill 28: Deploy new code while old HTML references old chunk hashes.

Scenario: Deploy new code while old HTML references old chunk hashes. (variation 28: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #28.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #28, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E029 — ISR drill 29: ISR + personalized cookie banner

Scenario: ISR + personalized cookie banner — cache poisoning risk. (variation 29: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #29.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #29, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E030 — ISR drill 30: Choosing ISR vs SSR for stock ticker that updates every second.

Scenario: Choosing ISR vs SSR for stock ticker that updates every second. (variation 30: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #30.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #30, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E031 — ISR drill 31: Stale content served 10 minutes

Scenario: Stale content served 10 minutes — support complains 'I published'. (variation 31: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #31.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #31, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E032 — ISR drill 32: On-demand revalidation webhook from CMS

Scenario: On-demand revalidation webhook from CMS — signature verification. (variation 32: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #32.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #32, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E033 — ISR drill 33: revalidate: 60 vs revalidatePath after mutation

Scenario: revalidate: 60 vs revalidatePath after mutation — double invalidation? (variation 33: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #33.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #33, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E034 — ISR drill 34: ISR page deleted in CMS

Scenario: ISR page deleted in CMS — still 200 with stale body until revalidate. (variation 34: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #34.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #34, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E035 — ISR drill 35: High-traffic article

Scenario: High-traffic article — thundering herd on first request after expiry. (variation 35: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #35.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #35, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E036 — ISR drill 36: Tag-based revalidation shared across 50 pages

Scenario: Tag-based revalidation shared across 50 pages — blast radius. (variation 36: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #36.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #36, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E037 — ISR drill 37: Background revalidation fails silently

Scenario: Background revalidation fails silently — how to detect? (variation 37: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #37.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #37, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E038 — ISR drill 38: Deploy new code while old HTML references old chunk hashes.

Scenario: Deploy new code while old HTML references old chunk hashes. (variation 38: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #38.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #38, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E039 — ISR drill 39: ISR + personalized cookie banner

Scenario: ISR + personalized cookie banner — cache poisoning risk. (variation 39: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #39.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #39, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E040 — ISR drill 40: Choosing ISR vs SSR for stock ticker that updates every second.

Scenario: Choosing ISR vs SSR for stock ticker that updates every second. (variation 40: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #40.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #40, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E041 — ISR drill 41: Stale content served 10 minutes

Scenario: Stale content served 10 minutes — support complains 'I published'. (variation 41: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #41.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #41, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E042 — ISR drill 42: On-demand revalidation webhook from CMS

Scenario: On-demand revalidation webhook from CMS — signature verification. (variation 42: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #42.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #42, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E043 — ISR drill 43: revalidate: 60 vs revalidatePath after mutation

Scenario: revalidate: 60 vs revalidatePath after mutation — double invalidation? (variation 43: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #43.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #43, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E044 — ISR drill 44: ISR page deleted in CMS

Scenario: ISR page deleted in CMS — still 200 with stale body until revalidate. (variation 44: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #44.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #44, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E045 — ISR drill 45: High-traffic article

Scenario: High-traffic article — thundering herd on first request after expiry. (variation 45: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #45.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #45, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E046 — ISR drill 46: Tag-based revalidation shared across 50 pages

Scenario: Tag-based revalidation shared across 50 pages — blast radius. (variation 46: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #46.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #46, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E047 — ISR drill 47: Background revalidation fails silently

Scenario: Background revalidation fails silently — how to detect? (variation 47: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #47.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #47, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E048 — ISR drill 48: Deploy new code while old HTML references old chunk hashes.

Scenario: Deploy new code while old HTML references old chunk hashes. (variation 48: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #48.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #48, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E049 — ISR drill 49: ISR + personalized cookie banner

Scenario: ISR + personalized cookie banner — cache poisoning risk. (variation 49: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #49.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #49, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E050 — ISR drill 50: Choosing ISR vs SSR for stock ticker that updates every second.

Scenario: Choosing ISR vs SSR for stock ticker that updates every second. (variation 50: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #50.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #50, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E051 — ISR drill 51: Stale content served 10 minutes

Scenario: Stale content served 10 minutes — support complains 'I published'. (variation 51: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #51.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #51, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E052 — ISR drill 52: On-demand revalidation webhook from CMS

Scenario: On-demand revalidation webhook from CMS — signature verification. (variation 52: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #52.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #52, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E053 — ISR drill 53: revalidate: 60 vs revalidatePath after mutation

Scenario: revalidate: 60 vs revalidatePath after mutation — double invalidation? (variation 53: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #53.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #53, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E054 — ISR drill 54: ISR page deleted in CMS

Scenario: ISR page deleted in CMS — still 200 with stale body until revalidate. (variation 54: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #54.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #54, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E055 — ISR drill 55: High-traffic article

Scenario: High-traffic article — thundering herd on first request after expiry. (variation 55: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #55.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #55, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E056 — ISR drill 56: Tag-based revalidation shared across 50 pages

Scenario: Tag-based revalidation shared across 50 pages — blast radius. (variation 56: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #56.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #56, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E057 — ISR drill 57: Background revalidation fails silently

Scenario: Background revalidation fails silently — how to detect? (variation 57: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #57.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #57, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E058 — ISR drill 58: Deploy new code while old HTML references old chunk hashes.

Scenario: Deploy new code while old HTML references old chunk hashes. (variation 58: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #58.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #58, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E059 — ISR drill 59: ISR + personalized cookie banner

Scenario: ISR + personalized cookie banner — cache poisoning risk. (variation 59: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #59.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #59, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E060 — ISR drill 60: Choosing ISR vs SSR for stock ticker that updates every second.

Scenario: Choosing ISR vs SSR for stock ticker that updates every second. (variation 60: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #60.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #60, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E061 — ISR drill 61: Stale content served 10 minutes

Scenario: Stale content served 10 minutes — support complains 'I published'. (variation 61: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #61.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #61, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E062 — ISR drill 62: On-demand revalidation webhook from CMS

Scenario: On-demand revalidation webhook from CMS — signature verification. (variation 62: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #62.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #62, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E063 — ISR drill 63: revalidate: 60 vs revalidatePath after mutation

Scenario: revalidate: 60 vs revalidatePath after mutation — double invalidation? (variation 63: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #63.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #63, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E064 — ISR drill 64: ISR page deleted in CMS

Scenario: ISR page deleted in CMS — still 200 with stale body until revalidate. (variation 64: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #64.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #64, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E065 — ISR drill 65: High-traffic article

Scenario: High-traffic article — thundering herd on first request after expiry. (variation 65: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #65.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #65, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E066 — ISR drill 66: Tag-based revalidation shared across 50 pages

Scenario: Tag-based revalidation shared across 50 pages — blast radius. (variation 66: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #66.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #66, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E067 — ISR drill 67: Background revalidation fails silently

Scenario: Background revalidation fails silently — how to detect? (variation 67: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #67.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #67, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E068 — ISR drill 68: Deploy new code while old HTML references old chunk hashes.

Scenario: Deploy new code while old HTML references old chunk hashes. (variation 68: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #68.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #68, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E069 — ISR drill 69: ISR + personalized cookie banner

Scenario: ISR + personalized cookie banner — cache poisoning risk. (variation 69: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #69.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #69, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E070 — ISR drill 70: Choosing ISR vs SSR for stock ticker that updates every second.

Scenario: Choosing ISR vs SSR for stock ticker that updates every second. (variation 70: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #70.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #70, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E071 — ISR drill 71: Stale content served 10 minutes

Scenario: Stale content served 10 minutes — support complains 'I published'. (variation 71: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #71.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #71, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E072 — ISR drill 72: On-demand revalidation webhook from CMS

Scenario: On-demand revalidation webhook from CMS — signature verification. (variation 72: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #72.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #72, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E073 — ISR drill 73: revalidate: 60 vs revalidatePath after mutation

Scenario: revalidate: 60 vs revalidatePath after mutation — double invalidation? (variation 73: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #73.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #73, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E074 — ISR drill 74: ISR page deleted in CMS

Scenario: ISR page deleted in CMS — still 200 with stale body until revalidate. (variation 74: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #74.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #74, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E075 — ISR drill 75: High-traffic article

Scenario: High-traffic article — thundering herd on first request after expiry. (variation 75: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #75.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #75, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E076 — ISR drill 76: Tag-based revalidation shared across 50 pages

Scenario: Tag-based revalidation shared across 50 pages — blast radius. (variation 76: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #76.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #76, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E077 — ISR drill 77: Background revalidation fails silently

Scenario: Background revalidation fails silently — how to detect? (variation 77: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #77.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #77, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E078 — ISR drill 78: Deploy new code while old HTML references old chunk hashes.

Scenario: Deploy new code while old HTML references old chunk hashes. (variation 78: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #78.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #78, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E079 — ISR drill 79: ISR + personalized cookie banner

Scenario: ISR + personalized cookie banner — cache poisoning risk. (variation 79: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #79.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #79, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E080 — ISR drill 80: Choosing ISR vs SSR for stock ticker that updates every second.

Scenario: Choosing ISR vs SSR for stock ticker that updates every second. (variation 80: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #80.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #80, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E081 — ISR drill 81: Stale content served 10 minutes

Scenario: Stale content served 10 minutes — support complains 'I published'. (variation 81: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #81.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #81, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E082 — ISR drill 82: On-demand revalidation webhook from CMS

Scenario: On-demand revalidation webhook from CMS — signature verification. (variation 82: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #82.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #82, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E083 — ISR drill 83: revalidate: 60 vs revalidatePath after mutation

Scenario: revalidate: 60 vs revalidatePath after mutation — double invalidation? (variation 83: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #83.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #83, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E084 — ISR drill 84: ISR page deleted in CMS

Scenario: ISR page deleted in CMS — still 200 with stale body until revalidate. (variation 84: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #84.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #84, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E085 — ISR drill 85: High-traffic article

Scenario: High-traffic article — thundering herd on first request after expiry. (variation 85: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #85.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #85, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E086 — ISR drill 86: Tag-based revalidation shared across 50 pages

Scenario: Tag-based revalidation shared across 50 pages — blast radius. (variation 86: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #86.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #86, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E087 — ISR drill 87: Background revalidation fails silently

Scenario: Background revalidation fails silently — how to detect? (variation 87: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #87.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #87, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E088 — ISR drill 88: Deploy new code while old HTML references old chunk hashes.

Scenario: Deploy new code while old HTML references old chunk hashes. (variation 88: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #88.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #88, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E089 — ISR drill 89: ISR + personalized cookie banner

Scenario: ISR + personalized cookie banner — cache poisoning risk. (variation 89: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #89.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #89, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E090 — ISR drill 90: Choosing ISR vs SSR for stock ticker that updates every second.

Scenario: Choosing ISR vs SSR for stock ticker that updates every second. (variation 90: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #90.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #90, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E091 — ISR drill 91: Stale content served 10 minutes

Scenario: Stale content served 10 minutes — support complains 'I published'. (variation 91: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #91.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #91, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E092 — ISR drill 92: On-demand revalidation webhook from CMS

Scenario: On-demand revalidation webhook from CMS — signature verification. (variation 92: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #92.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #92, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E093 — ISR drill 93: revalidate: 60 vs revalidatePath after mutation

Scenario: revalidate: 60 vs revalidatePath after mutation — double invalidation? (variation 93: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #93.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #93, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E094 — ISR drill 94: ISR page deleted in CMS

Scenario: ISR page deleted in CMS — still 200 with stale body until revalidate. (variation 94: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #94.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #94, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E095 — ISR drill 95: High-traffic article

Scenario: High-traffic article — thundering herd on first request after expiry. (variation 95: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #95.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #95, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E096 — ISR drill 96: Tag-based revalidation shared across 50 pages

Scenario: Tag-based revalidation shared across 50 pages — blast radius. (variation 96: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #96.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #96, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E097 — ISR drill 97: Background revalidation fails silently

Scenario: Background revalidation fails silently — how to detect? (variation 97: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #97.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #97, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E098 — ISR drill 98: Deploy new code while old HTML references old chunk hashes.

Scenario: Deploy new code while old HTML references old chunk hashes. (variation 98: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #98.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #98, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E099 — ISR drill 99: ISR + personalized cookie banner

Scenario: ISR + personalized cookie banner — cache poisoning risk. (variation 99: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #99.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #99, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E100 — ISR drill 100: Choosing ISR vs SSR for stock ticker that updates every second.

Scenario: Choosing ISR vs SSR for stock ticker that updates every second. (variation 100: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #100.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #100, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E101 — ISR drill 101: Stale content served 10 minutes

Scenario: Stale content served 10 minutes — support complains 'I published'. (variation 101: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #101.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #101, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E102 — ISR drill 102: On-demand revalidation webhook from CMS

Scenario: On-demand revalidation webhook from CMS — signature verification. (variation 102: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #102.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #102, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E103 — ISR drill 103: revalidate: 60 vs revalidatePath after mutation

Scenario: revalidate: 60 vs revalidatePath after mutation — double invalidation? (variation 103: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #103.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #103, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E104 — ISR drill 104: ISR page deleted in CMS

Scenario: ISR page deleted in CMS — still 200 with stale body until revalidate. (variation 104: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #104.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #104, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version

E105 — ISR drill 105: High-traffic article

Scenario: High-traffic article — thundering herd on first request after expiry. (variation 105: consider deployment on a serverless platform with regional databases.)

Prompt: Explain trade-offs and what you would measure (latency, error rate, cost) before/after a change for case #105.

Model answer: Start by naming the user-visible symptom (SEO, staleness, TTFB, consistency). List hypotheses (N+1 queries, blocking waterfall, wrong cache directive, missing revalidation). Propose one smallest experiment: add logging/timing, reduce sequential awaits, adjust revalidate window, or move work to background job. Define rollback. For #105, emphasize that measurement beats opinions: compare p50/p95 TTFB and conversion where relevant.

// Pages Router style sketch (concept)
export const revalidate = 300;

// App Router: prefer fetch next.revalidate or segment config per docs for your version