Technically — What is Next.js?
Justin Gage's standard explainer pattern: zero-to-one walkthrough of what a web framework is, then layered onto why Next.js specifically is the React-flavored opinionated framework everyone defaults to, then closes with the framework-politics angle (Vercel-owns-Next.js, Cloudflare just re-implemented Next.js out from under them).
Why this is in the vault
Two reasons, in priority order:
- The Vercel-vs-Cloudflare framing is directly relevant to RDCO stack discipline. Gage spells out the long-simmering complaint: Next.js is open source but Vercel-controlled, which produces undocumented behaviors, opaque roadmap, and a thin OSS ecosystem around it. He flags the recent Cloudflare "rebuild Next.js with AI agents" move as the latest flare-up in the conflict. This is exactly the dynamic that informed the RDCO decision to put
hq.raydata.coon Astro + Cloudflare Pages rather than Next.js + Vercel — see [[2026-04-22-hq-proposal-v1]] where Astro was selected explicitly because Next.js's SSR/ISR machinery added complexity without benefit for a mostly-static surface, and Cloudflare was the natural fit given the existing domain footprint. - The "opinionated vs. unopinionated" framing is reusable language. Gage's Django-vs-Flask analogy ("a club that gives you structure and special privileges, as long as you follow the rules") is the right shape for explaining stack tradeoffs in Sanity Check writing without going framework-specific.
The first ~70% of the piece is intro-level (what a web server does, what DNS does, what file-based routing is) — skippable for anyone who's shipped a web app. The last ~30% (opinionated vs. general, the Vercel/Cloudflare beef, the "rebuild" reference) is where the analytical value sits.
Mapping against Ray Data Co
Medium mapping. The piece itself is a beginner explainer, but it surfaces the framework-politics angle that ratifies an active RDCO architectural choice.
- HQ stack discipline confirmation. The conflict-of-interest critique Gage raises is the structural reason the HQ proposal landed on Astro instead of Next.js. The fact that a popular educator is now writing about it (vs. just Cloudflare's marketing) means the perception is broadening. Reinforces that the "we don't depend on Vercel" posture is defensible to founders who ask why we didn't pick the obvious choice.
- The "rebuild Next.js" claim Gage references is the same Cloudflare move that put
@opennextjs/cloudflareon the map. That adapter is the bridge any future RDCO Next.js surface (Sanity Check has had this floated) would run through if we ever needed it. See [[2026-05-10-harness-moat-two-layers-portability]] — deployment targets (Cloudflare Pages vs Vercel vs Netlify) are explicitly framed there as a trivial swap, same workflow shape. Gage's piece is the external-validation citation for that framing. - "Opinionated vs. unopinionated" is a transferable mental model. Reusable for Sanity Check writing on harness/agent stack choices (e.g. claude-code's harness opinions vs. a bare-bones agent loop) — the same tradeoff applies one level up the stack.
- Sponsorship signal — none. No Vercel sponsor disclosure, no affiliate links, no "today's email brought to you by." This is unsponsored Justin Gage editorial. The Vercel/Cloudflare framing reads as neutral-leaning-pro-Cloudflare, which is notable given Justin's audience overlap with the Vercel team. Worth tracking whether Technically takes a Vercel sponsorship in the next 90 days — if yes, this piece becomes an interesting pre-sponsorship-tone-check artifact.
Related
- [[2026-04-22-hq-proposal-v1]] — original HQ stack decision (Astro + Cloudflare Pages, explicitly rejecting Next.js+Vercel for this surface)
- [[2026-05-10-harness-moat-two-layers-portability]] — deployment-target portability framing; Vercel-vs-Cloudflare is a portable layer, not a moat
- [[2026-05-11-hq-as-decision-surface-notion-as-data-store]] — current HQ architecture (downstream of the Astro choice)
- [[2026-04-23-generative-engine-optimization-geo]] — RDCO Cloudflare Pages publishing stack as the GEO substrate