WC-4866: Implement ctx.exports loopback in the Asset Worker#13354
Merged
petebacondarwin merged 23 commits intocloudflare:mainfrom Apr 14, 2026
Merged
WC-4866: Implement ctx.exports loopback in the Asset Worker#13354petebacondarwin merged 23 commits intocloudflare:mainfrom
petebacondarwin merged 23 commits intocloudflare:mainfrom
Conversation
🦋 Changeset detectedLatest commit: f77280b The changes in this PR will be included in the next version bump. Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Contributor
|
Codeowners approval required for this PR:
Show detailed file reviewers
|
create-cloudflare
@cloudflare/kv-asset-handler
miniflare
@cloudflare/pages-shared
@cloudflare/unenv-preset
@cloudflare/vite-plugin
@cloudflare/vitest-pool-workers
@cloudflare/workers-editor-shared
wrangler
commit: |
GregBrimble
reviewed
Apr 9, 2026
GregBrimble
reviewed
Apr 9, 2026
GregBrimble
reviewed
Apr 9, 2026
GregBrimble
reviewed
Apr 9, 2026
GregBrimble
reviewed
Apr 9, 2026
GregBrimble
reviewed
Apr 9, 2026
GregBrimble
reviewed
Apr 13, 2026
GregBrimble
reviewed
Apr 13, 2026
Contributor
|
Codeowners approval required for this PR:
Show detailed file reviewers |
…edForLocalDev from outer The outer entrypoint (AssetWorkerOuter) no longer needs dev-specific branches. Instead, the Vite plugin's CustomAssetWorker extends AssetWorkerInner directly, skipping the production loopback layer entirely for local development. This keeps AssetWorkerOuter as a clean dispatch-only layer for ctx.exports forwarding.
petebacondarwin
approved these changes
Apr 14, 2026
Contributor
petebacondarwin
left a comment
There was a problem hiding this comment.
I added a commit that removes the need to check for local dev overrides in the production worker code, and instead just changes how the vite plugin creates its own version of the asset worker.
workers-devprod
approved these changes
Apr 14, 2026
Contributor
workers-devprod
left a comment
There was a problem hiding this comment.
Codeowners reviews satisfied
Merged
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes https://jira.cfdata.org/browse/WC-4866
This PR introduces a loopback pattern to the Asset Worker. In production, every public method on the outer entrypoint (fetch, unstable_canFetch, unstable_getByETag, unstable_getByPathname, unstable_exists) is forwarded through ctx.exports.AssetWorkerEntrypoint to an inner entrypoint. This establishes the infrastructure needed for future cohort-based versioned deployments.
The Vite plugin subclasses AssetWorker and overrides unstable_exists and unstable_getByETag with dev-server-backed implementations. isSubclassedForLocalDev() detects this and skips loopback.
A picture of a cute animal (not mandatory, but encouraged)
