Releases: cloudflare/workers-sdk
Release list
wrangler@4.111.0
Minor Changes
-
#14602
7692a61Thanks @edmundhung! - Add Durable Object eviction support tocreateTestHarnessYou can now gracefully evict a running Durable Object by class name or binding name to verify how it recovers after its instance is torn down:
const worker = server.getWorker(); await worker.evictDurableObject("Counter", { name: "user-123" });
-
#14620
899c297Thanks @penalosa! - Remove support for service environments and thelegacy_envconfiguration fieldService environments have been removed. Wrangler now always deploys each environment as its own Worker named
<name>-<environment>, which matches the behaviour of the previous default (legacy_env = true). The--legacy-envCLI flag has been removed, and thelegacy_envconfiguration field is no longer supported — including it in your configuration file will now raise an error.Because
legacy_env = truewas already the default, removing the field will not change how your Worker is deployed. If you were relying on service environments (legacy_env = false), each environment will now be deployed as a standalone Worker instead of as an environment of a single Worker. See https://developers.cloudflare.com/workers/wrangler/environments/ for more information. -
#14652
317ce1fThanks @jamesopstad! - Append Workers runtime types to the generated types under--x-new-config, with a newdev.types.includeRuntimeoptionWhen running
wrangler dev --x-new-config, the runtime types generated from your compatibility date and flags are now appended toworker-configuration.d.ts, alongside the types inferred fromcloudflare.config.ts. This is controlled by a newdev.types.includeRuntimeoption inwrangler.config.ts, which defaults totrue.This applies to the experimental new config path only and does not change type generation for existing
wrangler.jsonc/wrangler.tomlprojects.
Patch Changes
-
#14627
ed33326Thanks @tpmmorris! - Add convenient logging for worker emails in the project directory. In addition to the system's temp directory, logs for emails sent by workers are also written to a local temp directory defined by the calling process, e.g for an simple text email sent via Wrangler this is.wrangler/tmp/email/<session>/email-text/<message-uuid>.txt(and related files) in the project root. Callers of Miniflare can control this location via the newdefaultProjectTmpPathoption, which Wrangler and Vite plugin now set automatically. -
#14642
018574bThanks @dependabot! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
Dependency From To @cloudflare/workers-types ^5.20260708.1 ^5.20260710.1 workerd 1.20260708.1 1.20260710.1 -
#14588
eb99ab1Thanks @emily-shen! - fix: Respect auth profiles when using remote bindings in the Vite pluginAuth profiles (configured via
wrangler auth createandwrangler auth activate) were previously being ignored when using remote bindings with the Vite plugin. This is now fixed.Note that the profile directory is resolved based on the Vite project root.
-
#14658
cdf3148Thanks @ATKasem! - Fixwrangler devcorrupting external hostnames in proxied response headersWhen a Worker was run with
routesconfigured,wrangler dev's proxy rewrote the host inside URL-valued headers (such asLocation) using a boundary-less substring replace. Any host that merely contained the route host as a substring was corrupted — e.g. with anexample.comroute, aLocation: https://books.example.com/read/ch01header becamehttps://books.127.0.0.1:8788/read/ch01, andhttps://myexample.com/pathbecamehttps://my127.0.0.1:8788/path.The proxy now only rewrites absolute URLs whose host is exactly the proxied host, swapping the scheme and host together (which also fixes a related case where an
https:scheme survived on a plain-HTTP dev address). Unrelated hosts and subdomains pass through untouched. -
#14601
3015320Thanks @MattieTK! - Improve the agent-facing--forceguidance for Pages-to-Workers delegationWhen an AI agent opts out of the Pages-to-Workers delegation by passing
--forcetowrangler pages deployorwrangler pages project create, Wrangler now prints a notice at the end of a successful command explaining that--forceonly needs to be passed once: the project then exists, so subsequent commands are no longer delegated and do not need the flag. -
#14569
9da77acThanks @dario-piotrowicz! - Suggest similar commands when a typo is detectedWhen an unknown command or subcommand is entered, wrangler now suggests the closest matching command if one exists within a reasonable edit distance. For example, running
wrangler whoamiowill displayDid you mean "wrangler whoami"?, and runningwrangler kv namespasewill displayDid you mean "wrangler kv namespace"?. -
Updated dependencies [
7692a61,ed33326,018574b,7692a61]:- miniflare@4.20260710.0
miniflare@4.20260710.0
Minor Changes
-
#14602
7692a61Thanks @edmundhung! - AddunsafeEvictDurableObject()for targeted Durable Object evictionThis lets users verify how a Durable Object recovers after its instance is torn down.
-
#14602
7692a61Thanks @edmundhung! - AllowlistDurableObjectIds()to accept Durable Object class names as well as binding names.
Patch Changes
-
#14627
ed33326Thanks @tpmmorris! - Add convenient logging for worker emails in the project directory. In addition to the system's temp directory, logs for emails sent by workers are also written to a local temp directory defined by the calling process, e.g for an simple text email sent via Wrangler this is.wrangler/tmp/email/<session>/email-text/<message-uuid>.txt(and related files) in the project root. Callers of Miniflare can control this location via the newdefaultProjectTmpPathoption, which Wrangler and Vite plugin now set automatically. -
#14642
018574bThanks @dependabot! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
Dependency From To @cloudflare/workers-types ^5.20260708.1 ^5.20260710.1 workerd 1.20260708.1 1.20260710.1
create-cloudflare@2.70.11
Patch Changes
-
#14660
a6abca6Thanks @dependabot! - Update dependencies of "create-cloudflare"The following dependency versions have been updated:
Dependency From To create-analog 2.6.2 2.6.3 -
#14662
03c7b5fThanks @dependabot! - Update dependencies of "create-cloudflare"The following dependency versions have been updated:
Dependency From To @angular/create 22.0.5 22.0.6 -
#14663
092b1b4Thanks @dependabot! - Update dependencies of "create-cloudflare"The following dependency versions have been updated:
Dependency From To sv 0.16.1 0.16.2 -
#14664
0aa62abThanks @dependabot! - Update dependencies of "create-cloudflare"The following dependency versions have been updated:
Dependency From To create-vike 0.0.660 0.0.662 -
#14653
e812d2eThanks @dario-piotrowicz! - Pass--no-installto@tanstack/cli createduring scaffoldingPreviously, the TanStack Start template did not pass
--no-installto the framework CLI, causing dependencies to be installed twice: once by@tanstack/cli createand again by C3's own install step. This aligns the TanStack Start template with other framework templates that already skip the framework CLI's install.
@cloudflare/workers-utils@0.27.0
Minor Changes
-
#14630
42df9bbThanks @penalosa! - Extract the Cloudflare CLI auth layer into a product-agnostic@cloudflare/workers-authcoreThe OAuth login/logout/refresh, credential storage, config cache, and account-selection machinery is now shared behind an
AuthProductdescriptor, with a thin per-CLI entrypoint on top.@cloudflare/workers-auth/wrangler(createWranglerAuth) preserves wrangler's existing behaviour, and a new@cloudflare/workers-auth/cf(createCfAuth) adds thecfCLI: its own OAuth app registration (client id, callback port, branded consent pages, scoped-token-only auth), a dedicated scope catalog, JSON config files under~/.config/cloudflare, and an isolated config-cache namespace socflogin/logout never purges wrangler's cache.As part of the extraction,
@cloudflare/workers-utilsnow exports the sharedcreateConfigCache(with anamespaceoption),openInBrowser, and theisInteractive/isNonInteractiveOrCI/isCITTY-and-CI detection helpers (each taking the caller's logger as a parameter rather than relying on a singleton). These read a bundledci-info, so consumers that need to fake CI in their tests should mock this package's helpers rather thanci-infodirectly.
@cloudflare/workers-auth@0.5.0
Minor Changes
-
#14630
42df9bbThanks @penalosa! - Extract the Cloudflare CLI auth layer into a product-agnostic@cloudflare/workers-authcoreThe OAuth login/logout/refresh, credential storage, config cache, and account-selection machinery is now shared behind an
AuthProductdescriptor, with a thin per-CLI entrypoint on top.@cloudflare/workers-auth/wrangler(createWranglerAuth) preserves wrangler's existing behaviour, and a new@cloudflare/workers-auth/cf(createCfAuth) adds thecfCLI: its own OAuth app registration (client id, callback port, branded consent pages, scoped-token-only auth), a dedicated scope catalog, JSON config files under~/.config/cloudflare, and an isolated config-cache namespace socflogin/logout never purges wrangler's cache.As part of the extraction,
@cloudflare/workers-utilsnow exports the sharedcreateConfigCache(with anamespaceoption),openInBrowser, and theisInteractive/isNonInteractiveOrCI/isCITTY-and-CI detection helpers (each taking the caller's logger as a parameter rather than relying on a singleton). These read a bundledci-info, so consumers that need to fake CI in their tests should mock this package's helpers rather thanci-infodirectly.
Patch Changes
- Updated dependencies [
42df9bb]:- @cloudflare/workers-utils@0.27.0
@cloudflare/vitest-pool-workers@0.18.5
@cloudflare/vite-plugin@1.45.0
Minor Changes
-
#14652
317ce1fThanks @jamesopstad! - Append Workers runtime types to the generated types when usingexperimental.newConfig, with a newtypes.includeRuntimeoptionWhen using the experimental new config (
cloudflare.config.ts), the plugin now appends the Workers runtime types (generated from your compatibility date and flags) toworker-configuration.d.ts, alongside the types inferred from your config. This is controlled by a newexperimental.newConfig.types.includeRuntimeoption, which defaults totrue.As part of this change, types are now generated only during
vite dev(notvite build), since compatibility settings are resolved from the active dev session. This affects the experimental new config path only.
Patch Changes
-
#14588
eb99ab1Thanks @emily-shen! - fix: Respect auth profiles when using remote bindings in the Vite pluginAuth profiles (configured via
wrangler auth createandwrangler auth activate) were previously being ignored when using remote bindings with the Vite plugin. This is now fixed.Note that the profile directory is resolved based on the Vite project root.
-
#14645
cbdd107Thanks @jamesopstad! - Fix load time crash on Node.js versions earlier than 22.15The plugin eagerly imported
registerHooksfromnode:module, which only exists on Node.js v22.15.0+.registerHooksis now read lazily, meaning that missing support is only surfaced when usingexperimental.newConfig. -
Updated dependencies [
7692a61,ed33326,018574b,eb99ab1,cdf3148,7692a61,7692a61,3015320,899c297,9da77ac,317ce1f]:- miniflare@4.20260710.0
- wrangler@4.111.0