-
Notifications
You must be signed in to change notification settings - Fork 427
feat(cloudflare): share one Workers Cache entry across a static App page's queries #3465
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
james-elicx
merged 36 commits into
isr-query/13-response-store-identity
from
isr-query/14-workers-cache-query-free
Sep 28, 2026
Merged
Changes from all commits
Commits
Show all changes
36 commits
Select commit
Hold shift + click to select a range
02f78c9
feat(app-router): let a cacheability manifest path appear in several …
james-elicx d66f713
refactor(app-router): share completed-response admission's page manif…
james-elicx 3240ad5
feat(app-router): render Workers Cache probes in cache-candidate mode
james-elicx 5880041
feat(cloudflare): emit the Workers Cache request-stage manifest proje…
james-elicx 1440f99
feat(app-router): drop request-scoped RSC headers from shared respons…
james-elicx d5f0e1a
feat(app-router): drop the query from Workers Cache dispatches of sta…
james-elicx 34162b9
feat(app-router): report dynamic usage and config policy in cacheabil…
james-elicx 8f5024d
feat(cloudflare): mark traffic-picked probe paths and drop their rend…
james-elicx bb18bbe
feat(cloudflare): classify probed App page routes as Next.js's build …
james-elicx 7413254
feat(cloudflare): certify the RSC representations of static App pages
james-elicx 120bd99
test(cloudflare): assert that Workers Cache shares one entry across a…
james-elicx 51abdc3
fix(app-router): report a route that isn't statically generated as pa…
james-elicx 1dc0bd4
fix(cloudflare): list discovered paths only for static or SSG App pag…
james-elicx 5ef6b74
fix(cloudflare): drop only unlisted App page render failures from the…
james-elicx 46467af
fix(cloudflare): require the request-stage projection module for an A…
james-elicx 62513d4
test(app-router): keep the query of nonce and Pages data dispatches u…
james-elicx 6baacd6
test(cloudflare): cover traffic-picked-only, moved and non-renderer s…
james-elicx f806dbf
test(cloudflare): assert the shared Workers Cache entry carries no qu…
james-elicx cf6096c
fix(cloudflare): read discovered routes' runtime from their whole loa…
james-elicx c9a3376
fix(cloudflare): read an MDX page's segment config from its ESM blocks
james-elicx a2594a1
fix(cloudflare): ignore type-only generateStaticParams exports in dis…
james-elicx 509c38d
fix(cloudflare): judge an unlisted render failure under the route the…
james-elicx b0cef70
fix(build): keep the App request stage's chunks beside the server entry
james-elicx 7fcd06d
fix(cloudflare): require the Worker graph to import the request-stage…
james-elicx 42e6075
fix(cloudflare): keep MDX ESM open across blank lines until it parses
james-elicx 93c9edd
feat(app-router): authorize a runtime-checked representation at exact…
james-elicx f3dd187
fix(cloudflare): keep the loading shell warm when a dynamic API exclu…
james-elicx 71d9dd6
fix(cloudflare): read an MDX page's ESM from the MDX parser
james-elicx 8c2806a
fix(cloudflare): find the MDX parser beside an app's own MDX plugin
james-elicx 74453ea
fix(cloudflare): don't certify an unreadable MDX route's static fallback
james-elicx 103d869
fix(cloudflare): keep a destination's build-time listing fixed while …
james-elicx cc88a39
fix(cloudflare): keep paired representations when a moved unlisted fa…
james-elicx 60e121d
fix(cloudflare): leave a static page's loading shell runtime-checked
james-elicx 738f57e
fix(cloudflare): keep discovery's unlisted state for a literal App pa…
james-elicx fa5a1dc
fix(cloudflare): key a path's listing by the route that owns it at ru…
james-elicx 7801a78
test(cloudflare): share the Suspense useSearchParams() page across qu…
james-elicx File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[P2] Verify that the Worker graph imports the projection
The build plugin emits this asset for every App build even when no runtime module imports it, so file existence does not establish that the request stage can read the projection. A stale or mismatched artifact can pass this check, get overwritten successfully, and still serve full-query dispatches while the response stage admits query-free identities. Require static reachability from the Worker entry, analogous to
assertManifestModuleReachable().There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 9513136. The writer now requires the projection to exist and to be statically reachable from the Wrangler main module. This exposed a real bug: the request-stage chunks were emitted under
_next/static/, so their projection import pointed at a file that doesn't exist. That is fixed in 77154b9.