You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
How do pages render and cache, once Convex is the source of truth?
Settled going in: PPR. Article body and inline annotations are static; other annotations and comment threads are live Convex islands. Promoting an annotation invalidates the article's cache entry. /java/changelogkeeps its stable URL — no redirect to a concrete version — with cron-driven invalidation keeping it correct. Inline content is never live, so nothing shifts under a reader. Old articles should behave essentially like static pages.
Decide:
The static/dynamic boundary, concretely, per component. Which parts of src/components/java/patch-notes.tsx and src/app/java/changelog/layout.tsx sit in the static shell and which become dynamic islands.
Per-article cache lifetimes. A two-year-old article should cache near-permanently; the newest should revalidate fast. Express this with cache components primitives — this is the requirement that motivated the whole map.
Invalidation from Convex. The cron and the promote-annotation mutation both live outside Next. How do they invalidate a Vercel cache entry — tagged revalidation via a route handler, a webhook, something else? What is the auth on that endpoint, and what is the latency?
/java/changelog specifically. Retire the force-dynamic hack at src/app/java/changelog/page.tsx:8 and explain why the replacement is correct, in terms of the ISR mis-detection diagnosed in Java Changlogs caching too strongly #4. This is the ticket that closes that loop.
The version sidebar, which is live (new versions appear without a refresh) but sits in a layout wrapping cached pages.
The three liveness behaviours from the map: revision-change notice plus annotation write-lock; live sidebar; live comments. Where each one's subscription lives.
Server vs client Convex access. What is read server-side at render (cached) vs subscribed client-side (live), and how the client knows which article revision the static shell was built from — that comparison is what drives the "new version available" notice.
What gets deleted. The cache wrapper in src/lib/fetch.ts and request-time fetching in src/server/java/versions.ts, once ingestion is authoritative.
Blocked on the cache components research, the Next 16.3 upgrade, and the article schema.
Question
How do pages render and cache, once Convex is the source of truth?
Settled going in: PPR. Article body and inline annotations are static; other annotations and comment threads are live Convex islands. Promoting an annotation invalidates the article's cache entry.
/java/changelogkeeps its stable URL — no redirect to a concrete version — with cron-driven invalidation keeping it correct. Inline content is never live, so nothing shifts under a reader. Old articles should behave essentially like static pages.Decide:
src/components/java/patch-notes.tsxandsrc/app/java/changelog/layout.tsxsit in the static shell and which become dynamic islands./java/changelogspecifically. Retire theforce-dynamichack atsrc/app/java/changelog/page.tsx:8and explain why the replacement is correct, in terms of the ISR mis-detection diagnosed in Java Changlogs caching too strongly #4. This is the ticket that closes that loop.cachewrapper insrc/lib/fetch.tsand request-time fetching insrc/server/java/versions.ts, once ingestion is authoritative.Blocked on the cache components research, the Next 16.3 upgrade, and the article schema.