Michael Freno 687df016a6 nook: defer the SSR stream until the appcast resolves on /changelog
Every cold origin render of /changelog died with ERR_HTTP_HEADERS_SENT:
the pending createAsync at the top of NookChangelogPage suspended the
whole component before <EdgeCacheHeaders> rendered, the shell flushed
while the S3 appcast fetch was in flight, and the boundary re-render
then called setResponseHeader on an already-sent response. Warm renders
hid it because the appcast's 5-minute module cache resolved in a
microtask; fresh Vercel isolates and cache expiry hit the crash, which
is why refreshes and direct navigation failed while in-app Links worked.

deferStream holds the stream until the releases resolve, so HttpHeader
always runs pre-flush. The S3 latency lands on origin renders only,
which the page's CDN-Cache-Control s-maxage=300 already keeps rare.

Tests: local prod-build cold-start loop (build + curl /nook/changelog),
red 3/3 before, green 5/5 after; stack identical to the prod trace.

Fixes FRE-112
2026-10-05 12:40:44 -04:00
2026-07-23 22:53:40 -04:00
2026-10-03 15:01:23 -04:00
2026-09-05 16:06:27 -04:00
2026-10-05 11:05:24 -04:00
2026-09-06 13:53:49 -04:00
2026-10-03 11:04:37 -04:00
2025-12-17 13:51:13 -05:00
2025-12-16 22:42:05 -05:00
Description
No description provided
153 MiB
Languages
TypeScript 64.5%
JavaScript 33.6%
CSS 1.2%
HTML 0.4%
Shell 0.3%