Skip to content

Releases: cloudflare/workers-sdk

wrangler@4.111.0

Choose a tag to compare

@workers-devprod workers-devprod released this 15 Jul 06:25
b449bb0

Minor Changes

  • #14602 7692a61 Thanks @edmundhung! - Add Durable Object eviction support to createTestHarness

    You 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 899c297 Thanks @penalosa! - Remove support for service environments and the legacy_env configuration field

    Service 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-env CLI flag has been removed, and the legacy_env configuration field is no longer supported — including it in your configuration file will now raise an error.

    Because legacy_env = true was 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 317ce1f Thanks @jamesopstad! - Append Workers runtime types to the generated types under --x-new-config, with a new dev.types.includeRuntime option

    When running wrangler dev --x-new-config, the runtime types generated from your compatibility date and flags are now appended to worker-configuration.d.ts, alongside the types inferred from cloudflare.config.ts. This is controlled by a new dev.types.includeRuntime option in wrangler.config.ts, which defaults to true.

    This applies to the experimental new config path only and does not change type generation for existing wrangler.jsonc/wrangler.toml projects.

Patch Changes

  • #14627 ed33326 Thanks @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 new defaultProjectTmpPath option, which Wrangler and Vite plugin now set automatically.

  • #14642 018574b Thanks @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 eb99ab1 Thanks @emily-shen! - fix: Respect auth profiles when using remote bindings in the Vite plugin

    Auth profiles (configured via wrangler auth create and wrangler 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 cdf3148 Thanks @ATKasem! - Fix wrangler dev corrupting external hostnames in proxied response headers

    When a Worker was run with routes configured, wrangler dev's proxy rewrote the host inside URL-valued headers (such as Location) using a boundary-less substring replace. Any host that merely contained the route host as a substring was corrupted — e.g. with an example.com route, a Location: https://books.example.com/read/ch01 header became https://books.127.0.0.1:8788/read/ch01, and https://myexample.com/path became https://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 3015320 Thanks @MattieTK! - Improve the agent-facing --force guidance for Pages-to-Workers delegation

    When an AI agent opts out of the Pages-to-Workers delegation by passing --force to wrangler pages deploy or wrangler pages project create, Wrangler now prints a notice at the end of a successful command explaining that --force only needs to be passed once: the project then exists, so subsequent commands are no longer delegated and do not need the flag.

  • #14569 9da77ac Thanks @dario-piotrowicz! - Suggest similar commands when a typo is detected

    When 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 whoamio will display Did you mean "wrangler whoami"?, and running wrangler kv namespase will display Did you mean "wrangler kv namespace"?.

  • Updated dependencies [7692a61, ed33326, 018574b, 7692a61]:

    • miniflare@4.20260710.0

miniflare@4.20260710.0

Choose a tag to compare

@workers-devprod workers-devprod released this 15 Jul 06:25
b449bb0

Minor Changes

  • #14602 7692a61 Thanks @edmundhung! - Add unsafeEvictDurableObject() for targeted Durable Object eviction

    This lets users verify how a Durable Object recovers after its instance is torn down.

  • #14602 7692a61 Thanks @edmundhung! - Allow listDurableObjectIds() to accept Durable Object class names as well as binding names.

Patch Changes

  • #14627 ed33326 Thanks @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 new defaultProjectTmpPath option, which Wrangler and Vite plugin now set automatically.

  • #14642 018574b Thanks @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

Choose a tag to compare

@workers-devprod workers-devprod released this 15 Jul 06:25
b449bb0

Patch Changes

  • #14660 a6abca6 Thanks @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 03c7b5f Thanks @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 092b1b4 Thanks @dependabot! - Update dependencies of "create-cloudflare"

    The following dependency versions have been updated:

    Dependency From To
    sv 0.16.1 0.16.2
  • #14664 0aa62ab Thanks @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 e812d2e Thanks @dario-piotrowicz! - Pass --no-install to @tanstack/cli create during scaffolding

    Previously, the TanStack Start template did not pass --no-install to the framework CLI, causing dependencies to be installed twice: once by @tanstack/cli create and 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

Choose a tag to compare

@workers-devprod workers-devprod released this 15 Jul 06:25
b449bb0

Minor Changes

  • #14630 42df9bb Thanks @penalosa! - Extract the Cloudflare CLI auth layer into a product-agnostic @cloudflare/workers-auth core

    The OAuth login/logout/refresh, credential storage, config cache, and account-selection machinery is now shared behind an AuthProduct descriptor, 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 the cf CLI: 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 so cf login/logout never purges wrangler's cache.

    As part of the extraction, @cloudflare/workers-utils now exports the shared createConfigCache (with a namespace option), openInBrowser, and the isInteractive / isNonInteractiveOrCI / isCI TTY-and-CI detection helpers (each taking the caller's logger as a parameter rather than relying on a singleton). These read a bundled ci-info, so consumers that need to fake CI in their tests should mock this package's helpers rather than ci-info directly.

@cloudflare/workers-shared@0.19.8

Choose a tag to compare

@workers-devprod workers-devprod released this 15 Jul 06:25
b449bb0

Patch Changes

  • #14677 205a260 Thanks @WillTaylorDev! - Emit servedBy and requestKind analytics from the Workers Assets asset worker

    Real asset hits and SPA or 404 fallbacks previously logged the same fields. The asset worker now records what served the response and whether the request was a navigation or subresource.

@cloudflare/workers-auth@0.5.0

Choose a tag to compare

@workers-devprod workers-devprod released this 15 Jul 06:25
b449bb0

Minor Changes

  • #14630 42df9bb Thanks @penalosa! - Extract the Cloudflare CLI auth layer into a product-agnostic @cloudflare/workers-auth core

    The OAuth login/logout/refresh, credential storage, config cache, and account-selection machinery is now shared behind an AuthProduct descriptor, 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 the cf CLI: 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 so cf login/logout never purges wrangler's cache.

    As part of the extraction, @cloudflare/workers-utils now exports the shared createConfigCache (with a namespace option), openInBrowser, and the isInteractive / isNonInteractiveOrCI / isCI TTY-and-CI detection helpers (each taking the caller's logger as a parameter rather than relying on a singleton). These read a bundled ci-info, so consumers that need to fake CI in their tests should mock this package's helpers rather than ci-info directly.

Patch Changes

  • Updated dependencies [42df9bb]:
    • @cloudflare/workers-utils@0.27.0

@cloudflare/vitest-pool-workers@0.18.5

Choose a tag to compare

@workers-devprod workers-devprod released this 15 Jul 06:25
b449bb0

Patch Changes

@cloudflare/vite-plugin@1.45.0

Choose a tag to compare

@workers-devprod workers-devprod released this 15 Jul 06:25
b449bb0

Minor Changes

  • #14652 317ce1f Thanks @jamesopstad! - Append Workers runtime types to the generated types when using experimental.newConfig, with a new types.includeRuntime option

    When using the experimental new config (cloudflare.config.ts), the plugin now appends the Workers runtime types (generated from your compatibility date and flags) to worker-configuration.d.ts, alongside the types inferred from your config. This is controlled by a new experimental.newConfig.types.includeRuntime option, which defaults to true.

    As part of this change, types are now generated only during vite dev (not vite build), since compatibility settings are resolved from the active dev session. This affects the experimental new config path only.

Patch Changes

  • #14588 eb99ab1 Thanks @emily-shen! - fix: Respect auth profiles when using remote bindings in the Vite plugin

    Auth profiles (configured via wrangler auth create and wrangler 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 cbdd107 Thanks @jamesopstad! - Fix load time crash on Node.js versions earlier than 22.15

    The plugin eagerly imported registerHooks from node:module, which only exists on Node.js v22.15.0+. registerHooks is now read lazily, meaning that missing support is only surfaced when using experimental.newConfig.

  • Updated dependencies [7692a61, ed33326, 018574b, eb99ab1, cdf3148, 7692a61, 7692a61, 3015320, 899c297, 9da77ac, 317ce1f]:

    • miniflare@4.20260710.0
    • wrangler@4.111.0

@cloudflare/runtime-types@0.0.2

Choose a tag to compare

@workers-devprod workers-devprod released this 15 Jul 06:25
b449bb0

Patch Changes

@cloudflare/pages-shared@0.13.157

Choose a tag to compare

@workers-devprod workers-devprod released this 15 Jul 06:25
b449bb0

Patch Changes