Repository navigation
Update cloudflare-workers-tooling - #3565
Merged
Merged
Conversation
Browser evidence: passedThis pull request changes the docs site's browser evidence. build 1989 at No failed attempts. Receipt: receipt.json No report identical to this one has been published from Evidence kept 30 days. |
renovate
Bot
force-pushed
the
renovate/cloudflare-workers-tooling
branch
from
October 23, 2026 08:45
d790118 to
f70a5cf
Compare
renovate
Bot
force-pushed
the
renovate/cloudflare-workers-tooling
branch
from
October 24, 2026 14:49
c5ec2b2 to
7e6c75e
Compare
renovate
Bot
force-pushed
the
renovate/cloudflare-workers-tooling
branch
4 times, most recently
from
October 29, 2026 01:44
80b2d9f to
25e27ef
Compare
renovate
Bot
force-pushed
the
renovate/cloudflare-workers-tooling
branch
2 times, most recently
from
October 31, 2026 03:21
b15b011 to
6bf90f7
Compare
renovate
Bot
force-pushed
the
renovate/cloudflare-workers-tooling
branch
from
October 31, 2026 21:17
ab8a293 to
b71bb86
Compare
cameronraysmith
enabled auto-merge (rebase)
October 31, 2026 21:40
Contributor
|
❌ Removed from merge queue: Merge conflict in batch (after #3513). Please rebase and re-schedule automerge. |
renovate
Bot
force-pushed
the
renovate/cloudflare-workers-tooling
branch
from
October 31, 2026 21:49
3eef5fe to
48b63a2
Compare
cameronraysmith
enabled auto-merge (rebase)
October 31, 2026 22:42
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.64.0→1.66.04.151.3→4.156.0Release Notes
cloudflare/workers-sdk (@cloudflare/vite-plugin)
v1.66.0Compare Source
Minor Changes
#16539
046db08Thanks @petebacondarwin! - Update the development registry to use the canonical Cloudflare pathUpgrade Miniflare to 5.20261023.1-beta and Wrangler to 4.154.0. Vite plugin v1 now uses
CLOUDFLARE_DEV_REGISTRY_PATHor<Cloudflare config directory>/dev-registry/v5for Worker discovery.MINIFLARE_REGISTRY_PATHis no longer read. When mixing Vite and Wrangler development sessions, set the sameCLOUDFLARE_DEV_REGISTRY_PATHfor both because Wrangler retains its legacy default.#16407
9ec1101Thanks @petebacondarwin! - Support remote Hyperdrive bindings in Vite plugin v1 development and previewSet
remote: trueon a Hyperdrive binding inwrangler.jsoncto connect to its deployed configuration without a local database connection string. The retained remote proxy exposes the binding's connection string and socket streams, and remote session cleanup preserves startup errors and shares one disposal attempt.Patch Changes
#16542
ef573d4Thanks @petebacondarwin! - Preserve machine-readable error properties from remote bindingsEnable enhanced error serialization on the remote proxy Worker used by Vite plugin v1. Combined with Miniflare 5.20261023.1-beta, remote binding errors retain properties such as
codeandnumericCodeso Worker code can handle them without parsing error messages.#16480
ccaa34aThanks @petebacondarwin! - Prevent malformed token-exchange responses from crashing remote binding startupUpdate the Undici dependency bundled from the retained remote-bindings package to
7.30.1. Responses with excessive content encodings now reject without a later unhandled stream error when the server closes the connection early.#16502
6f2eda1Thanks @petebacondarwin! - Update the retained asset configuration validator to Zod 4.6.6The Vite plugin validates
_headersand_redirectsthrough its private workers-shared package. Update that bundled copy to address excessive memory consumption when validating oversized collections.#16444
79678c4Thanks @petebacondarwin! - Update Vite plugin v1 to the October 23 Workers runtimeUse Miniflare
5.20261023.0-betaand the matching Wrangler release for local development and preview. Align bundled helpers and Workers types with this runtime, and use2026-10-23as the fallback compatibility date when none is configured. The runtime and helper updates also prevent malformed HTTP responses with excessive content encodings from causing unhandled stream errors. The published helpers also update their bundled Zod validator and fix Windows keyring setup for remote-binding credentials when the configuration path contains spaces.#16479
1d5354bThanks @petebacondarwin! - Treatcloudflare:durable-objectsas a built-in runtime moduleWorkers can import
retryable()fromcloudflare:durable-objectsto mark Durable Object methods as safe to retry. The plugin now leaves that import for the runtime to resolve, as it does forcloudflare:workers, instead of trying to resolve it as a package.#16493
4ce6176Thanks @petebacondarwin! - Preserve a Worker response'sstatusTextin Vite dev and previewResponses such as
new Response(body, { status: 231, statusText: "Custom" })now reach the browser as231 Custominstead of231 unknown. Empty status text is also preserved over HTTP/1.x.#16501
109844eThanks @petebacondarwin! - Preserve separateSet-Cookierequest headers in Vite dev and previewWorkers now receive each incoming
Set-Cookievalue separately for HTTP requests and WebSocket upgrades, including values with commas in anExpiresdate. Previously, multiple values could be combined into one header.#16503
ca116f9Thanks @petebacondarwin! - Fix a dev server failing to start when an earlier dev server in the same process had different Worker exportsThe Vite plugin now clears the Worker export types it detected when a dev server closes. A dev server created afterwards in the same process derives them from its own config again, so it no longer fails with
Class extends value undefinedfor a Durable Object the earlier server's Worker did not export.#16504
436fa9aThanks @petebacondarwin! - Fix Vite DevTools WebSocket connections closing unexpectedlyLeave upgrades at
/__devtools/__wsto Vite DevTools instead of forwarding them to the Worker. Sandbox preview requests continue to reach the Worker.v1.65.0Compare Source
Minor Changes
#16363
d3240f2Thanks @jamesopstad! - Remove theexperimental.newConfigoption from Vite plugin v1Vite plugin v1 now supports Wrangler configuration files only. Projects using
cloudflare.config.tsfor configuration should upgrade to Vite plugin v2 beta.Patch Changes
#16373
8cc5f87Thanks @petebacondarwin! - Report unsupported remote bindings under Bun instead of hangingStarting remote bindings now fails with an actionable error explaining Bun's unsupported request routing. Use Node.js or disable remote bindings to continue local development.
#16334
9cecd09Thanks @petebacondarwin! - Fix Container setup guidance in Vite development and previewContainer registry instructions now show the Wrangler command and the configuration location, including Wrangler files and inline Vite configuration.
#16333
68d6eecThanks @petebacondarwin! - Update the local Workers runtime to the October 19 releaseInclude the fix for nested asset paths during local development on Windows, together with the compatible Wrangler release.
The runtime update also disposes Workflow step results and introspection modifiers after use, preventing undisposed RPC warnings and cancelled local Workflow requests.
#16379
160e655Thanks @petebacondarwin! - Update the local Workflow runtime to use native storage cleanupConsume the Miniflare fix that queues Workflow persistence deletion with instance recreation, including deletion through the local Explorer. This prevents storage cleanup from racing reuse of the same Workflow instance ID.
#16289
bbe822fThanks @petebacondarwin! - Retry remote preview token refreshes after transient failuresBackport the retry fix to the private remote-bindings workspace package and require
wrangler@4.151.1so long-running remote development sessions recover after a network outage.#16291
0262f7dThanks @petebacondarwin! - Use published SDK dependencies for Vite plugin v1 maintenancePin the plugin's published SDK dependencies to their deployed npm versions. Keep private shared packages as workspace dependencies so their implementation and build tools remain available on the v1 maintenance branch.
cloudflare/workers-sdk (wrangler)
v4.156.0Compare Source
Minor Changes
#16532
25802bcThanks @simonha9! - Allow the experimentalwrangler d1 insightscommand to run across every D1 database in the accountThe database name is now optional. With no name, the command returns the top queries across every D1 database in the account, and each result gains a
databaseIdfield.Patch Changes
#16369
ec0bea4Thanks @MattieTK! - Stop autoconfig in non-interactive runs when a project root holds both static files and a PagesfunctionsdirectoryWhen a project without a detected framework has a
functionsdirectory, autoconfig asks whether it is a Cloudflare Pages project. Non-interactive runs (CI and coding agents) assume it is not and continue as a static site. When the static files are in the project root, that deploys the root as static assets, and the Pages Functions (the project's API routes) are not deployed.In that case autoconfig now stops with an error explaining that Pages Functions cannot be migrated automatically yet. For Pages Functions it suggests moving the static files into a subdirectory and deploying with
wrangler pages deploy, or migrating the Functions to a Worker; for afunctionsdirectory that is not Pages Functions, it suggests moving the static files into a subdirectory or adding a configuration file. Projects whose static files are already in a subdirectory, projects detected as Pages or with a detected framework, and interactive runs where the user answers the prompt are unaffected.#16367
b4653b4Thanks @MattieTK! - Write a protective.assetsignorewhen autoconfig uses the project root as the static assets directoryAutoconfig is meant to write an
.assetsignorewhen the project root itself is the assets directory, so that local files are not uploaded as public assets. The check compared the detected output directory, which is relative ("."), with the absolute project path, so it never matched and no.assetsignorewas written. A static project with anindex.htmlat its root (for example afterwrangler setupor a zero-configwrangler deploy) then uploaded files such as.env,.dev.vars,.gitandnode_modulesas public assets.The check now resolves the assets directory that the generated configuration uses and compares it with the project root, so frameworks that set their own build output directory (such as Nuxt or SvelteKit) do not get an unused root
.assetsignore. The generated.assetsignorealso covers what a Cloudflare Pages upload skips, alongside the existing.wrangler,.dev.vars*and.env*entries:/_worker.js,/_routes.jsonand/functionsat the root (so nested paths such asblog/functions/index.htmlare still uploaded),node_modules,.gitand.DS_Storeat any depth, and.npmrc. If an existing.assetsignoreonly lists a narrower pattern such as.env,.env*is added so that files like.env.productionare skipped too. When the project root of an assets-only project contains a Pagesfunctionsdirectory or_worker.js, autoconfig now warns that it will not be deployed, since it is excluded from the assets and not run as server code.#16532
25802bcThanks @simonha9! - Fail the experimentalwrangler d1 insightscommand with an actionable error when the GraphQL Analytics API rejects the requestPreviously the command printed an empty
[]. Rate limit errors now say how long to wait before retrying, and authorization errors name the "Account Analytics: Read" permission the API token needs.#16013
8b64becThanks @swalker326! - Fix Durable Object self-references in tests and container validationDurable Object bindings that explicitly name the Worker itself now resolve to the test runner in
@cloudflare/vitest-plugin, for bothcloudflare.config.tsand Wrangler configuration files. Named Wrangler environments use their effective Worker name, keeping bindings to the base Worker external. Container validation also accepts these self-references, using the effective deployment name to distinguish local and external bindings.Explicit binding targets remain intact during configuration conversion, so deploying with
--nameor a CI name override preserves the intended Durable Object target.Updated dependencies [
15fbaed,d8899ac]:v4.155.0Compare Source
Minor Changes
#16536
a95d647Thanks @WalshyDev! - Support remote Analytics Engine bindings in local developmentSetting
remote: trueon an Analytics Engine dataset now sendswriteDataPoint()calls fromwrangler devand the Vite plugin to the real dataset. Without it, writes are still dropped locally.{ "analytics_engine_datasets": [ { "binding": "EVENTS", "dataset": "my-dataset", "remote": true } ] }Patch Changes
#16526
dba0e81Thanks @petebacondarwin! - Render terminal control characters as visible text in tail outputPretty tail and remote-preview output now escape control characters in log strings, exceptions and event metadata. Unicode, tabs and multiline logs remain readable, and JSON output keeps the original structured values.
#16489
fc57bc0Thanks @akshitsinha! - Keep Flagship flag metadata when updating flagswrangler flagship flagscommands that update an existing flag, such asenable,set,rollout,split, andrules, no longer clear the flag's metadata.wrangler flagship flags pullnow copies metadata into the local flag store.#16521
ec6edddThanks @petebacondarwin! - Validate.assetsignoreencoding before building asset manifestsAsset uploads and local development now stop with an actionable user error when
.assetsignoreis not valid UTF-8 or contains null characters, instead of silently losing its patterns. This also applies to standalone Miniflare and the Wrangler, Vite and Vitest development integrations. Save the file as UTF-8 to continue; UTF-8 files with a byte order mark and intentionally empty files remain supported.Updated dependencies [
a95d647,c7a3373,c7a3373,c7a3373]:v4.154.0Compare Source
Minor Changes
#16494
0968b08Thanks @petebacondarwin! - Enable Miniflare's development registry by default and centralize path resolutionIn Miniflare v5 beta, resolve the registry from
CLOUDFLARE_DEV_REGISTRY_PATH, then theunsafeDevRegistryPathconstructor option, then<Cloudflare config directory>/dev-registry/v5. The default is independent of legacy Wrangler directories and is scoped to the Miniflare major version. The Vite v2 beta plugin follows this new default, while current Wrangler andgetPlatformProxy()retain Wrangler's legacy default for compatibility with existing Wrangler sessions. Vite v2 and Wrangler therefore require the sameCLOUDFLARE_DEV_REGISTRY_PATHto discover each other; set it for both processes when mixing these tools.Add
enableDevRegistry: falseto disable registration and discovery explicitly. Shared storage now uses the resolved default without requiring an explicit path. As before, shared storage requires an enabled registry to elect a storage owner, so combiningunsafeEnableSharedStorage: truewithenableDevRegistry: falseis rejected. Miniflare no longer readsMINIFLARE_REGISTRY_PATH; useCLOUDFLARE_DEV_REGISTRY_PATHinstead. ExposeresolveDevRegistryPath()for integrations that also read registry files. Wrangler uses the effective path for its runtime configuration, initial bindings display, and Flagship active-session check, so the canonical override cannot bypass that check. An explicitly disabled Wrangler registry remains disabled.Patch Changes
#16499
f3c13b3Thanks @dinasaur404! - Preserve binding error codes and names in local developmentErrors from remote bindings and from Node.js binding proxies (
getPlatformProxy()andMiniflare#getBindings()) now keep their machine-readable properties, such as Artifacts'codeandnumericCode. Previously these properties were dropped and the error name was folded into the message (for example"ArtifactsError: Repository not found"), so code could only branch on error text during local development.Node.js callers also keep custom error names such as
ArtifactsError. Errors from remote bindings received inside a Worker keep their properties but are still namedError.Updated dependencies [
0968b08,f3c13b3]:v4.153.0Minor Changes
#14865
c0e915fThanks @TheSaiEaranti! - Add an--infer-origin-from-routesflag towrangler devWhen a config has
routes, local dev infers the origin from the first route, so the Worker seesrequest.url, theHostheader, and anyOriginheader rewritten to the route's host even though the client connected tolocalhost. That silently breaks Host/Origin-sensitive logic — for example a CORS check allowlistinghttp://localhost:*receiveshttp://<route-host>instead and rejects the request only in local dev.The inference is intentional and remains the default. Passing
--infer-origin-from-routes=falsenow opts out, preserving the real local origin without removingroutesfrom the config. An explicitly configured--host,--local-upstream, ordev.hostcontinues to take precedence either way. The flag only affects local development: in remote mode the route host still determines the preview session as before.#15955
23ef63aThanks @ericclemmons! - Expand dotenv variable references in--secrets-fileinputDotenv files supplied through
--secrets-filetodeploy,versions upload, andpreviewnow expand$VARand${VAR}references using process values and earlier file values. Process environment values override matching file keys, including explicitly empty values. Treat dotenv secrets files as trusted input: they can read and upload any process environment value, such as a CI credential referenced byX=${GITHUB_TOKEN}. In CI, use secrets files whose contents untrusted contributors cannot modify.This changes how existing dotenv secrets files are interpreted: an unset reference becomes an empty string, so
PASSWORD=pa$wordbecomespawhenwordis unset. Escape literal dollar signs with a backslash (PASSWORD=pa\$word), or use a JSON secrets file to preserve values exactly. JSON input and bulk-secret commands, including piped stdin, retain their existing literal parsing.Patch Changes
#16403
5f82a56Thanks @dependabot! - UpdateDEFAULT_COMPAT_DATEto 2026-10-22Use the bundled workerd release's compatibility date by default when scaffolding new projects or when no compatibility date is configured.
#16437
e651d7cThanks @dependabot! - UpdateDEFAULT_COMPAT_DATEto 2026-10-23Use the bundled workerd release's compatibility date by default when scaffolding new projects or when no compatibility date is configured.
#16403
5f82a56Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
#16437
e651d7cThanks @dependabot! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
#16476
8a30d8eThanks @tannerlinsley! - Update Undici to 7.30.1 to prevent a malformed HTTP response from crashing development toolsThe updated shared dependency rejects excessive content encodings without leaving an unhandled stream error when the server closes the connection early. This fixes GHSA-xjj6-f33q-929c and keeps the matching Undici types on the same version.
#16485
b7e762dThanks @Cherry! - Fix the Windows keyring install when the config path contains a spaceOn Windows,
wrangler login --use-keyringcould not set up keyring storage when the configuration path contained a space, such as aC:\Users\John Smithprofile, so credentials fell back to the plaintext file. Keyring setup now works for those paths and credentials are stored encrypted.#16405
c709bffThanks @ondraulehla! - Fixkv key listreturning only the first 1000 keys in local modeListing a local namespace with more than 1000 keys stopped after the first 1000 without any warning, so the output looked complete when it wasn't.
kv key listnow returns every key in local mode, with or without--prefix.#16490
bcd618dThanks @petebacondarwin! - Update Zod to 4.6.6 to address GHSA-mrhx-c7xc-m3w5The updated shared dependency fixes excessive memory consumption when validating oversized collections. This updates both the published Zod dependencies and the copies bundled into development tools and Workers.
Updated dependencies [
9e05ade,5f82a56,e651d7c,5f82a56,e651d7c,8a30d8e,bcd618d]:v4.152.0Minor Changes
#14900
08f22d3Thanks @mack-erel! - Support remote Hyperdrive bindings in local development{ "hyperdrive": [ { "binding": "HYPERDRIVE", "id": "<your-hyperdrive-id>", "remote": true } ] }#16357
182d6deThanks @Naapperas! - Add ajurisdictionsetting to WorkflowsA Workflow defined by the Worker can now set the jurisdiction that its instances run and store their data in, on either a
workflowsbinding or aworkflowexport:{ "workflows": [ { "binding": "MY_WORKFLOW", "name": "my-workflow", "class_name": "MyWorkflow", "jurisdiction": "eu" } ] }The accepted values are
eu,fedramp, andus.wrangler deployandwrangler triggers deploysend the jurisdiction when they create or update the Workflow. A Workflow's jurisdiction is set when it is created and cannot be changed afterwards, sowrangler deployandwrangler versions uploadstop before uploading when an existing Workflow has a different jurisdiction from the configured one. Leavingjurisdictionout keeps the Workflow's existing jurisdiction.@cloudflare/configadds the setting toexports.workflow(),cf migratecarries it over, andwrangler workflows describeprints it. Local development ignores it.Patch Changes
#16388
80a9f96Thanks @DevVettel! - Printwrangler auth token --jsonoutput regardless ofWRANGLER_LOGPreviously the JSON was written through the normal log channel, so setting
WRANGLER_LOGtowarn,errorornonemade the command exit successfully with empty stdout. Tools that parse this output, such as the OpenNext Cloudflare adapter in CI, then failed to find any credentials. The JSON is now always printed, like other--jsoncommands.#16361
2878645Thanks @GrosserNL! - Report the R2 bucket location returned by the API when creating a bucketwrangler r2 bucket create --locationprinted the requested location hint even when R2 ignored it. Recreating a deleted bucket name keeps the original location, so the success message could claim a placement the bucket does not have. The command now uses the location from the create response: it mentions the hint only when that location matches, and otherwise reports the location R2 actually applied.Updated dependencies [
08f22d3,a4eb57d]:Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.