Skip to content

chore(deps): update dependency wrangler to ^4.116.0 - #2399

Open
renovate[bot] wants to merge 2 commits into
mainfrom
renovate/wrangler-4.x
Open

chore(deps): update dependency wrangler to ^4.116.0#2399
renovate[bot] wants to merge 2 commits into
mainfrom
renovate/wrangler-4.x

Conversation

@renovate

@renovate renovate Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
wrangler (source) ^4.107.0^4.116.0 age confidence

Release Notes

cloudflare/workers-sdk (wrangler)

v4.116.0

Compare Source

Minor Changes
  • #​14907 beec0fb Thanks @​NuroDev! - Avoid Worker and workers.dev naming prompts in agent-driven deploys

    Wrangler now derives the Worker name from the project and automatically registers the same project-derived workers.dev account subdomain on a first deploy when running in a detected agent environment. The deploy output explains how to change both names.

  • #​14905 b21eac2 Thanks @​jamesopstad! - The experimental build output directory now includes the Worker's configuration at .cloudflare/output/v0/workers/default/config.json instead of .cloudflare/output/v0/workers/<worker-name>/worker.config.json

  • #​14893 bb09f1b Thanks @​apeacock1991! - Graduate wrangler check startup from alpha and show bundle size and a local timing summary

    The command no longer prints an alpha warning. It now reports its local profile window, sampled active, garbage collection, and idle time alongside the raw and compressed bundle sizes. The existing measurement warning continues to distinguish these local measurements from startup time measured on Cloudflare.

  • #​14685 01d7020 Thanks @​edmundhung! - Add support for dispatching email handlers with createTestHarness

    You can now call server.getWorker().email({ from, to, raw }) to dispatch directly to a Worker's email() handler and inspect its outcome, rejection reason, forwarded messages, and replies.

    const result = await server.getWorker().email({
      from: "sender@example.com",
      to: "inbox@example.com",
      raw: [
        "From: Sender <sender@example.com>",
        "To: Inbox <inbox@example.com>",
        "Message-ID: <test@example.com>",
        "Subject: Test email",
        "",
        "Hello from the test harness",
      ].join("\r\n"),
    });
    
    expect(result).toMatchObject({
      outcome: "ok",
      forwards: [{ recipient: "archive@example.com" }],
      replies: [
        {
          sender: "inbox@example.com",
          raw: expect.stringContaining("Thanks for your email"),
        },
      ],
    });
Patch Changes
  • #​14929 48f0c6c Thanks @​dependabot! - Update dependencies of "miniflare", "wrangler"

    The following dependency versions have been updated:

    Dependency From To
    @​cloudflare/workers-types ^5.20260722.1 ^5.20260730.1
    workerd 1.20260722.1 1.20260730.1
  • #​14838 8049ca4 Thanks @​TheSaiEaranti! - Fix ctrl+c not being able to interrupt wrangler while waiting for Cloudflare Access authorization

    When a domain is behind Cloudflare Access (for example during remote bindings startup), wrangler runs cloudflared access login, which only returns once the user completes the authorization flow in the browser. This was invoked synchronously, blocking Node's event loop, so wrangler could not react to ctrl+c (or anything else) until the authorization completed — abandoning the browser flow left a hung wrangler process that had to be killed externally. cloudflared is now spawned asynchronously, keeping wrangler responsive while it waits. The remote runtime passes its abort signal through to the spawn, so tearing down the session kills a still-pending cloudflared immediately, with process exit as a last-resort cleanup.

  • #​14871 1394867 Thanks @​nickpatt! - Include the local observability query endpoint in the agent-facing Local Explorer hint

    The hint wrangler dev prints for AI-agent sessions now lists POST /cdn-cgi/explorer/api/local/observability/query, so agents can discover the read-only SQL endpoint for captured request traces and console logs (the spans and logs tables) alongside the existing binding and storage routes.

  • #​14918 cc54478 Thanks @​nickpatt! - Improve the agent-facing Local Explorer hint for the observability query endpoint

    When a wrangler dev session is detected as running inside an AI agent, the hint for POST /local/observability/query now explains that the endpoint takes a read-only SQL query (SELECT/WITH only) over the captured spans and logs tables, notes that attributes is JSON (read via json(attributes)), and includes a copy-pasteable curl example. The full OpenAPI schema is demoted to a last-resort footer so agents reach for the small, actionable example first instead of fetching the large schema.

  • #​14897 e31ab0f Thanks @​ericclemmons! - Fix wrangler triggers deploy to use Vite-generated redirected configuration

    The command now reads .wrangler/deploy/config.json, matching wrangler deploy and wrangler versions upload, so generated Worker names and trigger settings are applied.

  • Updated dependencies [01d7020, 48f0c6c, d7f38c3, 5c25cfe, 1f61001]:

    • miniflare@​4.20260730.0

