05714f8 Thanks @emily-shen! - Add a no-op local explorer worker, which is gated by the experimental flag X_LOCAL_EXPLORER.#12052 9c76067 Thanks @edmundhung! - Fix dev server crash on WebSocket client disconnect
When a WebSocket client disconnects while an upgrade request is being processed, the server would crash with an unhandled ECONNRESET error. The fix adds an error handler to the socket at the start of the upgrade process.
Updated dependencies [a0a9ef6, ad4666c, 014e7aa, e414f05, 77e82d2, f08ef21, 0641e6c, eacedba, 05714f8, e8b2ef5, bbd8a5e]:
#11113 bba0968 Thanks @AmirSa12! - Add wrangler complete command for shell completion scripts (bash, zsh, powershell)
Usage:
# Bash
wrangler complete bash >> ~/.bashrc
# Zsh
wrangler complete zsh >> ~/.zshrc
# Fish
wrangler complete fish >> ~/.config/fish/completions/wrangler.fish
# PowerShell
wrangler complete powershell > $PROFILE
@bomb.sh/tab library for cross-shell compatibilityexperimental_getWranglerCommands() API#11893 f9e8a45 Thanks @NuroDev! - wrangler types now generates per-environment TypeScript interfaces when named environments exist in your configuration.
When your configuration has named environments (an env object), wrangler types now generates both:
StagingEnv, ProductionEnv) containing only the bindings explicitly declared in each environment, plus inherited secretsEnv interface with all bindings from all environments (top-level + named environments), where:
KVNamespace | R2Bucket)However, if your config does not contain any environments, or you manually specify an environment via --env, wrangler types will continue to generate a single interface as before.
Example:
Given the following wrangler.jsonc:
{
"name": "my-worker",
"kv_namespaces": [
{
"binding": "SHARED_KV",
"id": "abc123",
},
],
"env": {
"staging": {
"kv_namespaces": [
{ "binding": "SHARED_KV", "id": "staging-kv" },
{ "binding": "STAGING_CACHE", "id": "staging-cache" },
],
},
},
}
Running wrangler types will generate:
declare namespace Cloudflare {
interface StagingEnv {
SHARED_KV: KVNamespace;
STAGING_CACHE: KVNamespace;
}
interface Env {
SHARED_KV: KVNamespace; // Required: in all environments
STAGING_CACHE?: KVNamespace; // Optional: only in staging
}
}
interface Env extends Cloudflare.Env {}
#12030 614bbd7 Thanks @jbwcloudflare! - Fix wrangler pages project validate to respect file count limits from CF_PAGES_UPLOAD_JWT
#11993 788bf78 Thanks @dependabot! - chore: update dependencies of "miniflare", "wrangler"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| workerd | 1.20260116.0 | 1.20260120.0 |
#12039 1375577 Thanks @dimitropoulos! - Fixed the flag casing for the time period flag for the d1 insights command.
#12026 c3407ad Thanks @dario-piotrowicz! - Fix wrangler setup not automatically selecting workers as the target for new SvelteKit apps
The Sveltekit adapter:cloudflare adapter now accepts two different targets workers or pages. Since the wrangler auto configuration only targets workers, wrangler should instruct the adapter to use the workers variant. (The auto configuration process would in any case not work if the user were to target pages.)
Updated dependencies [788bf78, ae108f0]:
#11875 ae2459c Thanks @bxff! - Skip shortcut registration in non-TTY environments
Previously, registering keyboard shortcuts in non-TTY environments (e.g., Turborepo) caused Miniflare ERR_DISPOSED errors during prerendering. Shortcuts are now only registered when running in an interactive terminal.
Updated dependencies [614bbd7, 788bf78, 1375577, ae108f0, bba0968, c3407ad, f9e8a45]:
#11993 788bf78 Thanks @dependabot! - chore: update dependencies of "miniflare", "wrangler"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| workerd | 1.20260116.0 | 1.20260120.0 |
788bf78]:
#11878 e84e8fa Thanks @dario-piotrowicz! - Fix relative path computation when the root folder name appears multiple times in a path
Previously, the logic assumed the root folder appeared exactly once in the path. When the root folder name appeared more than once, file modifications were not correctly detected.
For example, if the root folder is my-worker, a path like /my-worker/my-worker/util.js would incorrectly return / instead of /my-worker/util.js.
2aa769c Thanks @emily-shen! - Add a custom eslint rule that checks for unsafe command execution#9396 75386b1 Thanks @gnekich! - Fix wrangler login with custom callback-host/callback-port
The Cloudflare OAuth API always requires the redirect_uri to be localhost:8976. However, sometimes the Wrangler OAuth server needed to listen on a different host/port, for example when running from inside a container. We were previously incorrectly setting the redirect_uri to the configured callback host/port, but it needs to be up to the user to map localhost:8976 to the Wrangler OAuth server in the container.
Example:
You might run Wrangler inside a docker container like this: docker run -p 8989:8976 <image>, which forwards port 8976 on your host to 8989 inside the container.
Then inside the container, run wrangler login --callback-host=0.0.0.0 --callback-port=8989
The OAuth link still has a redirect_uri set tolocalhost:8976. For example https://dash.cloudflare.com/oauth2/auth?...&redirect_uri=http%3A%2F%2Flocalhost%3A8976%2Foauth%2Fcallback&...
However the redirect to localhost:8976 is then forwarded to the Wrangler OAuth server inside your container, allowing the login to complete.
#11925 8e4a0e5 Thanks @dependabot! - chore: update dependencies of "miniflare", "wrangler"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| workerd | 1.20260114.0 | 1.20260115.0 |
#11942 133bf95 Thanks @penalosa! - chore: update dependencies of "miniflare", "wrangler"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| workerd | 1.20260115.0 | 1.20260116.0 |
#11922 93d8d78 Thanks @dario-piotrowicz! - Improve telemetry errors being sent to Sentry by wrangler init when it delegates to C3 by ensuring that they contain the output of the C3 execution.
#11940 69ff962 Thanks @penalosa! - Show helpful messages for file not found errors (ENOENT)
When users encounter file not found errors, Wrangler now displays a helpful message with the missing file path and common causes, instead of reporting to Sentry.
#11904 22727c2 Thanks @danielrs! - Fix false positive infinite loop detection for exact path redirects
Fixed an issue where the redirect validation incorrectly flagged exact path redirects like / /index.html 200 as infinite loops. This was particularly problematic when html_handling is set to "none", where such redirects are valid.
The fix makes the validation more specific to only block wildcard patterns (like /* /index.html) that would actually cause infinite loops, while allowing exact path matches that are valid in certain configurations.
Fixes: https://github.com/cloudflare/workers-sdk/issues/11824
#11946 fa39a73 Thanks @MattieTK! - Fix configFileName returning wrong filename for .jsonc config files
Previously, users with a wrangler.jsonc config file would see error messages and hints referring to wrangler.json instead of wrangler.jsonc. This was because the configFormat function collapsed both .json and .jsonc files into a single "jsonc" value, losing the distinction between them.
Now configFormat returns "json" for .json files and "jsonc" for .jsonc files, allowing configFileName to return the correct filename for each format.
#11968 4ac7c82 Thanks @MattieTK! - fix: include version components in command event metrics
Adds wranglerMajorVersion, wranglerMinorVersion, and wranglerPatchVersion to command events (wrangler command started, wrangler command completed, wrangler command errored). These properties were previously only included in adhoc events.
#11940 69ff962 Thanks @penalosa! - Improve error message when creating duplicate KV namespace
When attempting to create a KV namespace with a title that already exists, Wrangler now provides a clear, user-friendly error message instead of the generic API error. The new message explains that the namespace already exists and suggests running wrangler kv namespace list to see existing namespaces with their IDs, or choosing a different namespace name.
#11962 029531a Thanks @dario-piotrowicz! - Cache chosen account in memory to avoid repeated prompts
When users have multiple accounts and no node_modules directory exists for file caching, Wrangler (run via npx and equivalent commands) would prompt for account selection multiple times during a single command. Now the selected account is also stored in process memory, preventing duplicate prompts and potential issues from inconsistent account choices.
#11964 d58fbd1 Thanks @dario-piotrowicz! - Make name the positional argument for wrangler delete instead of script
The script argument was meaningless for the delete command since it deletes by worker name, not by entry point path. The name argument is now accepted as a positional argument, allowing users to run wrangler delete my-worker instead of wrangler delete --name my-worker. The script argument is now hidden but still accepted for backwards compatibility.
#11967 202c59e Thanks @emily-shen! - chore: update undici
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| undici | 7.14.0 | 7.18.2 |
#11940 69ff962 Thanks @penalosa! - Improve error handling for Vite config transformations
Replace assertions with proper error handling when transforming Vite configs. When Wrangler encounters a Vite config that uses a function or lacks a plugins array, it now provides clear, actionable error messages instead of crashing with assertion failures. The check function gracefully skips incompatible configs with debug logging.
Updated dependencies [8e4a0e5, 133bf95, 202c59e, 133bf95, 25e2c60]:
#11861 27ea230 Thanks @dependabot! - chore: update dependencies of "create-cloudflare"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| create-vike | 0.0.558 | 0.0.564 |
#11862 6bd2ab4 Thanks @dependabot! - chore: update dependencies of "create-cloudflare"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| create-analog | 2.1.3 | 2.2.1 |
#11864 283a9e4 Thanks @dependabot! - chore: update dependencies of "create-cloudflare"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| create-rwsdk | 3.1.2 | 3.1.3 |
#11865 8522a8b Thanks @dependabot! - chore: update dependencies of "create-cloudflare"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| create-react-router | 7.11.0 | 7.12.0 |
#11915 20467fd Thanks @dependabot! - chore: update dependencies of "create-cloudflare"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| create-waku | 0.12.5-1.0.0-alpha.1-0 | 0.12.5-1.0.0-alpha.2-0 |
#11961 844975f Thanks @dependabot! - chore: update dependencies of "create-cloudflare"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| create-analog | 2.2.1 | 2.2.2 |
#11952 c09dbd7 Thanks @dario-piotrowicz! - Bump the version of @cloudflare/vitest-pool-workers in the hello-world templates from ^0.8.19 to ^0.12.4
The version of the @cloudflare/vitest-pool-workers in the hello-world templates is currently ^0.8.19, since the package is pre v1, the Caret syntax only installs the latest 0.8.x version of the package, which is a bit outdated. So the changes here manually keep the package more up to date.
#11967 202c59e Thanks @emily-shen! - chore: update undici
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| undici | 7.14.0 | 7.18.2 |
#11942 133bf95 Thanks @penalosa! - Add support for Email Sending API's MessageBuilder interface in local mode
Miniflare now supports the simplified MessageBuilder interface for sending emails, alongside the existing EmailMessage support.
Example usage:
await env.EMAIL.send({
from: { name: "Alice", email: "alice@example.com" },
to: ["bob@example.com"],
subject: "Hello",
text: "Plain text version",
html: "<h1>HTML version</h1>",
attachments: [
{
disposition: "attachment",
filename: "report.pdf",
type: "application/pdf",
content: pdfData,
},
],
});
In local mode, email content (text, HTML, attachments) is stored to temporary files that you can open in your editor or browser for inspection. File paths are logged to the console when emails are sent.
#11925 8e4a0e5 Thanks @dependabot! - chore: update dependencies of "miniflare", "wrangler"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| workerd | 1.20260114.0 | 1.20260115.0 |
#11942 133bf95 Thanks @penalosa! - chore: update dependencies of "miniflare", "wrangler"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| workerd | 1.20260115.0 | 1.20260116.0 |
#11967 202c59e Thanks @emily-shen! - chore: update undici
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| undici | 7.14.0 | 7.18.2 |
#11946 fa39a73 Thanks @MattieTK! - Fix configFileName returning wrong filename for .jsonc config files
Previously, users with a wrangler.jsonc config file would see error messages and hints referring to wrangler.json instead of wrangler.jsonc. This was because the configFormat function collapsed both .json and .jsonc files into a single "jsonc" value, losing the distinction between them.
Now configFormat returns "json" for .json files and "jsonc" for .jsonc files, allowing configFileName to return the correct filename for each format.
#11967 202c59e Thanks @emily-shen! - chore: update undici
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| undici | 7.14.0 | 7.18.2 |
Updated dependencies [75386b1, 8e4a0e5, 133bf95, 93d8d78, 69ff962, 22727c2, fa39a73, 4ac7c82, 69ff962, 029531a, d58fbd1, 202c59e, 133bf95, 25e2c60, 69ff962]:
#11951 77fdc18 Thanks @jamesopstad! - Add validation for environment name collisions and improve error message for missing environments.
Updated dependencies [75386b1, 8e4a0e5, 133bf95, 93d8d78, 69ff962, 22727c2, fa39a73, 4ac7c82, 69ff962, 029531a, d58fbd1, 202c59e, 133bf95, 25e2c60, 69ff962]: