NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4709 most downloaded on npm
Command-line interface for all things Cloudflare Workers
Last release 2 days ago
02 Oct 2026
Ships on a steady schedule
a new release about every 9 days
Nearly every release is documented
notes for 60 of the last 60 stable releases
119 versions withdrawn
withdrawn after publishing
14 years old
4955 releases · first in 2012
add an new experimentalMixedMode dev option to unstable_startWorker that allows developers to programmatically start a new mixed mode session using st
#9461 66edd2f Thanks @skepticfx! - Enforce disk limits on container builds
#9481 d1a1787 Thanks @WillTaylorDev! - Force autogenerated aliases to be fully lowercased.
#9480 1f84092 Thanks @dario-piotrowicz! - add experimentalMixedMode dev option to unstable_startWorker
add an new experimentalMixedMode dev option to unstable_startWorker
that allows developers to programmatically start a new mixed mode
session using startWorker.
Example usage:
// index.mjs
import { unstable_startWorker } from "wrangler";
await unstable_startWorker({
dev: {
experimentalMixedMode: true,
},
});
// wrangler.jsonc
{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "programmatic-start-worker-example",
"main": "src/index.ts",
"compatibility_date": "2025-06-01",
"services": [
{ "binding": "REMOTE_WORKER", "service": "remote-worker", "remote": true }
]
}
Updated dependencies [4ab5a40, 485cd08, e3b3ef5, 3261957]:
One column per quarter.
### Patch Changes - #9456 `db2cdc6` Thanks @WillTaylorDev! - Fix bug causing preview alias to always be generated.
db2cdc6 Thanks @WillTaylorDev! - Fix bug causing preview alias to always be generated.Updated dependencies [`8c7ce77`, `80e75f4`, `80e75f4`, `fac2f9d`, `92719a5`]:
03b8c1c Thanks @WillTaylorDev! - Provide ability for Wrangler to upload preview aliases during version upload.#9390 80e75f4 Thanks @penalosa! - Support additional Mixed Mode resources in Wrangler:
#9395 b3be057 Thanks @Maximo-Guk! - Add WRANGLER_CI_OVERRIDE_NETWORK_MODE_HOST for Workers CI
#9410 87f3843 Thanks @dario-piotrowicz! - enable consumers of unstable_readConfig to silence remote warnings
Updated dependencies [8c7ce77, 80e75f4, 80e75f4, fac2f9d, 92719a5]:
Specifically the exports have been added:
34b6174 Thanks @jamesopstad! - Hard fail on Node.js < 20. Wrangler no longer supports Node.js 18.x as it reached end-of-life on 2025-04-30. See https://github.com/nodejs/release?tab=readme-ov-file#end-of-life-releases.#9308 d3a6eb3 Thanks @dario-piotrowicz! - expose new utilities and types to aid consumers of the programmatic mixed-mode API
Specifically the exports have been added:
Experimental_MixedModeSession: type representing a mixed-mode sessionExperimental_ConfigBindingsOptions: type representing config-bindingsexperimental_pickRemoteBindings: utility for picking only the remote bindings from a record of start-worker bindings.unstable_convertConfigBindingsToStartWorkerBindings: utility for converting config-bindings into start-worker bindings (that can be passed to startMixedModeSession)#9347 b8f058c Thanks @penalosa! - Improve binding display on narrower terminals
Updated dependencies [d9d937a, e39a45f, fdae3f7]:
Now it is possible to target Wrangler at the FedRAMP High compliance region. There are two ways to signal to Wrangler to run in this mode:
#9321 6c03bde Thanks @petebacondarwin! - Add support for FedRAMP High compliance region
Now it is possible to target Wrangler at the FedRAMP High compliance region. There are two ways to signal to Wrangler to run in this mode:
"compliance_region": "fedramp_high" in a Wrangler configurationCLOUDFLARE_COMPLIANCE_REGION=fedramp_high environment variable when running WranglerIf both are provided and the values do not match then Wrangler will exit with an error.
When in this mode OAuth authentication is not supported. It is necessary to authenticate using a Cloudflare API Token acquired from the Cloudflare FedRAMP High dashboard.
Most bindings and commands are supported in this mode.
Resolves DEVX-1921.
#9330 34c71ce Thanks @edmundhung! - Updated internal configuration to use Miniflare’s new defaultPersistRoot instead of per-plugin persist flags
#8973 cc7fae4 Thanks @Caio-Nogueira! - Show latest instance by default on workflows instances describe command
#9335 6479fc5 Thanks @penalosa! - Redesign wrangler dev to more clearly present information and have a bit of a glow up ✨
#9329 410d985 Thanks @penalosa! - Hide logs in the startMixedModeSession() API
#9325 c2678d1 Thanks @edmundhung! - refactor: fallbacks to local image binding from miniflare when local mode is enabled
Updated dependencies [34c71ce, f7c82a4, 7ddd865, 6479fc5, e5ae13a]:
### Patch Changes - #9268 `7344344` Thanks @gabivlj! - wrangler containers delete handles API errors correctly
Previously it was not possible to provide a Worker name as a command line argument at the same time as setting the Wrangler environment. Now specifyin
#9288 3b8f7f1 Thanks @petebacondarwin! - allow --name and --env args on wrangler deploy
Previously it was not possible to provide a Worker name as a command line argument at the same time as setting the Wrangler environment.
Now specifying --name is supported and will override any names set in the Wrangler config:
wrangler.json
{
"name": "config-worker"
"env": {
"staging": { "name": "config-worker-env" }
}
}
| Command | Previous (Worker name) | Proposed (Worker name) | Comment |
|---|---|---|---|
| wrangler deploy --name=args-worker | "args-worker" | "args-worker" | CLI arg used |
| wrangler deploy --name=args-worker --env=staging | Error | "args-worker" | CLI arg used |
| wrangler deploy --name=args-worker --env=prod | Error | "args-worker" | CLI arg used |
| wrangler deploy | "config-worker" | "config-worker" | Top-level config used |
| wrangler deploy --env=staging | "config-worker-env" | "config-worker-env" | Named env config used |
| wrangler deploy --env=prod | "config-worker-prod" | "config-worker-prod" | CLI arg and top-level config combined |
#9265 16de0d5 Thanks @edmundhung! - docs: add documentation links to individual config properties in the JSON schema of the Wrangler config file
#9234 2fe6219 Thanks @emily-shen! - fix: add no-op props to ctx in getPlatformProxy to fix type mismatch
#9269 66d975e Thanks @dario-piotrowicz! - Wire up mixed-mode remote bindings for multi-worker wrangler dev
Under the --x-mixed-mode flag, make sure that bindings configurations with remote: true actually generate bindings to remote resources during a multi-worker wrangler dev session, currently the bindings included in this are: services, kv_namespaces, r2_buckets, d1_databases, queues and workflows.
Also include the ai binding since the bindings is already remote by default anyways.
#9151 5ab035d Thanks @gabivlj! - wrangler containers can be configured with the kind of application rollout on apply
#9231 02d40ed Thanks @dario-piotrowicz! - Wire up mixed-mode remote bindings for (single-worker) wrangler dev
Under the --x-mixed-mode flag, make sure that bindings configurations with remote: true actually generate bindings to remote resources during a single-worker wrangler dev session, currently the bindings included in this are: services, kv_namespaces, r2_buckets, d1_databases, queues and workflows.
Also include the ai binding since the bindings is already remote by default anyways.
#9277 db5ea8f Thanks @penalosa! - Support Mixed Mode for more binding types
#9266 f2a16f1 Thanks @petebacondarwin! - fix: setting triggers.crons:[] in Wrangler config should delete deployed cron schedules
#9245 b87b472 Thanks @penalosa! - Support Mixed Mode Dispatch Namespaces
Updated dependencies [db5ea8f, b87b472]:
Updated dependencies [`3b384e2`]:
#9257 33daa09 Thanks @penalosa! - Relax R2 bucket validation for pages dev commands
#9256 3b384e2 Thanks @penalosa! - Move the Analytics Engine simulator implementation from JSRPC to a Wrapped binding. This fixes a regression introduced in https://github.com/cloudflare/workers-sdk/pull/8935 that preventing Analytics Engine bindings working in local dev for Workers with a compatibility date prior to JSRPC being enabled.
Updated dependencies [3b384e2]:
In v4.15.0, Miniflare began stripping the CF-Connecting-IP header via a global outbound service, which led to a TCP connection regression due to a bug
#9246 d033a7d Thanks @edmundhung! - fix: strip CF-Connecting-IP header within fetch
In v4.15.0, Miniflare began stripping the CF-Connecting-IP header via a global outbound service, which led to a TCP connection regression due to a bug in Workerd. This PR patches the fetch API to strip the header during local wrangler dev sessions as a temporary workaround until the underlying issue is resolved.
Updated dependencies [f61a08e, ea71df3, d033a7d]:
`ts interface Env { SERVICE_BINDING: Fetcher; } `
#8794 02f0699 Thanks @eastlondoner! - This adds support for more accurate types for service bindings when running wrangler types. Previously, running wrangler types with a config including a service binding would generate an Env type like this:
interface Env {
SERVICE_BINDING: Fetcher;
}
This type was "correct", but didn't capture the possibility of using JSRPC to communicate with the service binding. Now, running wrangler types -c wrangler.json -c ../service/wrangler.json (the first config representing the current Worker, and any additional configs representing service bound Workers) will generate an Env type like this:
interface Env {
SERVICE_BINDING: Service<import("../service/src/index").Entrypoint>;
}
#8716 63a6504 Thanks @ItsWendell! - add --metafile flag to generate esbuild metadata file during build
#9122 f17ee08 Thanks @avenceslau! - Unhide wrangler workflows delete command
#9168 6b42c28 Thanks @dario-piotrowicz! - remove experimental MixedModeConnectionString type
remove the experimental MixedModeConnectionString type which
is now exposed by Miniflare instead
#7914 37af035 Thanks @andyjessop! - fix(miniflare): strip CF-Connecting-IP header from all outbound requests
#9161 53ba97d Thanks @lambrospetrou! - Fix d1 info command showing read_replication: [object Object]
#9183 f6f1a18 Thanks @dario-piotrowicz! - add remote option to initial bindings
add the remote option (initial implementation
gated behind --x-mixed-mode) for the following
bindings: service, kv, r2, d1, queue and workflow
#9149 415520e Thanks @penalosa! - Implement mixed mode proxy server & client
Updated dependencies [37af035, ceeb375, 349cffc, 362cb0b, 2cc8197, 6b42c28]:
make sure that unstable_startWorker can throw configuration related errors when:
#9124 d0d62e6 Thanks @dario-piotrowicz! - make that unstable_startWorker can correctly throw configuration errors
make sure that unstable_startWorker can throw configuration related errors when:
setConfig is called with the throwErrors argument set to trueadditionally when an error is thrown when unstable_startWorker is called make sure
that the worker is properly disposed (since, given the fact that it is not returned
by the utility the utility's caller wouldn't have any way to dispose it themselves)
Updated dependencies [`df5d1f6`, `4672bda`, `c6b3f10`]:
#9158 826c5e8 Thanks @petebacondarwin! - fix CallSite.toString() not to throw
#9159 c6b3f10 Thanks @petebacondarwin! - bump esbuild version to fix regression in 0.25.0
#8985 078c568 Thanks @gabivlj! - wrangler deploy is able to deploy new container versions
#9162 8c3cdc3 Thanks @petebacondarwin! - Do not report "d1 execute" command file missing error to Sentry
Updated dependencies [df5d1f6, 4672bda, c6b3f10]:
This experimental utility has no effect. More details will be shared as we roll out its functionality.
#9118 1cd30a5 Thanks @dario-piotrowicz! - fix: remove outdated js-doc comment for unstable_startDevWorker's entrypoint
#9120 11aa362 Thanks @dario-piotrowicz! - Add experimental_startMixedModeSession no-op utility
This experimental utility has no effect. More details will be shared as we roll out its functionality.
#7423 2be85d7 Thanks @penalosa! - Make sure custom build logging output is more clearly signposted, and make sure it doesn't interfere with the interactive dev session output.
#9112 3fe85d4 Thanks @penalosa! - Warn if the Node.js version is below Node.js 20
Previously, if you added modules rules such as /*.js or /*.json, specified no_bundle: true, and the entry-point to the Worker was in the project root
#9085 cdc88d8 Thanks @petebacondarwin! - Do not include .wrangler and Wrangler config files in additional modules
Previously, if you added modules rules such as **/*.js or **/*.json, specified no_bundle: true, and the entry-point to the Worker was in the project root directory, Wrangler could include files that were not intended, such as .wrangler/tmp/xxx.js or the Wrangler config file itself. Now these files are automatically skipped when trying to find additional modules by searching the file tree.
#9095 508a1a3 Thanks @petebacondarwin! - wrangler login put custom callback host and port into the auth URL
#9113 82e220e Thanks @dario-piotrowicz! - Add x-mixed-mode flag
This experimental flag currently has no effect. More details will be shared as we roll out its functionality.
Updated dependencies [357d42a]:
Updated dependencies [`d2ecc76`, `137d2da`]:
#8981 3b60131 Thanks @Caio-Nogueira! - Adds support for waitForEvent step type
#9083 137d2da Thanks @penalosa! - Support Tail Workers in local dev
#8975 9bf55aa Thanks @Caio-Nogueira! - Adds missing waiting status on the wrangler workflow instances list command
#9048 0b4d22a Thanks @garvit-gupta! - fix: Validate input file for Vectorize inserts
Updated dependencies [d2ecc76, 137d2da]:
Updated dependencies [`2c50115`]:
2c50115]:
Updated dependencies [`fc47c79`, `0838f1b`]:
#8983 f5ebb33 Thanks @Caio-Nogueira! - Remove open-beta disclaimer from workflows commands
#8990 6291fa1 Thanks @emily-shen! - fix: When generating Env types, set type of version metadata binding to WorkerVersionMetadata. This means it now correctly includes the timestamp field.
#8966 234afae Thanks @penalosa! - Internal refactor to use the createCommand utility
Updated dependencies [fc47c79, 0838f1b]:
In your configuration file, you can define a service binding with props:
#8640 5ce70bd Thanks @kentonv! - Add support for defining props on a Service binding.
In your configuration file, you can define a service binding with props:
{
"services": [
{
"binding": "MY_SERVICE",
"service": "some-worker",
"props": { "foo": 123, "bar": "value" }
}
]
}
These can then be accessed by the callee:
import { WorkerEntrypoint } from "cloudflare:workers";
export default class extends WorkerEntrypoint {
fetch() {
return new Response(JSON.stringify(this.ctx.props));
}
}
#8771 0cfcfe0 Thanks @dario-piotrowicz! - feat: add config.keep_names option
Adds a new option to Wrangler to allow developers to opt out of esbuild's keep_names option (https://esbuild.github.io/api/#keep-names). By default, Wrangler sets this to true
This is something developers should not usually need to care about, but sometimes
keep_names can create issues, and in such cases they will be now able to opt-out.
Example wrangler.jsonc:
{
"name": "my-worker",
"main": "src/worker.ts",
"keep_names": false
}
Updated dependencies [`62c40d7`]:
69864b4 Thanks @gnekich! - introduce callback-host and callback-port param for wrangler login command#8889 eab7ad9 Thanks @penalosa! - When Wrangler encounters an error, if the Bun runtime is detected it will now warn users that Wrangler does not officially support Bun.
#8673 5de2b9a Thanks @IRCody! - Add containers {info, list, delete} subcommands.
Updated dependencies [62c40d7]:
Updated dependencies [`511be3d`]:
#8950 bab1724 Thanks @edmundhung! - fix: include telemetry-related environment variables in release builds
#8903 085a565 Thanks @emily-shen! - disable eslint in generated types file
Updated dependencies [511be3d]:
which asset files were read from the file system
#8890 c912b99 Thanks @edmundhung! - update esbuild version to 0.25
#8711 4cc036d Thanks @CarmenPopoviciu! - Add the Pages deployment id to the JSON output for wrangler pages deployment list
#8244 84ecfe9 Thanks @CarmenPopoviciu! - feat: Add debug logs to capture assets upload status, specifically:
#8885 f2802f9 Thanks @CarmenPopoviciu! - Disambiguate the "No files to upload. Proceeding with deployment..." message
#8924 d2b44a2 Thanks @dario-piotrowicz! - fix redirected config env validation breaking wrangler pages commands
a validation check has recently been introduced to make wrangler error on deploy commands when an environment is specified and a redirected configuration is in use (the reason being that redirected configurations should not include any environment), this check is problematic with pages commands where the "production" environment is anyways set by default, to address this the validation check is being relaxed here on pages commands
Updated dependencies [f5413c5]:
Updated dependencies [`b7ac367`, `5388447`]:
Updated dependencies [`d454ad9`]:
d454ad9]:
this change improves that validation error message that users see when a redirected config file contains environments, by:
#8809 09464a6 Thanks @dario-piotrowicz! - improve error message when redirected config contains environments
this change improves that validation error message that users see when a redirected config file contains environments, by:
#8829 62df08a Thanks @cmackenzie1! - Add option --cors-origin none to remove CORS settings on a pipeline
Updated dependencies [afd93b9, 930ebb2]:
Replace --enable-worker-binding and --enable-http with --source worker and --source http (or --source http worker for both)
93267cf Thanks @edmundhung! - Support Secrets Store Secret bindings#8780 4e69fb6 Thanks @cmackenzie1! - - Rename wrangler pipelines show to wrangler pipelines get
--enable-worker-binding and --enable-http with --source worker and --source http (or
--source http worker for both)--file-template and --partition-template flags from wrangler pipelines create|updatewrangler pipelines get <pipeline>. Existing output is available using --format=json.wrangler pipelines create commands.#8596 75b454c Thanks @dario-piotrowicz! - add validation to redirected configs in regards to environments
add the following validation behaviors to wrangler deploy commands, that relate
to redirected configs (i.e. config files specified by .wrangler/deploy/config.json files):
--env=my-env) when using redirected
configs is incorrect, so these environments should be ignored and a warning should be
presented to the user#8795 d4c1171 Thanks @GregBrimble! - feat: Unhide wrangler pages functions build command.
This is already documented for Pages Plugins and by officially documenting it, we can ease the transition to Workers Assets for users of Pages Functions.
Updated dependencies [93267cf, ec7e621]:
Wrangler now informs user that specific permission might be not granted when fails to obtain membership info. The same information is provided when Wr
#8763 2650fd3 Thanks @garrettgu10! - R2 data catalog URIs now separate account ID and warehouse name with a slash rather than an underscore
#8341 196f51d Thanks @kotkoroid! - Improve error message when request to obtain membership info fails
Wrangler now informs user that specific permission might be not granted when fails to obtain membership info. The same information is provided when Wrangler is unable to fetch user's email.
Updated dependencies [e0efb6f, 0a401d0]:
Add --shard-count option for wrangler pipelines for more control over Pipeline throughput or file size
#8746 7427004 Thanks @emily-shen! - Log whether a command is operating on a remote or local resource
#8757 199caa4 Thanks @emily-shen! - fix: return actual error on wrangler secret bulk
#8750 80ef13c Thanks @emily-shen! - fix: include documentation_url in API Errors if provided
#8759 55b336f Thanks @garvit-gupta! - fix: Minor refactor for the r2 data catalog commands
#8753 245cfbd Thanks @cmackenzie1! - - Hide --transform-worker flag on wrangler pipelines <create|update> during private beta.
--shard-count option for wrangler pipelines <create|update> for more control over Pipeline throughput or file
sizeUpdated dependencies [007f322]:
Internal DOs still do not work with getPlatformProxy, but warn instead of crashing.
#8720 8df60b5 Thanks @lukevalenta! - Fix logic to derive resource name from binding by replacing all underscores with dashes
#8697 ec1f813 Thanks @emily-shen! - fix: stop getPlatformProxy crashing when internal DOs are present
Internal DOs still do not work with getPlatformProxy, but warn instead of crashing.
#8737 624882e Thanks @garvit-gupta! - fix: General improvements for the R2 catalog commands
### Minor Changes - #8548 `24c2c8f` Thanks @garvit-gupta! - feat: Add wrangler commands for R2 Data Catalog ### Patch Changes - #8583 `ecbab5d` Thanks
Use the workerd native implementation of createSecureContext and checkServerIdentity from node:tls. The functions have been implemented in cloudflare/
#8435 8e3688f Thanks @emily-shen! - fix: include assets binding when printing summary of bindings
#8675 f043b74 Thanks @vicb! - Bump @cloudflare/unenv-preset to 2.3.1
Use the workerd native implementation of createSecureContext and checkServerIdentity from node:tls. The functions have been implemented in cloudflare/workerd#3754.
Updated dependencies [`7682675`, `9c844f7`, `29cb306`]:
#8655 7682675 Thanks @emily-shen! - fix bug where assets in directories starting with . would crash the dev server
#8604 d8c0495 Thanks @dario-piotrowicz! - Amend pages dev error message when an environment is requested
#8536 e4b76e8 Thanks @gabivlj! - wrangler cloudchamber create explicitly sets IPv6 predefined
Updated dependencies [7682675, 9c844f7, 29cb306]:
Enable the recently implemented native APIs from node:crypto
#8575 4a5f270 Thanks @LuisDuarte1! - Add workflows delete API endpoint
#8578 5f151fc Thanks @LuisDuarte1! - Add terminate-all command to workflows
#8382 0d1240b Thanks @jvaughan-cloudflare! - Add Secrets Store command support to Wrangler CLI
#8569 1c94eee Thanks @vicb! - Bump @cloudflare/unenv-preset to 2.3.0
Enable the recently implemented native APIs from node:crypto
#8556 b7d6b7d Thanks @GregBrimble! - Add support for assets_navigation_prefer_asset_serving in Vite (dev and preview)
#8597 5d78760 Thanks @CarmenPopoviciu! - feat: Graduate experimental RPC support for Workers with assets in local dev
Updated dependencies [d8f1c49, b7d6b7d, 5d78760, c0d0cd0]:
This new command can be used to delete all existing messages in a Queue
#8258 9adbd50 Thanks @knickish! - Enable the creation of MySQL Hypedrive configs via the Wrangler CLI.
#8353 c4fa349 Thanks @jbwcloudflare! - Add new command to purge a Queue
This new command can be used to delete all existing messages in a Queue
#8461 86ab0ca Thanks @GregBrimble! - Add a 'allowTrailingCommas: true' option to improve IDE experience of 'wrangler.jsonc?'
#8550 5ae12a9 Thanks @vicb! - Bump @cloudflare/unenv-preset to 2.2.0
Use the workerd native implementation for node:tls
#8501 383dc0a Thanks @GregBrimble! - Add support for assets_navigation_prefers_asset_serving compatibility flag in wrangler dev
#8562 8278db5 Thanks @IRCody! - Add initial containers subcommand to wrangler.
#8376 a25f060 Thanks @CarmenPopoviciu! - feat: Make local dev RPC behaviour on par with production for Workers with assets
#8534 62d5471 Thanks @petebacondarwin! - improve the error messaging when the user provides neither an entry point nor an asset directory
#8528 2a43cdc Thanks @cmackenzie1! - Support wrangler types for Pipelines
#8579 29015e5 Thanks @cmackenzie1! - Allow wrangler pipelines update <pipelineName> --transform-worker none to remove transformations from a Pipeline.
Updated dependencies [9adbd50, dae7bd4, a25f060, a7bd79b]:
Updated dependencies [`ff26dc2`, `4ad78ea`]:
fd9dff8 Thanks @gabivlj! - wrangler deploy includes container configuration when uploading the script#8220 14680b9 Thanks @IRCody! - Fix a bug in cloudchamber build where it would still attempt to push an image if the build failed.
#8186 05973bb Thanks @IRCody! - Add cloudchamber images {list,delete} commands to list and delete images stored in cloudchamber managed registry.
Updated dependencies [ff26dc2, 4ad78ea]:
hyperdrive create test123 ... --ca-certificate-uuid=CA_CERT_UUID --mtls-certificate-uuid=MTLS_CERT_UUID
#8337 1b2aa91 Thanks @Ltadrian! - Add mTLS configuration fields to Hyperdrive command
hyperdrive create test123 ... --ca-certificate-uuid=CA_CERT_UUID --mtls-certificate-uuid=MTLS_CERT_UUID
#8401 b8fd1b1 Thanks @petebacondarwin! - Support no_bundle config in Pages for both dev and deploy.
This was already supported via a command line arg (--no-bundle).
#8472 4978e5b Thanks @edmundhung! - fix: throw explicit error for unknown mimetype during wrangler check startup
#8478 931b53d Thanks @penalosa! - Add wrangler types support for importable env and process.env
#8503 edf169d Thanks @GregBrimble! - Fix Workers Assets metafiles (_headers and _redirects) resolution when running Wrangler from a different directory
Updated dependencies [5ae180e, 74b0c73]:
…releasing this without considering it a breaking change.
#7334 869ec7b Thanks @penalosa! - Use --local by default for wrangler kv key and wrangler r2 object commands
#7334 869ec7b Thanks @dario-piotrowicz! - chore: remove deprecated getBindingsProxy
remove the deprecated getBindingsProxy utility which has been replaced with getPlatformProxy
#7334 869ec7b Thanks @penalosa! - Remove the deprecated --format argument on wrangler deploy and wrangler dev.
Remove deprecated config fields:
typewebpack_configminiflarebuild.uploadzone_idusage_modelexperimental_serviceskv-namespaces#7334 869ec7b Thanks @rozenmd! - Remove wrangler d1 backups
This change removes wrangler d1 backups, a set of alpha-only commands that would allow folks to interact with backups of their D1 alpha DBs.
For production D1 DBs, you can restore previous versions of your database with wrangler d1 time-travel and export it at any time with wrangler d1 export.
Closes #7470
#7334 869ec7b Thanks @rozenmd! - Remove --batch-size as an option for wrangler d1 execute and wrangler d1 migrations apply
This change removes the deprecated --batch-size flag, as it is no longer necessary to decrease the number of queries wrangler sends to D1.
Closes #7470
#7334 869ec7b Thanks @rozenmd! - Remove alpha support from wrangler d1 migrations apply
This change removes code that would take a backup of D1 alpha databases before proceeding with applying a migration.
We can remove this code as alpha DBs have not accepted queries in months.
Closes #7470
#7334 869ec7b Thanks @penalosa! - Remove the deprecated wrangler generate command. Instead, use the C3 CLI to create new projects: https://developers.cloudflare.com/pages/get-started/c3/
#7334 869ec7b Thanks @penalosa! - Remove the deprecated wrangler init --no-delegate-c3 command. wrangler init is still available, but will always delegate to C3.
#7334 869ec7b Thanks @penalosa! - Remove support for legacy assets.
This removes support for legacy assets using the --legacy-assets flag or legacy_assets config field. Instead, you should use Workers Assets
#7334 869ec7b Thanks @penalosa! - Remove the deprecated wrangler publish command. Instead, use wrangler deploy, which takes exactly the same arguments.
Additionally, remove the following deprecated commands, which are no longer supported.
wrangler configwrangler previewwrangler routewrangler subdomainRemove the following deprecated command aliases:
wrangler secret:*, replaced by wrangler secret *wrangler kv:*, replaced by wrangler kv *#7334 869ec7b Thanks @penalosa! - Remove the deprecated wrangler version command. Instead, use wrangler --version to check the current version of Wrangler.
#7334 869ec7b Thanks @penalosa! - The --node-compat flag and node_compat config properties are no longer supported as of Wrangler v4. Instead, use the nodejs_compat compatibility flag. This includes the functionality from legacy node_compat polyfills and natively implemented Node.js APIs. See https://developers.cloudflare.com/workers/runtime-apis/nodejs for more information.
If you need to replicate the behaviour of the legacy node_compat feature, refer to https://developers.cloudflare.com/workers/wrangler/migration/update-v3-to-v4/ for a detailed guide.
#7334 869ec7b Thanks @threepointone! - chore: update esbuild
This patch updates esbuild from 0.17.19 to 0.24.2. That's a big bump! Lots has gone into esbuild since May '23. All the details are available at https://github.com/evanw/esbuild/blob/main/CHANGELOG.md / https://github.com/evanw/esbuild/blob/main/CHANGELOG-2023.md.
We now support all modern JavasScript/TypeScript features suported by esbuild (as of December 2024). New additions include standard decorators, auto-accessors, and the using syntax.
0.18 introduced wider support for configuration specified via tsconfig.json https://github.com/evanw/esbuild/issues/3019. After observing the (lack of) any actual broken code over the last year for this release, we feel comfortable releasing this without considering it a breaking change.
0.19.3 introduced support for import attributes
import stuff from './stuff.json' with { type: 'json' }
While we don't currently expose the esbuild configuration for developers to add their own plugins to customise how modules with import attributes are bundled, we may introduce new "types" ourselves in the future.
0.19.0 introduced support for wildcard imports. Specifics here (https://github.com/evanw/esbuild/blob/main/CHANGELOG-2023.md#0190). tl;dr -
These 2 patterns will bundle all files that match the glob pattern into a single file.
const json1 = await import("./data/" + kind + ".json");
const json2 = await import(`./data/${kind}.json`);
This pattern will NOT bundle any matching patterns:
const path = "./data/" + kind + ".js";
const json2 = await import(path);
You can use find_additional_modules to bundle any additional modules that are not referenced in the code but are required by the project.
Now, this MAY be a breaking change for some. Specifically, if you were previously using the pattern (that will now include all files matching the glob pattern in the bundle), BUT find_additional_modules was NOT configured to include some files, those files would now be included in the bundle. For example, consider this code:
// src/index.js
export default {
async fetch() {
const url = new URL(request.url);
const name = url.pathname;
const value = (await import("." + name)).default;
return new Response(value);
},
};
Imagine if in that folder, you had these 3 files:
// src/one.js
export default "one";
// src/two.js
export default "two";
// src/hidden/secret.js
export default "do not share this secret";
And your wrangler.toml was:
name = "my-worker"
main = "src/index.js
Before this update:
http://localhost:8787/ would error. For example, a request to http://localhost:8787/one.js would error with No such module "one.js".wrangler.toml to include all .js files in the src folder:name = "my-worker"
main = "src/index.js
find_additional_modules = true
rules = [
{ type = "ESModule", globs = ["*.js"]}
]
Now, a request to http://localhost:8787/one.js would return the contents of src/one.js, but a request to http://localhost:8787/hidden/secret.js would error with No such module "hidden/secret.js". To include this file, you could expand the rules array to be:
rules = [
{ type = "ESModule", globs = ["**/*.js"]}
]
Then, a request to http://localhost:8787/hidden/secret.js will return the contents of src/hidden/secret.js.
After this update:
name = "my-worker"
main = "src/index.js
Now, a request to http://localhost:8787/one.js will return the contents of src/one.js, but a request to http://localhost:8787/hidden/secret.js will ALSO return the contents of src/hidden/secret.js. THIS MAY NOT BE WHAT YOU WANT. You can "fix" this in 2 ways:
// src/index.js
export default {
async fetch() {
const name = new URL(request.url).pathname;
const moduleName = "./" + name;
const value = (await import(moduleName)).default;
return new Response(value);
},
};
Now, no extra modules are included in the bundle, and a request to http://localhost:8787/hidden/secret.js will throw an error. You can use the find_additional_modules feature to include it again. 2. Don't use the wildcard import pattern:
// src/index.js
import one from "./one.js";
import two from "./two.js";
export default {
async fetch() {
const name = new URL(request.url).pathname;
switch (name) {
case "/one.js":
return new Response(one);
case "/two.js":
return new Response(two);
default:
return new Response("Not found", { status: 404 });
}
},
};
Further, there may be some files that aren't modules (js/ts/wasm/text/binary/etc) that are in the folder being included (For example, a photo.jpg file). This pattern will now attempt to include them in the bundle, and throw an error. It will look like this:
[ERROR] No loader is configured for ".png" files: src/photo.jpg
To fix this, simply move the offending file to a different folder.
In general, we DO NOT recommend using the wildcard import pattern. If done wrong, it can leak files into your bundle that you don't want, or make your worker slightly slower to start. If you must use it (either with a wildcard import pattern or with find_additional_modules) you must be diligent to check that your worker is working as expected and that you are not leaking files into your bundle that you don't want. You can configure eslint to disallow dynamic imports like this:
// eslint.config.js
export default [
{
rules: {
"no-restricted-syntax": [
"error",
{
selector: "ImportExpression[argument.type!='Literal']",
message:
"Dynamic imports with non-literal arguments are not allowed.",
},
],
},
},
];
#7334 869ec7b Thanks @pmiguel! - Remove worker name prefix from KV namespace create
When running wrangler kv namespace create <name>, previously the name of the namespace was automatically prefixed with the worker title, or worker- when running outside the context of a worker.
After this change, KV namespaces will no longer get prefixed, and the name used is the name supplied, verbatim.
#7334 869ec7b Thanks @penalosa! - Packages in Workers SDK now support the versions of Node that Node itself supports (Current, Active, Maintenance). Currently, that includes Node v18, v20, and v22.
#7334 869ec7b Thanks @emily-shen! - Include runtime types in the output of wrangler types by default
wrangler types will now produce one file that contains both Env types and runtime types based on your compatibility date and flags. This is located at worker-configuration.d.ts by default.
This behaviour was previously gated behind --experimental-include-runtime. That flag is no longer necessary and has been removed. It has been replaced by --include-runtime and --include-env, both of which are set to true by default. If you were previously using --x-include-runtime, you can drop that flag and remove the separate runtime.d.ts file.
If you were previously using @cloudflare/workers-types we recommend you run uninstall (e.g. npm uninstall @cloudflare/workers-types) and run wrangler types instead. Note that @cloudflare/workers-types will continue to be published.
#7334 869ec7b Thanks @penalosa! - feat: prompt users to rerun wrangler types during wrangler dev
If a generated types file is found at the default output location of wrangler types (worker-configuration.d.ts), remind users to rerun wrangler types if it looks like they're out of date.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
The bulk put api has an optional "base64" boolean property for each key. Before storing the key, the value should be decoded from base64.
#8383 8d6d722 Thanks @matthewdavidrodgers! - Make kv bulk put --local respect base64:true
The bulk put api has an optional "base64" boolean property for each key. Before storing the key, the value should be decoded from base64.
For real (remote) kv, this is handled by the rest api. For local kv, it seems the base64 field was ignored, meaning encoded base64 content was stored locally rather than the raw values.
To fix, we need to decode each value before putting to the local miniflare namespace when base64 is true.
#8273 e3efd68 Thanks @penalosa! - Support AI, Vectorize, and Images bindings when using @cloudflare/vite-plugin
#8427 a352798 Thanks @vicb! - update unenv-preset dependency to fix bug with Performance global
Fixes #8407 Fixes #8409 Fixes #8411
#8390 53e6323 Thanks @GregBrimble! - Parse and apply metafiles (_headers and _redirects) in wrangler dev for Workers Assets
#8392 4d9d9e6 Thanks @jahands! - fix: retry zone and route lookup API calls
In rare cases, looking up Zone or Route API calls may fail due to transient errors. This change improves the reliability of wrangler deploy when these errors occur.
Also fixes a rare issue where concurrent API requests may fail without correctly throwing an error which may cause a deployment to incorrectly appear successful.
Updated dependencies [8242e07, 53e6323]:
### Minor Changes - #8367 `7b6b0c2` Thanks @jonesphillip! - Deprecated --id parameter in favor of --name for both the wrangler r2 bucket lifecycle and
7b6b0c2 Thanks @jonesphillip! - Deprecated --id parameter in favor of --name for both the wrangler r2 bucket lifecycle and wrangler r2 bucket lock commandsThis commit implements a very basic Proxy Worker skeleton, and wires it in the "pipeline" miniflare creates for assets. This Worker will be incrementa
#8338 2d40989 Thanks @GregBrimble! - feat: Upload _headers and _redirects if present with Workers Assets as part of wrangler deploy and wrangler versions upload.
#8288 cf14e17 Thanks @CarmenPopoviciu! - feat: Add assets Proxy Worker skeleton in miniflare
This commit implements a very basic Proxy Worker skeleton, and wires it in the "pipeline" miniflare creates for assets. This Worker will be incrementally worked on, but for now, the current implementation will forward all incoming requests to the Router Worker, thus leaving the current assets behaviour in local dev, the same.
This is an experimental feature available under the --x-assets-rpc flag: wrangler dev --x-assets-rpc.
#8216 af9a57a Thanks @ns476! - Support Images binding in wrangler types
#8304 fbba583 Thanks @jahands! - chore: add concurrency and caching for Zone IDs and Workers routes lookups
Workers with many routes can result in duplicate Zone lookups during deployments, making deployments unnecessarily slow. This compounded by the lack of concurrency when making these API requests.
This change deduplicates these requests and adds concurrency to help speed up deployments.
Updated dependencies [2d40989, da568e5, cf14e17, 79c7810]:
These new commands allow users to pause and resume the delivery of messages to Queue Consumers
#8256 f59d95b Thanks @jbwcloudflare! - Add two new Queues commands: pause-delivery and resume-delivery
These new commands allow users to pause and resume the delivery of messages to Queue Consumers
#8274 fce642d Thanks @emily-shen! - fix bindings to entrypoints on the same worker in workers with assets
#8201 2cad136 Thanks @ichernetsky-cf! - fix: interactively list Cloudchamber deployments using labels
#8289 a4909cb Thanks @penalosa! - Add the experimental --x-assets-rpc flag to gate feature work to support JSRPC with Workers + Assets projects.
Updated dependencies [fce642d, a4909cb]:
### Minor Changes - #7977 `36ef9c6` Thanks @jkoe-cf! - Added wrangler r2 commands for bucket lock configuration ### Patch Changes - #8248 `1cb2d34` Th
Your coding agent can read these notes before it upgrades. Set up the MCP server →