v4.115.0

Compare Source

Minor Changes
  • #​14807 4dfb96e Thanks @​oOPa! - Add hidden --jurisdiction option to wrangler kv namespace create for internal testing

    This option creates a KV namespace within a specific jurisdiction (for example us, eu, or fedramp), backing it with jurisdiction-scoped storage. It is experimental and currently gated to allow-listed accounts, so it is hidden from --help until the feature is generally available.

  • #​14280 465c0fb Thanks @​tahmid-23! - Add experimental local_dev.experimental_s3_credentials to r2_buckets config

    When set, the R2 bucket is served over a local S3-compatible API at /cdn-cgi/local/r2/s3/<bucket-id> during local development, authenticated with the configured AWS SigV4 credentials. <bucket-id> is the bucket's bucket_name, or the binding name if bucket_name is not set:

    {
      "r2_buckets": [
        {
          "binding": "BUCKET",
          "bucket_name": "my-bucket",
          "local_dev": {
            "experimental_s3_credentials": {
              "accessKeyId": "local-access-key-id",
              "secretAccessKey": "local-secret-access-key"
            }
          }
        }
      ]
    }
  • #​14877 552bcfc Thanks @​jasoncabot! - Respect and surface the Retry-After header on Cloudflare API responses

    Previously, if a Wrangler command (e.g. wrangler versions upload, wrangler deploy) hit the Cloudflare API's rate limit, the resulting error gave no indication of how long to wait before trying again, and 429 responses weren't retried at all (only 5xx errors were, with a fixed linear backoff).

    Now:

    • 429 Too Many Requests responses are automatically retried, alongside the existing 5xx retry behaviour.
    • If a retried response includes a Retry-After header, Wrangler waits for that duration instead of the default backoff, and logs a message indicating how long it's waiting. To avoid blocking for an excessive amount of time, waits longer than 60 seconds fail fast instead — the surfaced Retry-After value lets the caller schedule its own retry.
    • If a retryable error is ultimately surfaced to the user (e.g. because retries were exhausted), the error message includes a note with the Retry-After duration, and the command-failed entry written to the Wrangler output file (WRANGLER_OUTPUT_FILE_PATH/WRANGLER_OUTPUT_FILE_DIRECTORY) gains a retry_after_ms field. This lets scripts and CI/CD pipelines calling Wrangler repeatedly (for example, wrangler versions upload on every commit) read the wait duration directly instead of regex-parsing stderr.

    APIError.isRetryable() is unchanged (still 5xx only); retryOnAPIFailure() separately retries 429s. retryAfterMs, when present, is honoured for any retried error, not just 429s.

    retryAfterMs is also now populated on APIErrors raised from direct R2 object requests, the Browser Rendering API, and errors surfaced from commands using the official cloudflare SDK client.

  • #​14712 6e0bf6e Thanks @​mack-erel! - Support connect() on remote VPC Network and VPC Service bindings in local development

    Remote VPC Network and VPC Service bindings previously only supported HTTP and JSRPC, so calling binding.connect(address) against a private TCP service (for example a database) failed in local dev with Incoming CONNECT on a worker not supported. Raw TCP connections through remote VPC Network and VPC Service bindings now work in local development.

    This feature is experimental. Existing HTTP and JSRPC usage of remote VPC Network and VPC Service bindings is unaffected, and no new configuration is required.

Patch Changes
  • #​14833 773ead4 Thanks @​DiogoSantoss! - Color Email Routing plan change markers

    Wrangler now highlights additions in green, updates in yellow, and deletions and conflicts in red so Email Routing deployment plans are easier to scan before confirmation.

  • #​14833 773ead4 Thanks @​DiogoSantoss! - Apply Email Routing changes across independent zones concurrently

    Wrangler now limits concurrent zone updates while preserving the Email Routing plan order within each zone. Deployments that configure addresses across multiple zones complete faster without breaking delete-before-add transitions at a zone's rule limit.

  • #​14815 09b8a44 Thanks @​chinesepowered! - Fix wrangler cloudchamber curl mangling header values that contain a colon

    Header values were split on every colon and only the segment between the first and second was sent, so --header location:https://example.com/x arrived as https. Headers are now split on the first colon only. A header that is not in the documented --header <name>:<value> form previously threw an unhandled TypeError, and now reports a clear error.

  • #​14806 e8b3a9d Thanks @​akim136! - Handle and explain authentication failures from remote bindings during local development

    Wrangler now recognizes authentication failures from remote preview sessions and reports that bindings which need to run remotely require Cloudflare authentication even when the rest of the Worker is developed locally.

  • #​14801 b737676 Thanks @​emily-shen! - Speed up old debug log cleanup by reading each log file's date from its filename instead of stat-ing every file

    Wrangler periodically deletes debug log files older than 30 days from its logs directory. Previously it made a filesystem stat call for each file to read its modification time; it now derives the age from the timestamp already encoded in the log filename, avoiding that extra work.

  • Updated dependencies [1035f74, e426cb9, 3a22ae5, 465c0fb, 6e0bf6e]:

    • miniflare@​4.20260722.1

v4.114.0

Compare Source

Minor Changes
  • #​14633 3203b5d Thanks @​nickpatt! - Add local-dev observability

    wrangler dev and the Vite plugin now capture a trace for every local Worker invocation - spans, logs, and console.* output, including requests that cross worker or Durable Object boundaries.

    You can explore this data two ways:

    • A new Observability tab in the Local Explorer, with a Traces view (recent invocations, an inline timeline waterfall, and filters) and an Events view.
    • A read-only SQL endpoint at /cdn-cgi/explorer/api/local/observability/query, discoverable via the Local Explorer's OpenAPI document, so coding agents and tools can query the same spans and logs tables.

    While this is in testing it's off by default; set X_LOCAL_OBSERVABILITY=true to turn it on. It will be on by default in the public release.

Patch Changes
  • #​14373 246ce92 Thanks @​Jacroney! - Improve the D1 database-limit error message

    When creating a D1 database fails because the account has hit its database limit, the error now points to the relevant next steps — upgrading on the Workers Free plan or requesting a higher limit on a paid plan — alongside the existing commands to list and delete databases. Previously it only suggested deleting unused databases. This applies both to wrangler d1 create and to the D1 database that is created during resource provisioning on deploy.

  • #​14796 c38a2c3 Thanks @​dependabot! - Update dependencies of "miniflare", "wrangler"

    The following dependency versions have been updated:

    Dependency From To
    @​cloudflare/workers-types ^5.20260721.1 ^5.20260722.1
    workerd 1.20260721.1 1.20260722.1
  • #​14788 8416b33 Thanks @​chinesepowered! - Fix grammar in the container image-too-large error

    The error thrown when a container image exceeds the available disk size ended with "Your need more disk for this image." It now reads "You need more disk for this image."

  • #​14809 4683ff8 Thanks @​jamesopstad! - Ignore the removed legacy_env field when reading a redirected configuration

    Older versions of tools such as the Vite plugin can generate a redirected configuration (.wrangler/deploy/config.json) that still includes the removed legacy_env field. Since these files are tool-generated, users could not easily remove the field themselves, and Wrangler would error out. Wrangler now silently strips legacy_env from redirected configurations. User-authored configurations still report an error so that the field can be removed.

  • #​14593 02232f3 Thanks @​spk-ai! - Fix dev proxy silently hanging or returning a misleading 503 on network errors for non-root-path requests

    During wrangler dev, a transient network error on any request path other than / could be misclassified as the worker being reloaded, even when it wasn't: GET/HEAD requests would silently hang (with nothing logged) until the client timed out, and other methods would receive a misleading Your worker restarted mid-request 503. Such errors are now reported and surfaced immediately when the worker has not actually changed.

  • #​14797 f8a8c2c Thanks @​roerohan! - Explain how to provision Flagship bindings if app_id missing in remote development

    Wrangler now reports that a Flagship binding without an app_id must first be created with wrangler flagship apps create.

  • Updated dependencies [c38a2c3, c079ba3, 95b026e, c4bacec, 3203b5d]:

    • miniflare@​4.20260722.0

v4.113.0

Compare Source

Minor Changes
  • #​14471 f03b108 Thanks @​DiogoSantoss! - Apply Email Routing addresses during Worker trigger deployment

    Worker trigger deployment now reconciles the Worker's Email Routing rules with the top-level addresses config. This runs for wrangler deploy, wrangler triggers deploy, and clients of @cloudflare/deploy-helpers. After the Worker uploads, or when wrangler triggers deploy runs after a version promotion, the deploy helper asks the Email Routing API for a plan, renders the changes grouped by zone (+ added, ~ updated, - deleted, ! conflict), prompts once for destructive changes in interactive mode, and applies accepted changes through the per-zone rule endpoints. Purely additive plans apply without a prompt, while non-interactive destructive plans fail without modifying rules.

  • #​14679 deae171 Thanks @​dario-piotrowicz! - Add exclude_packages option to dependencies_instrumentation configuration

    The dependencies_instrumentation config object now accepts an optional exclude_packages field — an array of package name patterns (with glob-style * wildcards) to exclude from the dependency metadata collected during deploy and version uploads.

    // wrangler.json
    {
      "dependencies_instrumentation": {
        "exclude_packages": ["@&#8203;internal/*", "secret-tool"]
      }
    }
  • #​14721 4e92e32 Thanks @​dmmulroy! - Support Artifacts sources when creating Queue event subscriptions

    wrangler queues subscription create now accepts the artifacts and artifacts.repo source types supported by the Cloudflare API.

  • #​13352 d1d6945 Thanks @​penalosa! - Expand automatic resource provisioning to Queue, Dispatch Namespace, and Flagship bindings

    Deployments can now omit the resource name or ID for these bindings. Wrangler will inherit the existing binding on subsequent deploys, create a deterministically named resource automatically, or offer existing resources during an interactive deploy with automatic creation disabled.

  • #​14688 a0c8bb1 Thanks @​NuroDev! - Print Local Explorer API details for headless agent-driven wrangler dev sessions

    When wrangler dev is started in a headless AI agent environment, Wrangler now prints the Local Explorer API URL and basic resource routes so agents can inspect local Workers and bindings without relying on the interactive UI.

  • #​14724 a50f73a Thanks @​jamesopstad! - Add a settings export to the experimental cloudflare.config.ts config

    Account-level settings (accountId, complianceRegion) now live in a dedicated, named settings export authored via defineSettings, rather than on the Worker config. A cloudflare.config.ts can export at most one settings object; the Worker itself is the default export.

    // cloudflare.config.ts
    import { defineSettings, defineWorker } from "wrangler/experimental-config";
    import * as entrypoint from "./src/index.ts" with { type: "cf-worker" };
    
    export const settings = defineSettings({
    	accountId: "<your-account-id>",
    });
    
    export default defineWorker({
    	name: "my-worker",
    	entrypoint,
    	compatibilityDate: "2026-05-18",
    });

    This is only used behind the experimental new-config path (wrangler --experimental-new-config and the @cloudflare/vite-plugin experimental.newConfig option).

  • #​14595 2b390d7 Thanks @​colinhacks! - Recognise nub as a package manager

    wrangler now detects nub — from its npm_config_user_agent and an installed nub binary — and autoconfig detects nub projects by their nub.lock, alongside npm, pnpm, yarn, and bun.

  • #​14742 34430b3 Thanks @​pombosilva! - Add support for redacting sensitive Workflows step output in local dev.

    Steps configured with sensitive: "output" now have their output redacted to [REDACTED] in step logs and step-output responses when running Workflows locally, matching production behavior. The real value is still passed to downstream steps, and step errors are never redacted.

Patch Changes
  • #​14715 42af66d Thanks @​dependabot! - Update dependencies of "miniflare", "wrangler"

    The following dependency versions have been updated:

    Dependency From To
    @​cloudflare/workers-types ^5.20260714.1 ^5.20260721.1
    workerd 1.20260714.1 1.20260721.1
  • #​14744 a0a091b Thanks @​penalosa! - Drop the "Experimental:" prefix from the resource provisioning header now that automatic provisioning is generally available. The deploy output now reads The following bindings need to be provisioned:.

  • #​14720 0df3d43 Thanks @​penalosa! - Fix remote binding previews for accounts without a workers.dev subdomain

    Wrangler now automatically registers a workers.dev subdomain when one is required to start a remote binding preview.

  • #​14773 d83a476 Thanks @​chinesepowered! - Fix stray characters in the Workers Sites asset-key-too-long error

    The error thrown when an asset path key exceeds the 512-character limit ended with a stray ", copy-paste artifact, so the message printed to users terminated with ...#kv-limits", and the trailing documentation URL was malformed. The message now ends cleanly at the URL.

  • #​14766 4815711 Thanks @​gianghungtien! - Report the Worker's error for HEAD requests instead of an internal JSON parse error

    A Worker that threw on a HEAD request (for example curl -I) logged SyntaxError: Unexpected end of JSON input from miniflare's internals rather than the actual error, and dispatchFetch() rejected with that same misleading error. workerd drops response bodies for HEAD requests, so the serialised error never reached the code that revives it.

    The error is now also carried in a header, which survives HEAD, so the original message and source-mapped stack are reported for every method. When no payload is available the reporting degrades to a plain error rather than surfacing a parse failure.

  • #​14448 c82d96b Thanks @​GregBrimble! - Use the new PATCH APIs for versioned secret commands

    Wrangler now updates versioned Worker secrets by patching the latest Worker version instead of downloading the latest version contents and uploading a full replacement version. This avoids reconstructing Worker configuration in Wrangler, which should reduce bugs when Workers use less common features. For example, this avoids regressions like the previous placement preservation bug fixed in #​13843.

  • #​14617 f75ae5d Thanks @​martijnwalraven! - Derive nodejsCompatMode from the effective compatibility inputs in unstable_startWorker()

    The CLI computes the node-compat mode from the effective compatibility date and flags (args.* ?? parsedConfig.*), but the programmatic path used input.build.nodejsCompatMode raw — leaving it unset meant a worker's nodejs_compat flag (from its config file or from input-level compatibilityFlags) was silently ignored, so bundling failed to resolve node builtins that wrangler dev handles. startWorker now derives the mode the same way when the caller does not provide one: input-level compatibilityDate/compatibilityFlags first, then the resolved config, with no-bundle taken from the resolved build.bundle semantics. Passing an explicit null still disables it.

  • Updated dependencies [42af66d, 4815711, 34430b3]:

    • miniflare@​4.20260721.0

v4.112.0

Compare Source

Minor Changes
  • #​14470 3de70df Thanks @​DiogoSantoss! - Add a top-level addresses field to Wrangler configuration for Email Routing

    You can now declare the inbound email addresses handled by your Worker directly in wrangler.json:

    {
      "name": "my-worker",
      "main": "src/index.ts",
      "compatibility_date": "2026-05-21",
      "addresses": ["support@example.com", "*@&#8203;example.com"]
    }
  • #​14706 cb6c3f9 Thanks @​edmundhung! - Add Durable Object storage access to createTestHarness()

    You can now execute SQL against a SQLite-backed Durable Object to seed or assert the storage state.

    const server = createTestHarness({
      workers: [{ configPath: "./wrangler.json" }],
    });
    await server.listen();
    
    const worker = server.getWorker();
    const storage = await worker.getDurableObjectStorage("COUNTER", {
      name: "user-123",
    });
    
    await worker.fetch("/counter/user-123");
    
    const rows = await storage.exec(
      "SELECT value FROM counters WHERE id = ?",
      "user-123"
    );
    expect(rows).toEqual([{ value: 1 }]);
  • #​14562 9f04a7e Thanks @​martijnwalraven! - Emit a typed runtimeError event on the unstable_startWorker DevEnv for uncaught Worker exceptions

    Uncaught Worker exceptions were only source-mapped and printed, so programmatic consumers had to scrape terminal output to observe them. The DevEnv now re-emits a RuntimeErrorEvent (like reloadComplete) carrying the exception text and source-mapped stack — fed from Miniflare's pretty-error seam via the new handleUncaughtError option for exceptions the runtime catches, and from the inspector for those it does not.

Patch Changes
  • #​14682 d39ae01 Thanks @​dependabot! - Update dependencies of "miniflare", "wrangler"

    The following dependency versions have been updated:

    Dependency From To
    @​cloudflare/workers-types ^5.20260710.1 ^5.20260714.1
    workerd 1.20260710.1 1.20260714.1
  • #​14725 c79504f Thanks @​edmundhung! - Support containers in createTestHarness()

    Workers configured with containers can now be tested using createTestHarness(). The harness builds configured images and makes container-backed Durable Objects available during integration tests.

  • #​14696 c7dbe1a Thanks @​martijnwalraven! - Type unstable_startWorker, DevEnv.startWorker, and ConfigController.set/patch against WranglerStartDevWorkerInput, so the wrangler-specific dev.structuredLogsHandler field the runtime already honors is expressible through the public API. Previously the public signatures took the base StartDevWorkerInput, and callers passing the handler needed a cast while internal callers (the test harness) routed the wider type around the signature.

  • #​14494 4e1a7a7 Thanks @​petebacondarwin! - Register a workers.dev subdomain before uploading a new Worker

    Deploying a Worker for the first time on an account that has no workers.dev subdomain failed with an opaque API error raised by the upload request itself (code 10063, "You need a workers.dev subdomain in order to proceed"). Wrangler now checks for a workers.dev subdomain before uploading a brand-new Worker that publishes to workers.dev and prompts you to register one, so you get a clear, actionable message instead of a cryptic API failure. The check is skipped for deploys that don't target workers.dev (routes-only deploys, or workers_dev: false) and for existing Workers, since their account already has a subdomain.

  • Updated dependencies [34e696d, d39ae01, 9f04a7e, 9f04a7e, cb30df3, cb6c3f9, 3f3afbb, e6fbc4e]:

    • miniflare@​4.20260714.0

v4.111.0

Compare Source

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

v4.110.0

Compare Source

Minor Changes
  • #​14591 0283a1f Thanks @​dario-piotrowicz! - Send npm package dependency metadata with worker uploads

    Wrangler now collects npm package dependency information from the project's package.json at deploy and version upload time, and includes it in the upload metadata sent to the Cloudflare API. This enables dependency analytics and future features like vulnerability alerting.

    The collected data includes the package name, the version constraint from package.json, and the exact installed version from node_modules. Both dependencies and devDependencies are included, while workspace packages, local packages, and unresolvable packages are excluded. The list is capped at 200 entries per upload.

    To opt out, set dependencies_instrumentation.enabled to false in your Wrangler configuration file:

    {
      "dependencies_instrumentation": {
        "enabled": false
      }
    }
  • #​14535 1b965c5 Thanks @​Naapperas! - Support dynamic retry delays for Workflow steps in local dev

    A step's retries.delay can now be a function that computes the delay per failed attempt, in addition to a static duration. The function receives { ctx, error } and returns a delay (a number of milliseconds or a duration string like "30 seconds"), and its result is fed into the configured backoff.

    await step.do(
      "call flaky API",
      {
        retries: {
          limit: 5,
          backoff: "constant",
          delay: ({ ctx }) => ctx.attempt * 1000,
        },
      },
      async () => {
        /* ... */
      }
    );

    The function is invoked once per failed attempt with a 5 second timeout. If it throws, times out, or returns an invalid value, the step fails without further retries.

Patch Changes
  • #​14589 7b28392 Thanks @​jamesopstad! - Fix runtime type caching when wrangler dev auto-regenerates types

    When dev.generate_types (or wrangler dev --types) regenerated an out-of-date worker-configuration.d.ts, the written file omitted the // Begin runtime types marker (and the /* eslint-disable */ header) that wrangler types writes. As a result, later runs could not detect the cached runtime types and always regenerated them. The auto-regenerated file now matches wrangler types output, restoring the cache.

  • Updated dependencies [1b965c5]:

    • miniflare@​4.20260708.1

v4.109.0

Compare Source

