Releases: cloudflare/workers-sdk
Release list
wrangler@4.116.0
Minor Changes
-
#14907
beec0fbThanks @NuroDev! - Avoid Worker and workers.dev naming prompts in agent-driven deploysWrangler 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
b21eac2Thanks @jamesopstad! - The experimental build output directory now includes the Worker's configuration at.cloudflare/output/v0/workers/default/config.jsoninstead of.cloudflare/output/v0/workers/<worker-name>/worker.config.json -
#14893
bb09f1bThanks @apeacock1991! - Graduatewrangler check startupfrom alpha and show bundle size and a local timing summaryThe 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
01d7020Thanks @edmundhung! - Add support for dispatching email handlers withcreateTestHarnessYou can now call
server.getWorker().email({ from, to, raw })to dispatch directly to a Worker'semail()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
48f0c6cThanks @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
8049ca4Thanks @TheSaiEaranti! - Fix ctrl+c not being able to interrupt wrangler while waiting for Cloudflare Access authorizationWhen 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.cloudflaredis 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-pendingcloudflaredimmediately, with process exit as a last-resort cleanup. -
#14871
1394867Thanks @nickpatt! - Include the local observability query endpoint in the agent-facing Local Explorer hintThe hint
wrangler devprints for AI-agent sessions now listsPOST /cdn-cgi/explorer/api/local/observability/query, so agents can discover the read-only SQL endpoint for captured request traces and console logs (thespansandlogstables) alongside the existing binding and storage routes. -
#14918
cc54478Thanks @nickpatt! - Improve the agent-facing Local Explorer hint for the observability query endpointWhen a
wrangler devsession is detected as running inside an AI agent, the hint forPOST /local/observability/querynow explains that the endpoint takes a read-only SQL query (SELECT/WITH only) over the capturedspansandlogstables, notes thatattributesis JSON (read viajson(attributes)), and includes a copy-pasteablecurlexample. 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
e31ab0fThanks @ericclemmons! - Fixwrangler triggers deployto use Vite-generated redirected configurationThe command now reads
.wrangler/deploy/config.json, matchingwrangler deployandwrangler versions upload, so generated Worker names and trigger settings are applied. -
Updated dependencies [
01d7020,48f0c6c,d7f38c3,5c25cfe,1f61001]:- miniflare@4.20260730.0
miniflare@4.20260730.0
Minor Changes
-
#14685
01d7020Thanks @edmundhung! - Add JSON output to/cdn-cgi/handler/emailThe
/cdn-cgi/handler/emailendpoint now accepts?format=jsonto return the email handler result as JSON, including its outcome, rejection reason, forwarded messages, and replies. Requests withoutformat=jsonstill return the existing text outcome for backward compatibility.
Patch Changes
-
#14929
48f0c6cThanks @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 -
#14810
d7f38c3Thanks @allocsys! - Fix the local Images binding transform (env.IMAGES.input(...).transform(...)) ignoring thefit,gravity, andbackgroundoptions. Previously, local dev always letterboxed transformed images with black bars regardless of the options passed in. Local dev now respectsfit,gravity, andbackground, matching production Images binding behavior. -
#14850
5c25cfeThanks @exKAZUu! - Disable the keep-alive timeout on the loopback serverThe loopback server (which serves custom service bindings,
@cloudflare/vite-plugin's module transport, and other workerd → Node callbacks) used Node's defaultserver.keepAliveTimeoutof 5 seconds. workerd pools and reuses connections to the loopback server, so Node closing an idle pooled socket raced with workerd sending the next request on it, making that request fail withNetwork connection lost. The failure is probabilistic and load-dependent; under@cloudflare/vite-pluginwith a large SSR module graph and a cold optimizer cache (thousands offetchModulecalls with multi-second idle gaps between bursts), it broke most dev sessions. Disable the idle keep-alive timeout on the loopback server, mirroring the undici pools used for dispatch in the opposite direction. -
#14914
1f61001Thanks @nickpatt! - Capture Workflows invocations in local observabilityWhen local observability is enabled, the Workflows engine service is now attached to the trace collector (like every user worker), so workflow runs show up in the Local Explorer's Observability view attributed to the workflow. Previously the engine ran outside the per-user-worker tail wiring, so workflow invocations left no traces, spans, or logs in the local store.
create-cloudflare@2.70.16
Patch Changes
-
#14908
301d6beThanks @dependabot! - Update dependencies of "create-cloudflare"The following dependency versions have been updated:
Dependency From To create-next-app 16.2.11 16.2.12 -
#14909
62dd693Thanks @dependabot! - Update dependencies of "create-cloudflare"The following dependency versions have been updated:
Dependency From To sv 0.16.5 0.16.6 -
#14910
6a03ffaThanks @dependabot! - Update dependencies of "create-cloudflare"The following dependency versions have been updated:
Dependency From To create-vike 0.0.668 0.0.670 -
#14911
e09da32Thanks @dependabot! - Update dependencies of "create-cloudflare"The following dependency versions have been updated:
Dependency From To create-astro 5.2.2 5.2.3 -
#14930
b89c2aeThanks @dependabot! - Update dependencies of "create-cloudflare"The following dependency versions have been updated:
Dependency From To create-vike 0.0.670 0.0.671 -
#14932
f820419Thanks @dependabot! - Update dependencies of "create-cloudflare"The following dependency versions have been updated:
Dependency From To @angular/create 22.0.8 22.0.9
@cloudflare/workers-utils@0.30.0
Minor Changes
-
#14785
5e6556aThanks @dario-piotrowicz! - AddtoUrlPathandUrlPathexportstoUrlPath(filePath)converts a file-system path into a URL-safe path by replacing backslashes with forward slashes and rejecting Windows drive-letter prefixes (e.g.C:).UrlPathis the branded string type it returns, letting callers prove at the type level that a string has been normalized for use in URLs.
@cloudflare/workers-auth@0.5.4
Patch Changes
-
#14838
8049ca4Thanks @TheSaiEaranti! - Fix ctrl+c not being able to interrupt wrangler while waiting for Cloudflare Access authorizationWhen 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.cloudflaredis 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-pendingcloudflaredimmediately, with process exit as a last-resort cleanup. -
Updated dependencies [
5e6556a]:- @cloudflare/workers-utils@0.30.0
@cloudflare/vitest-pool-workers@0.19.1
@cloudflare/vite-plugin@1.49.0
Minor Changes
- #14905
b21eac2Thanks @jamesopstad! - The experimental build output directory now includes the Worker's configuration at.cloudflare/output/v0/workers/default/config.jsoninstead of.cloudflare/output/v0/workers/<worker-name>/worker.config.json