ReleaseCloudflare (Workers AI)Cloudflare (Workers AI)published Jun 23, 2026seen 2d

cloudflare/workers-sdk wrangler@4.104.0

cloudflare/workers-sdk

Open original ↗

Captured source

source ↗
published Jun 23, 2026seen 2dcaptured 2dhttp 200method plain

wrangler@4.104.0

Repository: cloudflare/workers-sdk

Tag: wrangler@4.104.0

Published: 2026-06-23T15:39:52Z

Prerelease: no

Release notes:

Minor Changes

Tests can now access the full env object for a Worker with await server.getWorker().getEnv(), including vars, secrets, and bindings.

Patch Changes

The following dependency versions have been updated:

| Dependency | From | To | | ---------- | ------------ | ------------ | | workerd | 1.20260617.1 | 1.20260619.1 |

The following dependency versions have been updated:

| Dependency | From | To | | ---------- | ------------ | ------------ | | workerd | 1.20260619.1 | 1.20260621.1 |

The following dependency versions have been updated:

| Dependency | From | To | | ---------- | ------------ | ------------ | | workerd | 1.20260621.1 | 1.20260623.1 |

Module rules assign module _types_ to imported files — they are not include/exclude filters. Also, setting fallthrough: false in a rule will cause subsequent rules to become inactive. Previously, when find_additional_modules walked the filesystem and discovered a file whose only matching rule is inactive, Wrangler would throw an error and fail the build.

This meant that adding a user rule like the one below would break the build for any .txt, .html, .sql, .bin or .wasm file that didn't match the user-supplied globs but lived somewhere under the module root:

// wrangler.json
{
"rules": [
{
"type": "Text",
"globs": ["html/includeme.html"],
"fallthrough": false
}
]
}

Discovered files that only match an inactive rule are now silently skipped (a debug-level log records each skip for troubleshooting), so users can use fallthrough: false to narrow the set of files attached to their Worker without having to delete or move untouched files on disk.

The direct-import path is unchanged: importing a file in code that only matches an inactive rule is still a hard error, because the imported file genuinely needs a defined module type.

Fixes #14257.

Both wrangler dev and the Cloudflare Vite plugin no longer force the proxy-everything sidecar image to pull as linux/amd64, allowing Docker to select the native image from the multi-platform manifest. Set MINIFLARE_CONTAINER_EGRESS_IMAGE_PLATFORM to force a specific platform when needed.

  • #14362 `2a02858` Thanks @sherryliu-lsy! - Don't require the private credential when reusing an existing Secrets Store secret in containers registries configure

wrangler containers registries configure now checks whether the target Secrets Store secret already exists before resolving the private credential. When the secret already exists it is reused by reference, so the private credential no longer needs to be supplied (via stdin in non-interactive mode, or via a prompt interactively). This applies to all external registries.

The new-secret path is unchanged: the credential is still required and stored. The only visible interactive change is that the secret prompt now appears last and only when a new secret is being created.

Notability

notability 2.0/10

Routine version release of a dev tool.