Minor Changes
  • #​14489 e3f0cd6 Thanks @​edmundhung! - Add listDurableObjectIds() to createTestHarness Worker handles

    Tests using createTestHarness can now list persisted Durable Object instance IDs for a Durable Object binding. This helps integration tests discover objects created by app behavior without adding test-only endpoints.

  • #​14465 2fedb1f Thanks @​vaishnav-mk! - Add rollback support when terminating Workflow instances

    WorkflowInstance.terminate({ rollback: true }) now runs registered rollback handlers before marking a local Workflow instance as terminated. Wrangler also supports this via wrangler workflows instances terminate --rollback, including local mode.

    The rollback option is only sent for terminate operations and is rejected by the Local Explorer API for pause, resume, and restart actions.

  • #​14511 17d2fc1 Thanks @​juleslemee! - Add wrangler turnstile widget commands for managing Turnstile widgets

    You can now create, list, inspect, update, and delete Turnstile widgets from the CLI:

    wrangler turnstile widget create <name> --domain example.com --mode managed
    wrangler turnstile widget list
    wrangler turnstile widget get <sitekey>
    wrangler turnstile widget update <sitekey> --name "Renamed"
    wrangler turnstile widget delete <sitekey>
    

    All five subcommands accept --json for machine-readable output (get prints a formatted view by default; the rest print a short human summary). --domain accepts comma-separated values, e.g. --domain a.com,b.com. delete --json requires --skip-confirmation/-y to keep output pipeable.

    create prints the sitekey, the secret, and the canonical challenges.cloudflare.com/turnstile/v0/siteverify endpoint for backend verification. The hint is backend-agnostic; it doesn't assume Workers. The secret is redacted from list and update output but remains available via get for retrieval later. delete prompts for confirmation; pass --skip-confirmation/-y to bypass.

    The OAuth flow now requests the challenge-widgets.write scope (the existing Bach-derived scope for Turnstile widget CRUD). Existing OAuth sessions need to run wrangler login again to pick it up. API token users need a token with the Account.Turnstile:Edit permission.

Patch Changes

Note

PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added the dependencies label Jul 7, 2026
@renovate
renovate Bot requested a review from cameronraysmith as a code owner July 7, 2026 22:16
@renovate renovate Bot added the dependencies label Jul 7, 2026
@mergify

mergify Bot commented Jul 7, 2026

Copy link
Copy Markdown

Tick the box to add this pull request to the merge queue (same as @mergifyio queue).

  • Queue this pull request

@renovate
renovate Bot force-pushed the renovate/wrangler-4.x branch from f7029bf to 428a874 Compare July 8, 2026 22:43
@renovate renovate Bot changed the title chore(deps): update dependency wrangler to ^4.108.0 chore(deps): update dependency wrangler to ^4.107.1 Jul 8, 2026
@renovate
renovate Bot force-pushed the renovate/wrangler-4.x branch from 351262c to 05288aa Compare July 9, 2026 19:30
@renovate renovate Bot changed the title chore(deps): update dependency wrangler to ^4.107.1 chore(deps): update dependency wrangler to ^4.110.0 Jul 9, 2026
@renovate
renovate Bot force-pushed the renovate/wrangler-4.x branch from 95f1b6c to fab700c Compare July 15, 2026 09:59
@renovate renovate Bot changed the title chore(deps): update dependency wrangler to ^4.110.0 chore(deps): update dependency wrangler to ^4.111.0 Jul 15, 2026
@renovate
renovate Bot force-pushed the renovate/wrangler-4.x branch from a941248 to 87d9e4e Compare July 17, 2026 10:44
@renovate renovate Bot changed the title chore(deps): update dependency wrangler to ^4.111.0 chore(deps): update dependency wrangler to ^4.112.0 Jul 17, 2026
@renovate
renovate Bot force-pushed the renovate/wrangler-4.x branch 2 times, most recently from ed3179b to 68f7087 Compare July 21, 2026 20:11
@renovate renovate Bot changed the title chore(deps): update dependency wrangler to ^4.112.0 chore(deps): update dependency wrangler to ^4.113.0 Jul 21, 2026
@renovate
renovate Bot force-pushed the renovate/wrangler-4.x branch from bf0ecaa to 299a7cc Compare July 23, 2026 22:35
@renovate renovate Bot changed the title chore(deps): update dependency wrangler to ^4.113.0 chore(deps): update dependency wrangler to ^4.114.0 Jul 23, 2026
@renovate
renovate Bot force-pushed the renovate/wrangler-4.x branch from dcbb51e to d3dcd90 Compare July 28, 2026 21:50
@renovate renovate Bot changed the title chore(deps): update dependency wrangler to ^4.114.0 chore(deps): update dependency wrangler to ^4.115.0 Jul 28, 2026
@renovate
renovate Bot force-pushed the renovate/wrangler-4.x branch from 0747925 to e24d813 Compare July 30, 2026 19:41
@renovate renovate Bot changed the title chore(deps): update dependency wrangler to ^4.115.0 chore(deps): update dependency wrangler to ^4.116.0 Jul 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants