Skip to content

fix(build): validate CDN warm discovery and deploy inputs - #3057

Merged
james-elicx merged 13 commits into
codex/rsc-prewarm-terminal-responsesfrom
codex/rsc-prewarm-promotion-delay-range
Aug 24, 2026
Merged

fix(build): validate CDN warm discovery and deploy inputs#3057
james-elicx merged 13 commits into
codex/rsc-prewarm-terminal-responsesfrom
codex/rsc-prewarm-promotion-delay-range

Conversation

@james-elicx

@james-elicx james-elicx commented Aug 22, 2026

Copy link
Copy Markdown
Member

Summary

Consolidates the path-discovery, ownership, encoding, MDX, and option validation previously split across #3047#3057.

  • validate App generateStaticParams() and Pages getStaticPaths() return shapes and parameter types before constructing cache keys
  • resolve ownership across the complete App/Pages union and exclude App route handlers and Pages API routes
  • preserve exact public path spelling, locale casing, percent-encoding case, and encoded unreserved characters used by Workers cache keys
  • reject relative, query-bearing, malformed-encoding, dot-segment, backslash, control-character, and otherwise URL-normalized paths
  • match localized Pages warm paths case-insensitively while retaining the canonical configured locale
  • require HTML build identity only when the selected CDN adapter declares that capability
  • query the built runtime for dynamic App, Pages, and MDX generators without rendering page responses locally
  • distinguish a missing generator from an invalid null result with an internal no-content sentinel
  • reject CLI and programmatic promotion delays above Node's maximum timer duration before upload

Scope

Only build-discovered CDN warm keys and warmup input validation. Runtime handler priority, middleware, TPR, development mode, local prerendering, and general cache behavior are unchanged.

Validation

The retained commits keep their focused generator, discovery, endpoint, i18n, URL-identity, deploy, and CLI coverage. The cumulative exact head passed all 67 checks, including strict deployed prewarming and Chromium reuse.

Consolidates #3047 through #3057. Stacked on #3046.

@pkg-pr-new

pkg-pr-new Bot commented Aug 22, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@vinext/cloudflare@3057
npm i https://pkg.pr.new/create-vinext-app@3057
npm i https://pkg.pr.new/@vinext/types@3057
npm i https://pkg.pr.new/vinext@3057

commit: 59d7cb2

@james-elicx
james-elicx force-pushed the codex/rsc-prewarm-promotion-delay-range branch from 95e868b to 59d7cb2 Compare August 22, 2026 03:20
@github-actions

Copy link
Copy Markdown
Contributor

Performance benchmarks

Compared 59d7cb2 against base 3e015c8 using alternating same-runner rounds. Next.js was unchanged and skipped.

0 improved · 0 regressed · 6 within ±1.5%

Scenario Framework Baseline Current Change
Client bundle size (gzip) vinext 142.2 KB 142.2 KB ⚫ 0.0%
Client entry size (gzip) vinext 129.5 KB 129.5 KB ⚫ -0.0%
Dev server cold start vinext 3.14 s 3.14 s ⚫ -0.0%
Production build time vinext 3.62 s 3.62 s ⚫ -0.1%
RSC entry closure size (gzip) vinext 116.1 KB 116.2 KB ⚫ +0.0%
Server bundle size (gzip) vinext 197.6 KB 197.7 KB ⚫ +0.0%

View detailed results and traces

🟢 improvement · 🔴 regression · ⚫ change below 1.5% · paired base/head

@github-actions

Copy link
Copy Markdown
Contributor
Example Preview Production Original
app-router-cloudflare preview production
pages-router-cloudflare preview production
app-router-playground preview production original
realworld-api-rest preview production
nextra-docs-template preview production
benchmarks preview production
hackernews preview production original
workers-cache preview production
web preview production
@james-elicx
james-elicx marked this pull request as ready for review August 24, 2026 17:58
@james-elicx
james-elicx merged commit 8759b65 into main Aug 24, 2026
81 of 82 checks passed
@james-elicx
james-elicx deleted the codex/rsc-prewarm-promotion-delay-range branch August 24, 2026 22:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant