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
This change enables users to select the environment for commands such as CLOUDFLARE_ENV=prod wrangler versions upload. The --env command line argument
#11345 d524e55 Thanks @penalosa! - Enable experimental support for autoconfig-powered Astro projects
#11228 43903a3 Thanks @petebacondarwin! - Support CLOUDFLARE_ENV environment variable for selecting the active environment
This change enables users to select the environment for commands such as CLOUDFLARE_ENV=prod wrangler versions upload. The --env command line argument takes precedence.
The CLOUDFLARE_ENV environment variable is mostly used with the @cloudflare/vite-plugin to select the environment for building the Worker to be deployed. This build also generates a "redirected deploy config" that is flattened to only contain the active environment.
To avoid accidentally deploying a version that is built for one environment to a different environment, there is an additional check to ensure that if the user specifies an environment in Wrangler it matches the original selected environment from the build.
One column per quarter.
It is enabled when the enable_nodejs_domain_module compatibility flag is set.
#11219 524a6e5 Thanks @Ltadrian! - Implement Hyperdrive binding TLS miniflare proxy. This will allow for wrangler dev hyperdrive bindings to connect to external
databases that require TLS.
#11233 c922a81 Thanks @emily-shen! - Add containers.unsafe to allow internal users to use additional container features
#11353 0cf696d Thanks @vicb! - Use the native node:domain module when available
It is enabled when the enable_nodejs_domain_module compatibility flag is set.
#11328 bb44120 Thanks @ascorbic! - Fixes a bug that caused wrangler deploy to hang when deploying SvelteKit sites with experimental autoconfig
#11025 4a158e9 Thanks @devin-ai-integration! - Use the native node:wasi module when available
It is enabled when the enable_nodejs_wasi_module compatibility flag is set.
Updated dependencies [0cf696d, 524a6e5, 4a158e9]:
Updated dependencies [`e5ec8cf`]:
#11344 c758809 Thanks @dario-piotrowicz! - Fix: mark the r2 bulk command as hidden and experimental
#11339 dfba912 Thanks @dario-piotrowicz! - Fix wrangler deploy erroring when it pulls down remote configs of workers containing an assets binding
Updated dependencies [e5ec8cf]:
For instance, previously running wrangler docs would give the following output:
#10703 c5c4ee5 Thanks @danlapid! - Add support for streaming tail consumers in local dev. This is an experimental new feature that allows you to register a tailStream() handler (compared to the existing tail() handler), which will receive streamed tail events from your Worker (compared to the tail() handler, which only receives batched events after your Worker has finished processing).
#11251 7035804 Thanks @penalosa! - When the WRANGLER_HIDE_BANNER environment variable is provided, Wrangler will no longer display a version banner. This applies to all commands.
For instance, previously running wrangler docs would give the following output:
> wrangler docs
⛅️ wrangler 4.47.0
───────────────────
Opening a link in your default browser: https://developers.cloudflare.com/workers/wrangler/commands/
With WRANGLER_HIDE_BANNER, this is now:
> WRANGLER_HIDE_BANNER=true wrangler docs
Opening a link in your default browser: https://developers.cloudflare.com/workers/wrangler/commands/
#11285 d014fa7 Thanks @vicb! - Implement the wrangler r2 bulk put bucket-name --filename list.json command.
The command uploads multiple objects to an R2 bucket.
The list of object is provided as a JSON encoded file via --filename. It is a list of key and file (respectively the name and the content for the object).
[
{ "key": "/path/to/obj", "file": "/path/to/file_1"},
{ "key": "/path/to/other/obj", "file": "/path/to/file_2"},
// ...
]
Uploads are executed concurrently and the level of concurrency can be set via --concurrency.
The command supports the same options as wrangler r2 object put, minus --file, and --pipe and plus --concurrency
#11268 15b8460 Thanks @penalosa! - Support SvelteKit projects in autoconfig
#11258 2011b6a Thanks @dario-piotrowicz! - Add --dry-run flag to wrangler setup and also a dryRun option to runAutoConfig
#11261 a352c7f Thanks @petebacondarwin! - Avoid using object lookup for OAuth Error classes
#11286 8e99766 Thanks @dario-piotrowicz! - fix: make sure that experimental_patchConfig doesn't throw if it encounters a null value
#11278 92afbba Thanks @ascorbic! - Fixes a bug that caused .dev.vars to be ignored in OpenNext
#11244 65b4afe Thanks @petebacondarwin! - Internal refactoring to improve error traceability in wrangler dev
#11238 da8442f Thanks @jamesopstad! - Add unstable_getDurableObjectClassNameToUseSQLiteMap export. This is an internal function for use in the Vite plugin.
#11266 09cb720 Thanks @penalosa! - Use the smol-toml library for parsing TOML instead of @iarna/toml
#11236 793e2b4 Thanks @ascorbic! - Refresh expired preview tokens when running in remote dev mode
#11286 8e99766 Thanks @dario-piotrowicz! - fix: wrangler deploy failing to patch local wrangler.jsonc files if the remote tail_consumers value is null
#11275 9cbf126 Thanks @dario-piotrowicz! - Ensure that wrangler deploy run with a positional argument or with --assets does not trigger the autoconfig process (even with --experimental-autoconfig)
#11242 dd1e560 Thanks @dario-piotrowicz! - Fix: make sure that remote proxy sessions's debug logs are enabled when the wrangler log level is set to "debug"
Updated dependencies [c5c4ee5, d0041e2, 827d017]:
If no port is specified, Wrangler now probes the default port and the 10 consecutive ports after it before falling back to a random port. This will he
#11212 3908162 Thanks @dario-piotrowicz! - Add autoconfig changes summary for wrangler deploy --x-autoconfig with the option for users to cancel the operation
#11229 14d79f2 Thanks @dario-piotrowicz! - Enables experimental-deploy-remote-diff-check flag by default (the flag is still present for now so that users can turn it off if needed) and improves the remote config diffing logic (to include less noise in the diff presented to the user)
#11245 dfc6513 Thanks @vicb! - Change how Wrangler selects default ports for dev sessions.
If no port is specified, Wrangler now probes the default port and the 10 consecutive ports after it before falling back to a random port. This will help getting a stable port number across dev sessions. Both the http server and inspector ports are affected.
When running wrangler deploy --experimental-autoconfig, after the automatic project settings detection Wrangler will now present users the opportunity
#11201 5286309 Thanks @avenceslau! - Add wrangler workflows instances restart command
#11214 5cf8a39 Thanks @penalosa! - Add the experimental wrangler setup command to run autoconfig outside of the deploy flow.
#11187 8abc789 Thanks @dario-piotrowicz! - Add possibility for users to edit their project settings during autoconfig
When running wrangler deploy --experimental-autoconfig, after the automatic project settings detection Wrangler will now present users the opportunity to customize the auto-detected project's settings
#11143 2d16610 Thanks @FlorentCollin! - Improve the formatting of the D1 execute command to always show the duration in milliseconds with two decimal places.
#11178 63defa2 Thanks @ascorbic! - Log a more helpful error when attempting to "r2 object put" a non-existent file
#11199 70d3d4a Thanks @penalosa! - Add telemetry to autoconfig
#11186 38396ed Thanks @hoodmane! - Removed warning when deploying a Python worker
#11024 cdcecfc Thanks @devin-ai-integration! - Use the native node:trace_events module when available
It is enabled when the enable_nodejs_trace_events_module compatibility flag is set.
#11195 e85f965 Thanks @ascorbic! - Ignores .dev.vars if --env-file has been explicitly passed
Previously, .dev.vars would always be read first, and then any file passed with --env-file would override variables in .dev.vars. This meant there was no way to ignore .dev.vars if you wanted to use a different env file. Now, if --env-file is passed, .dev.vars will be ignored entirely.
#11181 88aa707 Thanks @petebacondarwin! - add more logging around Wrangler authentication to help diagnose issues
Updated dependencies [dd7d584, 4259256, cdcecfc]:
Note this is a closed/experimental command that will not work without the appropriate account-level capabilities.
#11183 240ebeb Thanks @dario-piotrowicz! - expose experimental_getDetailsForAutoConfig and experimental_runAutoConfig APIs that provide respectively the autoconfig detection and execution functionalities
#11180 53b0fce Thanks @penalosa! - Detect non-framework static sites
#11162 c3ed531 Thanks @dario-piotrowicz! - add a remoteBindings option to getPlatformProxy to allow the disabling of remote bindings
#11164 305d7bf Thanks @penalosa! - Implement experimental autoconfig flow for static sites
#10605 b55a3c7 Thanks @emily-shen! - Add command to configure credentials for non-Cloudflare container registries
Note this is a closed/experimental command that will not work without the appropriate account-level capabilities.
#11078 5d7c4c2 Thanks @simonha9! - Add jurisdiction support to d1 db creation via command-line argument
#11160 05440a1 Thanks @dario-piotrowicz! - Allows auto-update of the local Wrangler configuration file to match remote configuration when running wrangler deploy --env <TARGET_ENV>
When running wrangler deploy, with --x-remote-diff-check and after cancelling the deployment due to destructive changes present in the local config file, Wrangler offers to update the Wrangler configuration file to match the remote configuration. This wasn't however enabled when a target environment was specified (via the --env|-e flag). Now this will also apply when an environment is targeted.
#11162 c3ed531 Thanks @dario-piotrowicz! - Update the description of the --local flag for the wrangler dev command to clarify that it disables remote bindings, also un-deprecate and un-hide it
#11162 c3ed531 Thanks @dario-piotrowicz! - Fix bindings with remote: true being logged as remote when run via wrangler dev --local
Updated dependencies [1ae020d]:
Now the argument values that are captured come from an allow list, and can be marked as ALLOW (capture the real value) or REDACT (capture as " ").
#11133 8ffbd17 Thanks @petebacondarwin! - Reduce the amount of arguments being passed in metrics capture.
Now the argument values that are captured come from an allow list, and can be marked as ALLOW (capture the real value) or REDACT (capture as "<REDACTED>").
#11033 77ed7e2 Thanks @dario-piotrowicz! - Offer to update the local Wrangler configuration file to match remote configuration when running wrangler deploy
When running wrangler deploy, with --x-remote-diff-check, Wrangler will display the difference between local and remote configuration.
If there would be a destructive change to the remote configuration, the user is given the option to cancel the deployment.
In the case where the user does cancel deployment, Wrangler will now also offer to update the local Wrangler configuration file to match the remote configuration.
#11139 bb00f9d Thanks @devin-ai-integration! - Updated cron trigger documentation links and improved error message to include instructions for testing cron triggers locally
#11135 ed666a1 Thanks @penalosa! - Implement tail-based logging for wrangler dev remote mode, behind the --x-tail-tags flag. This will become the default in the future.
#11149 22f25fd Thanks @penalosa! - Add no-op autoconfig logic behind an experimental flag
Updated dependencies [90a2566, 14f60e8]:
D1 commands (execute, export, migrations apply, migrations list, delete, time-travel) now display whether they're running against local or remote data
#11117 6822aaf Thanks @emily-shen! - fix: show local/remote status before D1 command confirmations
D1 commands (execute, export, migrations apply, migrations list, delete, time-travel) now display whether they're running against local or remote databases before showing confirmation prompts. This prevents confusion about which database will be affected by the operation.
#11077 bce8142 Thanks @petebacondarwin! - Ensure that process.env is case-insensitive on Windows
The object that holds the environment variables in process.env does not care about the case of its keys
in Windows. For example, process.env.SystemRoot and process.env.SYSTEMROOT will refer to the same value.
Previously, when merging fields from .env files we were replacing this native object with a vanilla
JavaScript object, that is case-insensitive, and so sometimes environment variables appeared to be missing
when in reality they just had different casing.
### Patch Changes - #11097 `55657eb` Thanks @penalosa! - Extract internal APIs into a new @cloudflare/workers-utils package - #11118 `d47f166` Thanks
--e now aliases --env only, and NOT --expires.
#10959 d0208fe Thanks @devin-ai-integration! - Fixed conflict between --env and --expires flags in wrangler r2 object put.
--e now aliases --env only, and NOT --expires.
#10915 dbe51c1 Thanks @devin-ai-integration! - Fixed self-bindings (service bindings to the same worker) showing as [not connected] in wrangler dev. Self-bindings now correctly show as [connected] since a worker is always available to itself.
#10913 d4f2daf Thanks @devin-ai-integration! - Fixed duplicate warning messages appearing during wrangler dev when configuration changes or state transitions occur
To use this feature, add a binding to your config file _without_ a resource ID:
#11030 1a8088a Thanks @penalosa! - Enable automatic resource provisioning by default in Wrangler. This is still an experimental feature, but we're turning on the flag by default to make it easier for people to test it and try it out. You can disable the feature using the --no-x-provision flag. It currently works for R2, D1, and KV bindings.
To use this feature, add a binding to your config file without a resource ID:
{
"kv_namespaces": [{ "binding": "MY_KV" }],
"d1_databases": [{ "binding": "MY_DB" }],
"r2_buckets": [{ "binding": "MY_R2" }]
}
wrangler dev will automatically create these resources for you locally, and when you next run wrangler deploy Wrangler will call the Cloudflare API to create the requested resources and link them to your Worker. They'll stay linked across deploys, and you don't need to add the resource IDs to the config file for future deploys to work. This is especially good for shared templates, which now no longer need to include account-specific resource ID when adding a binding.
#11037 4bd4c29 Thanks @danielrs! - Better Wrangler subdomain defaults warning.
Improves the warnings that we show users when either worker_dev or preview_urls are missing.
#10927 31e1330 Thanks @dom96! - Implements python_modules.excludes wrangler config field
[python_modules]
excludes = ["**/*.pyc", "**/__pycache__"]
#10741 2f57345 Thanks @penalosa! - Remove obsolete --x-remote-bindings flag
Updated dependencies [ca6c010]:
Originally, we were defaulting config.preview_urls to true, but we were accidentally enabling Preview URLs for users that only had config.workers_dev=
#10939 d4b4c90 Thanks @danielrs! - Config preview_urls defaults to workers_dev value.
Originally, we were defaulting config.preview_urls to true, but we
were accidentally enabling Preview URLs for users that only had
config.workers_dev=false.
Then, we set the default value of config.preview_urls to false, but we
were accidentally disabling Preview URLs for users that only had
config.workers_dev=true.
Rather than defaulting config.preview_urls to true or false, we
default to the resolved value of config.workers_dev. Should result in a
clearer user experience.
#11027 1a2bbf8 Thanks @jamesopstad! - Statically replace the value of process.env.NODE_ENV with development for development builds and production for production builds if it is not set. Else, use the given value. This ensures that libraries, such as React, that branch code based on process.env.NODE_ENV can be properly tree shaken.
#9705 0ee1a68 Thanks @hiendv! - Add params type to Workflow type generation. E.g.
interface Env {
MY_WORKFLOW: Workflow<
Parameters<import("./src/index").MyWorkflow["run"]>[0]["payload"]
>;
}
#10867 dd5f769 Thanks @austin-mc! - Add media binding support
#11018 5124818 Thanks @dario-piotrowicz! - Improve potential errors thrown by startRemoteProxySession by including more information
#11019 6643bd4 Thanks @dario-piotrowicz! - Fix observability.logs.persist being flagged as an unexpected field during the wrangler config file validation
#10768 8211bc9 Thanks @dario-piotrowicz! - Update logs handling to use the new handleStructuredLogs miniflare option
#10997 3bb034f Thanks @nikitassharma! - When either WRANGLER_OUTPUT_FILE_PATH or WRANGLER_OUTPUT_FILE_DIRECTORY are set
in the environment, then command failures will append a line to the output file
encoding the error code and message, if present.
#10986 43503c7 Thanks @emily-shen! - fix: cleanup any running containers again on wrangler dev exit
#11000 a6de9db Thanks @jonboulle! - always load container image into local store during build
BuildKit supports different build drivers. When using the more modern docker-container driver (which is now the default on some systems, e.g. a standard Docker installation on Fedora Linux), it will not automatically load the built image into the local image store. Since wrangler expects the image to be there (e.g. when calling getImageRepoTags), it will thus fail, e.g.:
⎔ Preparing container image(s)...
[+] Building 0.3s (8/8) FINISHED docker-container:default
[...]
WARNING: No output specified with docker-container driver. Build result will only remain in the build cache. To push result image into registry use --push or to load image into docker use --load
✘ [ERROR] failed inspecting image locally: Error response from daemon: failed to find image cloudflare-dev/sandbox:f86e40e4: docker.io/cloudflare-dev/sandbox:f86e40e4: No such image
Explicitly setting the --load flag (equivalent to -o type=docker) during the build fixes this and should make the build a bit more portable without requiring users to change their default build driver configuration.
#10994 d39c8b5 Thanks @pombosilva! - Make Workflows instances list command cursor based
#10892 7d0417b Thanks @dario-piotrowicz! - improve the diffing representation for wrangler deploy (run under --x-remote-diff-check)
Updated dependencies [36d7054, dd5f769, ee7d710, 8211bc9]:
Writing back changes to the user's config file (not necessary, but can make it resilient to binding name changes)
940b44d Thanks @devin-ai-integration! - feat: wrangler init --from-dash now generates wrangler.jsonc config files instead of wrangler.toml files#10938 e52d0ec Thanks @penalosa! - Acquire Cloudflare Access tokens for additional requests made during a wrangler dev --remote session
#10923 2429533 Thanks @emily-shen! - fix: update docker manifest inspect to use full image registry uri when checking if the image exists remotely
#10521 88b5b7f Thanks @penalosa! - Improves the Wrangler auto-provisioning feature (gated behind the experimental flag --x-provision) by:
--dry-run, which previously threw an error when your config file had auto provisioned resourcesbucket_name from the config file on uploadwrangler r2 bucket catalog compaction enable [namespace] [table]
#10881 ce832d5 Thanks @garvit-gupta! - Add table-level compaction commands for R2 Data Catalog:
wrangler r2 bucket catalog compaction enable <bucket> [namespace] [table]wrangler r2 bucket catalog compaction disable <bucket> [namespace] [table]This allows you to enable and disable automatic file compaction for a specific R2 data catalog table.
#10888 d0ab919 Thanks @lrapoport-cf! - Clarify that wrangler check startup generates a local CPU profile
Updated dependencies [42e256f, 4462bc1]:
Updated dependencies [`51f9dc1`, `f29b0b0`, `1334102`]:
#10865 26adce7 Thanks @WillTaylorDev! - Respect keep_vars for wrangler versions upload.
#10833 196ccbf Thanks @cmackenzie1! - Validate Pipeline entity names in Wrangler config before sending to the API.
#10856 1334102 Thanks @anonrig! - Removes unnecessary calls to "node:os"
Updated dependencies [51f9dc1, f29b0b0, 1334102]:
Updated dependencies [`2594130`]:
103fbf0 Thanks @petebacondarwin! - Allow WRANGLER_SEND_ERROR_REPORTS env var to override whether to report Wrangler crashes to Sentry#10757 59d5911 Thanks @dario-piotrowicz! - fix console.debug logs not being logged at the info level (as users expect)
Updated dependencies [2594130]:
Add a new flag: --strict that makes the wrangler deploy command be more strict and not deploy workers when the deployment could be potentially problem
#10507 21a0bef Thanks @dario-piotrowicz! - Add strict mode for the wrangler deploy command
Add a new flag: --strict that makes the wrangler deploy command be more strict and not deploy workers when the deployment could be potentially problematic. This "strict mode" currently only affects non-interactive sessions where conflicts with the remote settings for the worker (for example when the worker has been re-deployed via the dashboard) will cause the deployment to fail instead of automatically overriding the remote settings.
#10710 7f2386e Thanks @penalosa! - Add prompt to resource creation flow allowing for newly created resources to be remote.
#10822 4c06766 Thanks @edmundhung! - fix: skip banner when using --json flag in wrangler pages deployment commands
#10838 d3aee31 Thanks @edmundhung! - fix: skip banner when using --json flag in wrangler queues subscription commands
#10829 59e8ef0 Thanks @edmundhung! - fix: skip banner when using --json flag in wrangler pipelines commands
#10764 79a6b7d Thanks @emily-shen! - containers: default max_instances to 20 instead of 1.
#10844 7a4d0da Thanks @mikenomitch! - Adds new Container instance types, and rename dev to lite and standard to standard-1. The new instance_types are now:
| Instance Type | vCPU | Memory | Disk |
|---|---|---|---|
| lite (previously dev) | 1/16 | 256 MiB | 2 GB |
| basic | 1/4 | 1 GiB | 4 GB |
| standard-1 (previously standard) | 1/2 | 4 GiB | 8 GB |
| standard-2 | 1 | 6 GiB | 12 GB |
| standard-3 | 2 | 8 GiB | 16 GB |
| standard-4 | 4 | 12 GiB | 20 GB |
#10634 62656bd Thanks @emily-shen! - fix: error if the container image uri has an account id that doesn't match the current account
#10761 886e577 Thanks @petebacondarwin! - switch zone route warning to an info message
#10734 8d7f32e Thanks @penalosa! - Improve formatting of logged errors in some cases
#10832 f9d37db Thanks @petebacondarwin! - retry subdomain requests to be more resilient to flakes
#10770 835d6f7 Thanks @danielrs! - Enabling or disabling workers_dev is often an indication that
the user is also trying to enable or disable preview_urls. Warn the
user when these enter mixed state.
#10764 79a6b7d Thanks @emily-shen! - fix: respect the log level set by wrangler when logging using @cloudflare/cli
Updated dependencies [c8d5282, bffd2a9]:
Workflow bindings are not supported in practice when using getPlatformProxy(). But their existence in a Wrangler config file should not prevent other
#10602 ff82d80 Thanks @tukiminya! - fix: update Secrets Store command status from alpha to open-beta
#10623 7a6381c Thanks @IRCody! - Handle more cases for correctly resolving the full uri for an image when using containers push.
#10779 325d22e Thanks @hoodmane! - Add fallthrough: true for python_modules data rule
#10112 8d07576 Thanks @devin-ai-integration! - fix: allow Workflow bindings when calling getPlatformProxy()
Workflow bindings are not supported in practice when using getPlatformProxy().
But their existence in a Wrangler config file should not prevent other bindings from working.
Previously, calling getPlatformProxy() would crash if there were any Workflow bindings defined.
Now, instead, you get a warning telling you that these bindings are not available.
#10769 0a554f9 Thanks @penalosa! - Mark more errors as UserError to disable Sentry reporting
#10679 6244a9e Thanks @KianNH! - Fix rendering for nested objects in containers list and containers info [ID]
#10785 d09cab3 Thanks @pombosilva! - Workflows names and instance IDs are now properly validated with production limits.
Updated dependencies [6ff41a6, 0c208e1, 2432022, d0801b1, 0a554f9]:
### Patch Changes - #10771 `b455281` Thanks @penalosa! - Fix Worker Loader binding type
### Patch Changes - #10668 `a57149f` Thanks @danielrs! - Support the deletion of secrets with complex names
Updated dependencies [`06e9a48`]:
a7ac751 Thanks @jonesphillip! - Changes --fileSizeMB to --file-size for wrangler r2 bucket catalog compaction command.
Small fixes for pipelines commands.#10706 81fd733 Thanks @1000hz! - Fixed an issue that caused some Workers to have an incorrect service tag applied when using a redirected configuration file (as used by the Cloudflare Vite plugin). This resulted in these Workers not being correctly grouped with their sibling environments in the Cloudflare dashboard.
Updated dependencies [06e9a48]:
Updated dependencies [`555a6da`, `262393a`, `3ec1f65`, `a434352`, `328e687`, `b4a4311`]:
#10647 555a6da Thanks @efalcao! - VPC service binding support
#10612 97a72cc Thanks @jonesphillip! - Added new pipelines commands (pipelines, streams, sinks, setup), moved old pipelines commands behind --legacy
#10652 acd48ed Thanks @edmundhung! - Rename Hyperdrive local connection string environment variable from WRANGLER_HYPERDRIVE_LOCAL_CONNECTION_STRING_<BINDING_NAME> to CLOUDFLARE_HYPERDRIVE_LOCAL_CONNECTION_STRING_<BINDING_NAME>. The old variable name is still supported but will now show a deprecation warning.
#10721 55a10a3 Thanks @penalosa! - Stabilise Worker Loader bindings
Updated dependencies [`b59e3e1`, `e9b0c66`, `6caf938`, `88132bc`]:
#10654 a4e2439 Thanks @laplab! - Switch to WRANGLER_R2_SQL_AUTH_TOKEN env variable for R2 SQL secret. Update the response format for R2 SQL
#10676 f76da43 Thanks @penalosa! - Support ctx.exports in wrangler types
#10651 6caf938 Thanks @edevil! - Added new attribute "allowed_sender_addresses" to send email binding.
#10674 1cc258e Thanks @penalosa! - Fix remote/local display for KV/D1/R2 & Browser bindings
#10678 b30263e Thanks @penalosa! - Remove dummy auth from SDK setup
#10678 b30263e Thanks @penalosa! - Add WRANGLER_TRACE_ID environment variable to support internal testing
#10561 769ffb1 Thanks @danielrs! - Do not show subdomain status mismatch warnings on first deploy.
Updated dependencies [b59e3e1, e9b0c66, 6caf938, 88132bc]:
Updated dependencies [`783afeb`]:
#10658 3029b9a Thanks @1000hz! - Fixed an issue with service tags not being applied properly to Workers when the Wrangler configuration file did not include a top-level name property.
#10657 31ec996 Thanks @penalosa! - Disable remote bindings with the --local flag
Updated dependencies [783afeb]:
Updated dependencies [`735785e`]:
#10546 d53a0bc Thanks @1000hz! - On deploy or version upload, Workers with multiple environments are tagged with metadata that groups them together in the Cloudflare Dashboard.
#10596 735785e Thanks @penalosa! - Add Miniflare & Wrangler support for unbound Durable Objects
#10622 15c34e2 Thanks @nagraham! - Modify R2 Data Catalog compaction commands to enable/disable for Catalog (remove table/namespace args), and require Cloudflare API token on enable.
735785e]:
Rate Limiting in Workers is now generally available, ratelimit can be removed from unsafe bindings.
#10604 135e066 Thanks @penalosa! - Enable Remote Bindings without the need for the --x-remote-bindings flag
#10558 30f558e Thanks @laplab! - Add commands to send queries and manage R2 SQL product.
#10574 d8860ac Thanks @efalcao! - Add support for VPC services CRUD via wrangler vpc service
#10119 336a75d Thanks @dxh9845! - Add support for dynamically loading 'external' Miniflare plugins for unsafe Worker bindings (developed outside of the workers-sdk repo)
#10212 0837a8d Thanks @jamesopstad! - Add preserveOriginalMain option to unstable_readConfig. This will pass the original main value through, without converting it to an absolute path.
#10541 da24079 Thanks @qjex! - stable ratelimit binding
Rate Limiting in Workers is now generally available, ratelimit can be removed from unsafe bindings.
#10479 ffa2600 Thanks @nagraham! - feat: Add wrangler commands for the R2 Data Catalog compaction feature
#9955 51553ef Thanks @penalosa! - Integrate the Cloudflare SDK into Wrangler (internal refactor)
Updated dependencies [e2b838f, 336a75d]:
Adds a new traces field to the observability settings in your Worker configuration that configures the behavior of automatic tracing. Both traces and
#10491 5cb806f Thanks @zebp! - Add traces, OTEL destinations, and configurable persistence to observability settings
Adds a new traces field to the observability settings in your Worker configuration that configures the behavior of automatic tracing. Both traces and logs support providing a list of OpenTelemetry compliant destinations where your logs/traces will be exported to as well as an implicitly-enabled persist option that controls whether or not logs/traces are persisted to the Cloudflare observability platform and viewable in the Cloudflare dashboard.
#10571 4e49d3e Thanks @dario-piotrowicz! - add missing type for send_email's experimental_remote field
#10534 dceb550 Thanks @dario-piotrowicz! - update unstable_convertConfigBindingsToStartWorkerBindings to prioritize preview config values
Ensure that if some bindings include preview values (e.g. preview_database_id for D1 bindings) those get used instead of the standard ones (since these are the ones that start worker should be using)
Updated dependencies [dac302c, 3b78839]:
This change makes preview_urls disabled by default when it's not provided, making the feature opt-in instead of opt-out.
#10478 cc47b51 Thanks @danielrs! - Beta feature preview_urls is now disabled by default.
This change makes preview_urls disabled by default when it's not provided, making the feature opt-in instead of opt-out.
#10489 6e8dd80 Thanks @WalshyDev! - Allow Wrangler to upload 100,000 assets inline with the newly increased Workers Paid limit.
#10517 7211609 Thanks @edmundhung! - fix: wrangler vectorize list-vectors --json now output valid json without an extra log line
#10527 818ce22 Thanks @vicb! - Bump unenv to 2.0.0-rc.20
The latest release include a fix for node:tty default export.
See the changelog for full details.
#10519 5d69df4 Thanks @dario-piotrowicz! - Slightly improve wrangler init --from-dash error message
#10519 5d69df4 Thanks @dario-piotrowicz! - Internally refactor diffing and wrangler init --from-dash logic
#10533 c22acc6 Thanks @emily-shen! - If unset, containers.max_instances should default to 1 instead of 0.
#10503 c0fad5f Thanks @ichernetsky-cf! - Support setting container affinities
#10515 c6a39f5 Thanks @emily-shen! - fix: script should be accepted as a positional arg in the versions upload command
Updated dependencies [4cb3370, 818ce22, cb22f5f, a565291]:
Fixes a bug where if you had a container where the image was an image registry link, dry run would require you to be logged in. Also fixes a bug where
#10401 3c15bbb Thanks @dario-piotrowicz! - improve diff lines ordering in remote deploy config diffing logic
#10520 dc81221 Thanks @emily-shen! - fix: wrangler deploy dry run should not require you to be logged in
Fixes a bug where if you had a container where the image was an image registry link, dry run would require you to be logged in.
Also fixes a bug where container deployments were not respecting account_id set in Wrangler config.
#10393 4492eb0 Thanks @dario-piotrowicz! - Use resolved local config for remote deploy config diffing logic
Updated dependencies [31ecfeb, f656d1a, 22c8ae6, bd21fc5, 38bdb78, 4851955]:
Updated dependencies [`76d9aa2`, `452ad0b`, `7c339ae`]:
Updated dependencies [`19e2aab`]:
e81c2cf Thanks @penalosa! - Support automatically updating the user's config file with newly created resources#10424 c4fd176 Thanks @penalosa! - Remove the --experimental-json-config/-j flag, which is no longer required.
#10432 19e2aab Thanks @anonrig! - Remove "node:tls" polyfill
#10424 c4fd176 Thanks @penalosa! - Expose global flags from experimental_getWranglerCommands()
Updated dependencies [19e2aab]:
Workers running in separate wrangler dev sessions can now communicate with each other regardless of whether you are running with single or multiple co
#10354 da40571 Thanks @edmundhung! - Enable cross-process communication for wrangler dev with multiple config files
Workers running in separate wrangler dev sessions can now communicate with each other regardless of whether you are running with single or multiple config files.
Check out the Developing with multiple Workers guide to learn more about the different approaches and when to use each one.
#10012 4728c68 Thanks @penalosa! - Support unsafe dynamic worker loading bindings
#10245 d304055 Thanks @edmundhung! - Migrate wrangler dev to use Miniflare dev registry implementation
Updated wrangler dev to use a shared dev registry implementation that now powers both the Cloudflare Vite plugin and Wrangler. This internal refactoring has no user-facing changes but consolidates registry logic for better consistency across tools.
#10407 f534c0d Thanks @emily-shen! - default containers.rollout_active_grace_period to 0
#10425 0a96e69 Thanks @dario-piotrowicz! - Fix debugging logs not including headers for CF API requests and responses
Fix the fact that wrangler, when run with the WRANGLER_LOG=DEBUG and WRANGLER_LOG_SANITIZE=false environment variables, displays {} instead of the actual headers for requests and responses for CF API fetches
#10337 f9f7519 Thanks @emily-shen! - containers: rollout_step_percentage now also accepts an array of numbers. Previously it accepted a single number, and each rollout step would target the same percentage of instances. Now users can customise percentages for each step.
rollout_step_percentage also now defaults to [10,100] (previously 25), which should make rollouts progress slightly faster.
You can also use wrangler deploy --containers-rollout=immediate to override rollout settings in Wrangler configuration and update all instances in one step. Note this doesn't override rollout_active_grace_period if configured.
Updated dependencies [4728c68]:
When re-deploying a Worker using wrangler deploy, if the configuration has been modified in the Cloudflare dashboard, the local configuration will ove
#10314 9b09751 Thanks @dario-piotrowicz! - Show possible local vs. dashboard diff information on deploys
When re-deploying a Worker using wrangler deploy, if the configuration has been modified in the Cloudflare dashboard, the local configuration will overwrite the remote one. This can lead to unexpected results for users. To address this, currently wrangler deploy warns users about potential configuration overrides (without presenting them) and prompts them to confirm whether they want to proceed.
The changes here improve the above flow in the following way:
wrangler deploy now displays a git-like diff showing the differences between the dashboard and local configurations. This allows users to review and understand the impact of their changes before confirming the deployment.#10334 cadf19a Thanks @jonesphillip! - Added queues subscription command to Wrangler including create, update, delete, get, list
#10374 20520fa Thanks @edmundhung! - Simplify debug package resolution with nodejs_compat
A patched version of debug was previously introduced that resolved the package to a custom implementation. However, this caused issues due to CJS/ESM interop problems. We now resolve the debug package to use the Node.js implementation instead.
#10249 875197a Thanks @penalosa! - Support JSRPC for remote bindings. This unlocks:
Updated dependencies [565c3a3, ddadb93, 20520fa, 875197a]:
We now untag old images that were created by Wrangler/Vite if we find that the image content and configuration is unchanged, so that we don't keep acc
76a6701 Thanks @garvit-gupta! - feat: Add Wrangler command for Vectorize list-vectors operation#10217 979984b Thanks @veggiedefender! - Increase the maxBuffer size for capnp uploads
#10356 80e964c Thanks @WillTaylorDev! - fix: Update regex for valid branch name to remove 61 char length requirement, allowing for longer branch names to be specified for preview aliases.
#10289 a5a1426 Thanks @emily-shen! - Cleanup container images created during local dev if no changes have been made.
We now untag old images that were created by Wrangler/Vite if we find that the image content and configuration is unchanged, so that we don't keep accumulating image tags.
#10315 0c04da9 Thanks @emily-shen! - Add rollout_active_grace_period option to containers configuration.
This allows users to configure how long an active container should keep running for during a rollout, before the upgrade is applied.
#10321 b524a6f Thanks @emily-shen! - print prettier errors during container deployment
#10253 eb32a3a Thanks @emily-shen! - fix redeploying container apps when previous deploy failed or container (but not image) was deleted.
Previously this failed with No changes detected but no previous image found as we assumed there would be a previous deployment when an image exists in the registry.
#9990 4288a61 Thanks @penalosa! - Fix startup profiling when sourcemaps are enabled
Updated dependencies [d54d8b7, ae0c806]:
Updated dependencies [`5020694`]:
5020694]:
Currently if the user has an account_id in their wrangler config file, such id won't be taken into consideration for the remote proxy session, the cha
#10283 80960b9 Thanks @WillTaylorDev! - Support long branch names in generation of branch aliases in WCI.
#10312 bd8223d Thanks @devin-ai-integration! - Added --domain flag to wrangler deploy command for deploying to custom domains. Use --domain example.com to deploy directly to a custom domain without manually configuring routes.
#8318 8cf47f9 Thanks @gnekich! - Introduce json output flag for wrangler pages deployment list
#10232 e7cae16 Thanks @emily-shen! - fix: validate wrangler containers delete ID to ensure a valid ID has been provided. Previously if you provided the container name (or any non-ID shaped string) you would get an auth error instead of a 404.
#10139 3b6ab8a Thanks @dom96! - Removes mention of cf-requirements when Python Workers are enabled
#10259 c58a05c Thanks @dario-piotrowicz! - Ensure that maybeStartOrUpdateRemoteProxySession considers the potential account_id from the user's wrangler config
Currently if the user has an account_id in their wrangler config file, such id won't be taken into consideration for the remote proxy session, the changes here make sure that it is (note that the auth option of maybeStartOrUpdateRemoteProxySession, if provided, takes precedence over this id value).
The changes here also fix the same issue for wrangler dev and getPlatformProxy (since they use maybeStartOrUpdateRemoteProxySession under the hook).
#10288 42aafa3 Thanks @tgarg-cf! - Do not attempt to update queue producer settings when deploying a Worker with a queue binding
Previously, each deployed Worker would update a subset of the queue producer's settings for each queue binding, which could result in broken queue producers or at least conflicts where different Workers tried to set different producer settings on a shared queue.
#10242 70bd966 Thanks @devin-ai-integration! - Add experimental API to expose Wrangler command tree structure for documentation generation
#10258 d391076 Thanks @nikitassharma! - Add the option to allow all tiers when creating a container
#10248 422ae22 Thanks @emily-shen! - fix: re-push container images on deploy even if the only change was to the Dockerfile
#10179 5d5ecd5 Thanks @pombosilva! - Prevent defining multiple workflows with the same "name" property in the same wrangler file
#10232 e7cae16 Thanks @emily-shen! - include containers API calls in output of WRANGLER_LOG=debug
#10243 d481901 Thanks @devin-ai-integration! - Remove async_hooks polyfill - now uses native workerd implementation
The async_hooks module is now provided natively by workerd, making the polyfill unnecessary. This improves performance and ensures better compatibility with Node.js async_hooks APIs.
#10060 9aad334 Thanks @edmundhung! - refactor: switch getPlatformProxy() to use Miniflare's dev registry implementation
Updated getPlatformProxy() to use Miniflare's dev registry instead of Wrangler's implementation. Previously, you had to start a wrangler or vite dev session before accessing the proxy bindings to connect to those workers. Now the order doesn't matter.
#10219 28494f4 Thanks @dario-piotrowicz! - fix NonRetryableError thrown with an empty error message not stopping workflow retries locally
Updated dependencies [1479fd0, 05c5b28, e3d9703, d481901]:
Before this change maybeStartOrUpdateRemoteProxySession could be called with either the path to a wrangler config file or the configuration of a worke
#10130 773cca3 Thanks @dario-piotrowicz! - update maybeStartOrUpdateRemoteProxySession config argument (to allow callers to specify an environment)
Before this change maybeStartOrUpdateRemoteProxySession could be called with either the path to a wrangler config file or the configuration of a worker. The former override however did not allow the caller to specify an environment, so the maybeStartOrUpdateRemoteProxySession API has been updated so that in the wrangler config case an object (with the path and a potential environment) needs to be passed instead.
For example, before callers could invoke the function in the following way
await maybeStartOrUpdateRemoteProxySession(configPath);
note that there is no way to tell the function what environment to use when parsing the wrangle configuration.
Now callers will instead call the function in the following way:
await maybeStartOrUpdateRemoteProxySession({
path: configPath,
environment: targetEnvironment,
});
note that now a target environment can be specified.
#10130 773cca3 Thanks @dario-piotrowicz! - fix getPlatformProxy not taking into account the potentially specified environment for remote bindings
#10122 2e8eb24 Thanks @dario-piotrowicz! - fix startWorker not respecting auth options for remote bindings
fix startWorker currently not taking into account the auth field
that can be provided as part of the dev options when used in conjunction
with remote bindings
example:
Given the following
import { unstable_startWorker } from "wrangler";
const worker = await unstable_startWorker({
entrypoint: "./worker.js",
bindings: {
AI: {
type: "ai",
experimental_remote: true,
},
},
dev: {
experimentalRemoteBindings: true,
auth: {
accountId: "<ACCOUNT_ID>",
apiToken: {
apiToken: "<API_TOKEN>",
},
},
},
});
await worker.ready;
wrangler will now use the provided <ACCOUNT_ID> and <API_TOKEN> to integrate with
the remote AI binding instead of requiring the user to authenticate.
#10209 93c4c26 Thanks @devin-ai-integration! - fix: strip ANSI escape codes from log files to improve readability and parsing
#9774 48853a6 Thanks @nikitassharma! - Validate container configuration against account limits in wrangler to give early feedback to the user
#10122 2e8eb24 Thanks @dario-piotrowicz! - fix incorrect TypeScript type for AI binding in the startWorker API
currently the way wrangler dev prints logs is faulty, for example the following code
e82aa19 Thanks @Akshit222! - Add --json flag to r2 bucket info command for machine-readable output.#10004 b4d1373 Thanks @dario-piotrowicz! - fix wrangler dev logs being logged on the incorrect level in some cases
currently the way wrangler dev prints logs is faulty, for example the following code
console.error("this is an error");
console.warn("this is a warning");
console.debug("this is a debug");
inside a worker would cause the following logs:
✘ [ERROR] this is an error
✘ [ERROR] this is a warning
this is a debug
(note that the warning is printed as an error and the debug log is printed even if by default it should not)
the changes here make sure that the logs are instead logged to their correct level, so for the code about the following will be logged instead:
✘ [ERROR] this is an error
▲ [WARNING] this is a warning
(running wrangler dev with the --log-level=debug flag will also cause the debug log to be included as well)
#10099 360004d Thanks @emily-shen! - fix: move local dev container cleanup to process exit hook. This should ensure containers are cleaned up even when Wrangler is shut down programatically.
#10186 dae1377 Thanks @matthewdavidrodgers! - Deleting when Pages project binds to worker requires confirmation
#10169 1655bec Thanks @devin-ai-integration! - fix: report startup errors before workerd profiling
#10136 354a001 Thanks @nikitassharma! - Update wrangler containers images list to make fewer API calls to improve command runtime
#10157 5c3b83f Thanks @devin-ai-integration! - Enforce 64-character limit for Workflow binding names locally to match production validation
#10154 502a8e0 Thanks @devin-ai-integration! - Fix UTF BOM handling in config files - remove UTF-8 BOM and error on other BOMs
#10176 07c8611 Thanks @devin-ai-integration! - Add macOS version validation to prevent EPIPE errors on unsupported macOS versions (below 13.5). Miniflare and C3 fail hard while Wrangler shows warnings but continues execution.
Updated dependencies [6b9cd5b, 631f26d, d6ecd05, b4d1373, 8ba7736, 07c8611, 7e204a9, 3f83ac1]:
If there are no .dev.vars or .dev.vars. files, when running Wrangler or the Vite plugin in local development mode, they will now try to load additiona
#9914 a24c9d8 Thanks @petebacondarwin! - Add support for loading local dev vars from .env files
If there are no .dev.vars or .dev.vars.<environment> files, when running Wrangler or the Vite plugin in local development mode,
they will now try to load additional local dev vars from .env, .env.local, .env.<environment> and .env.<environment>.local files.
These loaded vars are only for local development and have no effect in production to the vars in a deployed Worker.
Wrangler and Vite will continue to load .env files in order to configure themselves as a tool.
Further details:
vite build the local vars will be computed and stored in a .dev.vars file next to the compiled Worker code, so that vite preview can use them.wrangler types command will similarly read the .env files (if no .dev.vars files) in order to generate the Env interface.CLOUDFLARE_LOAD_DEV_VARS_FROM_DOT_ENV environment variable is "false" then local dev variables will not be loaded from .env files.CLOUDFLARE_INCLUDE_PROCESS_ENV environment variable is "true" then all the environment variables found on process.env will be included as local dev vars.--env-file=<path/to/dotenv/file> global CLI option. This affects both loading .env to configure Wrangler the tool as well as loading local dev vars.#10051 0f7820e Thanks @nikitassharma! - Add support for custom instance limits for containers. For example, instead of
having to use the preconfigured dev/standard/basic instance types, you can now
set:
instance_type: {
vcpu: 1,
memory_mib: 1024,
disk_mb: 4000
}
This feature is currently only available to customers on an enterprise plan.
#10149 e9bb8d3 Thanks @vicb! - fix require("debug") in nodejs_compat mode
Updated dependencies [9b61f44]:
Currently, if your container engine isn't set up to listen on unix:///var/run/docker.sock (or isn't symlinked to that), then you have to manually set
#10061 f8a80a8 Thanks @emily-shen! - feat(containers): try to automatically get the socket path that the container engine is listening on.
Currently, if your container engine isn't set up to listen on unix:///var/run/docker.sock (or isn't symlinked to that), then you have to manually set this via the dev.containerEngine field in your Wrangler config, or via the env vars WRANGLER_DOCKER_HOST. This change means that we will try and get the socket of the current context automatically. This should reduce the occurrence of opaque internal errors thrown by the runtime when the daemon is not listening on unix:///var/run/docker.sock.
In addition to WRANGLER_DOCKER_HOST, DOCKER_HOST can now also be used to set the container engine socket address.
#10048 dbdbb8c Thanks @vicb! - pass the compatibility date and flags to the unenv preset
#9897 755a249 Thanks @edmundhung! - fix: wrangler types should infer the types of the default worker entrypoint
Updated dependencies [82a5b2e, f8f7352, 2df1d06, dbdbb8c, 5991a9c, 687655f]:
npx wrangler deploy ./public will now ask if you meant to deploy a folder of assets only, ask for a name, set the compat date and then ask whether to
#10016 c5b291d Thanks @emily-shen! - Interactively handle wrangler deploys that are probably assets-only, where there is no config file and flags are incorrect or missing.
For example:
npx wrangler deploy ./public will now ask if you meant to deploy a folder of assets only, ask for a name, set the compat date and then ask whether to write your choices out to wrangler.json for subsequent deployments.
npx wrangler deploy --assets=./public will now ask for a name, set the compat date and then ask whether to write your choices out to wrangler.json for subsequent deployments.
In non-interactive contexts, Wrangler will error as it currently does.
#9971 19794bf Thanks @edmundhung! - Improved script source display on the pretty error screen
#9800 3d4f946 Thanks @helloimalastair! - remove banner from r2 getobject in pipe mode
#9910 7245101 Thanks @dario-piotrowicz! - make sure that the ready-on message is printed after the appropriate runtime controller is ready
fix the fact that when starting a local (or remote) dev session the log saying Ready on http://localhost:xxxx could be displayed before the runtime is actually ready to handle requests (this is quite noticeable when locally running dev sessions with containers, where the ready message currently gets displayed before the container images building/pulling process)
#10031 823cba8 Thanks @vicb! - wrangler and vite-plugin now depend upon the latest version of unenv-preset
#10032 154acf7 Thanks @dario-piotrowicz! - add support for containers in wrangler multiworker dev
currently when running wrangler dev with different workers (meaning that the -c|--config flag is used multiple times) containers are not being included, meaning that trying to interact with them at runtime would not work and cause errors instead. The changes here address the above making wrangler correctly detect and wire up the containers.
#9988 7fb0bfd Thanks @penalosa! - Correctly label mtls remote bindings warning
Updated dependencies [823cba8, 19794bf, 059a39e]:
We manually vet and sanitised error messages before including them in our telemetry collection - this PR just includes a couple more.
#10000 c02b067 Thanks @emily-shen! - Include more (sanitised) user errors in telemetry.
We manually vet and sanitised error messages before including them in our telemetry collection - this PR just includes a couple more.
#9996 b0217f9 Thanks @nikitassharma! - Disallow users from pushing images with unsupported platforms to the container image registry
#10009 e87198a Thanks @gpanders! - Fix containers diff output when using JSONC config files
#9976 ad02ad3 Thanks @dario-piotrowicz! - add warning for when users run wrangler dev --remote with (enabled) containers
#9819 0c4008c Thanks @CarmenPopoviciu! - feat(vite-plugin): Add containers support in vite dev
Adds support for Cloudflare Containers in vite dev. Please note that at the time of this PR a container image can only specify the path to a Dockerfile. Support for registry links will be added in a later version, as will containers support in vite preview.
Updated dependencies [189fe23, 7e5585d]:
### Minor Changes - #9835 `9f0c175` Thanks @thomasgauvin! - Added rename namespace command to Workers KV ### Patch Changes - #9934 `6cc24c0` Thanks @e
9f0c175 Thanks @thomasgauvin! - Added rename namespace command to Workers KV6cc24c0 Thanks @emily-shen! - Add more thorough validation to containers configurationUpdated dependencies [`ac08e68`, `3bb69fa`, `274a826`, `77d1cb2`, `5b0fc9e`, `bf4c9ab`, `14ce577`]:
#9905 4ba9f25 Thanks @dom96! - Support for Python packages in python_modules dir
#9886 17b1e5a Thanks @dom96! - Python packages are now read from cf-requirements.txt instead of requirements.txt by default
#9899 d6a1b9b Thanks @simonabadoiu! - Print local mode when running a browser binding in local mode
#9951 e2672c5 Thanks @penalosa! - Recommend remote bindings when wrangler dev --remote is used
#9875 a5d7b35 Thanks @gpanders! - Show expected format in error message for "containers images delete"
#9954 bf4c9ab Thanks @penalosa! - Support Images binding in getPlatformProxy()
#9974 f73da0d Thanks @penalosa! - Pass worker name & compliance region through correctly when starting a remote bindings session
Updated dependencies [ac08e68, 3bb69fa, 274a826, 77d1cb2, 5b0fc9e, bf4c9ab, 14ce577]:
currently container builds run during local development (via wrangler dev or startWorker) prevent the standard hotkeys not to be recognized (most noti
#9923 c01c4ee Thanks @gpanders! - Fix image name resolution when modifying a container application
#9833 3743896 Thanks @dario-piotrowicz! - fix: ensure that container builds don't disrupt dev hotkey handling
currently container builds run during local development (via wrangler dev or startWorker) prevent the standard hotkeys not to be recognized (most noticeably ctrl+c, preventing developers from existing the process), the changes here ensure that hotkeys are instead correctly handled as expected
Updated dependencies []:
### Patch Changes - #9917 `80cc834` Thanks @edmundhung! - fix: assets only versions upload should include tag and message
80cc834 Thanks @edmundhung! - fix: assets only versions upload should include tag and messageWhen we push the image to the managed registry, we first re-tag the image to include the user's account ID so that the image has the full resolved ima
#9765 05adc61 Thanks @hasip-timurtas! - Build container images without the user's account ID. This allows containers to be built and verified in dry run mode (where we do not necessarily have the user's account info).
When we push the image to the managed registry, we first re-tag the image to include the user's account ID so that the image has the full resolved image name.
Updated dependencies [bb09e50, 25dbe54, 3bdec6b]:
Configure connection limits to Hyperdrive via command line options:
#9796 ba69586 Thanks @simonabadoiu! - Browser Rendering local mode
#9825 49c85c5 Thanks @ReppCodes! - Add support for origin_connection_limit to Wrangler
Configure connection limits to Hyperdrive via command line options:
--origin-connection-limit: The (soft) maximum number of connections that Hyperdrive may establish to the origin database.#9064 a1181bf Thanks @sdnts! - Added an event-subscriptions subcommand
#9729 1b3a2b7 Thanks @404Wolf! - Set docker build context to the Dockerfile directory when image_build_context is not explicitly provided
#9845 dbfa4ef Thanks @jonboulle! - remove extraneous double spaces from Wrangler help output
#9811 fc29c31 Thanks @gpanders! - Fix unauthorized errors on "containers images delete".
#9813 45497ab Thanks @gpanders! - Support container image names without account ID
#9821 a447d67 Thanks @WillTaylorDev! - Preview Aliases: Force alias generation to meet stricter naming requirements.
For cases where CI is requesting Wrangler to generate the alias based on the branch name, we want a stricter check around the generated alias name in order to avoid version upload failures. If a valid alias name was not able to be generated, we warn and do not provide an alias (avoiding a version upload failure).
#9840 7c55f9e Thanks @dario-piotrowicz! - fix: make sure that the experimental remoteBindings flag is properly handled in getPlatformProxy
There are two issues related to how the experimental remoteBindings flag is handled in getPlatformProxy that are being fixed by this change:
experimental_remote configuration flag set on service bindings is incorrectly always taken into account, even if remoteBindings is set to falseexperimental_remote configuration flag of all the other bindings is never taken into account (effectively preventing the bindings to be used in remote mode) since the remoteBindings flag is not being properly propagated#9801 0bb619a Thanks @IRCody! - Containers: Fix issue where setting an image URI instead of dockerfile would incorrectly not update the image
#9872 a727db3 Thanks @emily-shen! - fix: resolve Dockerfile path relative to the Wrangler config path
This fixes a bug where Wrangler would not be able to find a Dockerfile if a Wrangler config path had been specified with the --config flag.
#9815 1358034 Thanks @gpanders! - Remove --json flag from containers and cloudchamber commands (except for "images list")
#9734 1a58bc3 Thanks @penalosa! - Make Wrangler warn more loudly if you're missing auth scopes
#9748 7e3aa1b Thanks @alsuren! - Internal-only WRANGLER_D1_EXTRA_LOCATION_CHOICES environment variable for enabling D1's testing location hints
Updated dependencies [ba69586, 1a75f85, 395f36d, 6f344bf]:
Now, using VSCode's built-in JavaScript Debug Terminals, there are just two steps: open a JS debug terminal and run wrangler dev (or vite dev). VSCode
#9535 56dc5c4 Thanks @penalosa! - In 2023 we announced breakpoint debugging support for Workers, which meant that you could easily debug your Worker code in Wrangler's built-in devtools (accessible via the [d] hotkey) as well as multiple other devtools clients, including VSCode. For most developers, breakpoint debugging via VSCode is the most natural flow, but until now it's required manually configuring a launch.json file, running wrangler dev, and connecting via VSCode's built-in debugger.
Now, using VSCode's built-in JavaScript Debug Terminals, there are just two steps: open a JS debug terminal and run wrangler dev (or vite dev). VSCode will automatically connect to your running Worker (even if you're running multiple Workers at once!) and start a debugging session.
#9810 8acaf43 Thanks @WillTaylorDev! - WC-3626 Pull branch name from WORKERS_CI_BRANCH if exists.
this change makes sure that that getPlatformProxy, when the input configuration file contains an assets field, correctly returns the appropriate asset
#7871 f2a8d4a Thanks @dario-piotrowicz! - add support for assets bindings to getPlatformProxy
this change makes sure that that getPlatformProxy, when the input configuration
file contains an assets field, correctly returns the appropriate asset binding proxy
example:
// wrangler.jsonc
{
"name": "my-worker",
"assets": {
"directory": "./public/",
"binding": "ASSETS"
}
}
import { getPlatformProxy } from "wrangler";
const { env, dispose } = await getPlatformProxy();
const text = await (await env.ASSETS.fetch("http://0.0.0.0/file.txt")).text();
console.log(text); // logs the content of file.txt
await dispose();
#9717 d2f2f72 Thanks @nikitassharma! - Containers should default to a "dev" instance type when no instance type is specified in the wrangler config
#9620 1b967ea Thanks @gpanders! - Simplify containers images list output format
#9684 94a340e Thanks @WillTaylorDev! - Select only successfully deployed deployments when tailing.
### Patch Changes - #9731 `75b75f3` Thanks @gabivlj! - containers: Check for container scopes before running a container command to give a better erro
#9731 75b75f3 Thanks @gabivlj! - containers: Check for container scopes before running a container command to give a better error
#9641 fdbc9f6 Thanks @IRCody! - Update container builds to use a more robust method for detecting if the currently built image already exists.
#9736 55c83a7 Thanks @gabivlj! - containers: Do not check scopes if not defined
#9667 406fba5 Thanks @IRCody! - Fail earlier in the deploy process when deploying a container worker if docker is not detected.
Deprecates containers.configuration in favour of top level fields. Makes top level image required. Deprecates instances and durable_objects. Makes nam…
#9626 9c938c2 Thanks @penalosa! - Support wrangler version upload for Python Workers
#9718 fb83341 Thanks @mhart! - fix error message when docker daemon is not running
#9689 b137a6f Thanks @emily-shen! - fix: correctly pass container engine config to miniflare
#9722 29e911a Thanks @emily-shen! - Update containers config schema.
Deprecates containers.configuration in favour of top level fields. Makes top level image required. Deprecates instances and durable_objects. Makes name optional.
#9666 f3c5791 Thanks @IRCody! - Add a reasonable default name for containers that have no defined name.
Updated dependencies [b137a6f]:
This should have no functional change, but allows us to conditionally render hotkeys based on config.
#9692 273952f Thanks @dom96! - Condenses Python vendored modules in output table
#9654 2a5988c Thanks @dom96! - Python Workers now automatically bundle .so files from vendored packages
#9695 0e64c35 Thanks @emily-shen! - Move hotkey registration later in dev start up
This should have no functional change, but allows us to conditionally render hotkeys based on config.
#9098 ef20754 Thanks @jseba! - Migrate Workers Containers commands to Containers API Endpoints
The Workers Containers API was built on top of Cloudchamber, but has now been moved to its own API with a reduced scoping and new token.
#9712 2a4c467 Thanks @emily-shen! - Make wrangler container commands print open-beta status
`json // wrangler.jsonc { "name": "get-platform-proxy-test", "services": [ { "binding": "MY_WORKER", "service": "my-worker", "experimental_remote": tr
#9688 086e29d Thanks @dario-piotrowicz! - add remote bindings support to getPlatformProxy
Example:
// wrangler.jsonc
{
"name": "get-platform-proxy-test",
"services": [
{
"binding": "MY_WORKER",
"service": "my-worker",
"experimental_remote": true
}
]
}
// index.mjs
import { getPlatformProxy } from "wrangler";
const { env } = await getPlatformProxy({
experimental: {
remoteBindings: true,
},
});
// env.MY_WORKER.fetch() fetches from the remote my-worker service
#9558 d5edf52 Thanks @ichernetsky-cf! - wrangler containers apply uses observability configuration.
#9678 24b2c66 Thanks @dario-piotrowicz! - remove warnings during config validations on experimental_remote fields
wrangler commands, run without the --x-remote-bindings flag, parsing config files containing experimental_remote fields currently show warnings stating that the field is not recognized. This is usually more cumbersome than helpful so here we're loosening up this validation and making wrangler always recognize the field even when no --x-remote-bindings flag is provided
#9633 3f478af Thanks @nikitassharma! - Add support for setting an instance type for containers in wrangler. This allows users to configure memory, disk, and vCPU by setting instance type when interacting with containers.
#9596 5162c51 Thanks @CarmenPopoviciu! - add ability to pull images for containers local dev
Updated dependencies [bfb791e, 5162c51]:
Updated dependencies [`17d23d8`]:
#9673 ffa742f Thanks @dario-piotrowicz! - fix: ensure that wrangler deploy and version upload don't override the remote-bindings flag
#9653 8a60fe7 Thanks @penalosa! - Rename WRANGLER_CONTAINERS_DOCKER_PATH to WRANGLER_DOCKER_BIN
#9664 c489a44 Thanks @IRCody! - Remove cloudchamber/container apply confirmation dialog when run non-interactively.
#9653 8a60fe7 Thanks @penalosa! - Add a warning banner to wrangler cloudchamber and wrangler containers commands
#9605 17d23d8 Thanks @emily-shen! - Add rebuild hotkey for containers local dev, and clean up containers at the end of a dev session.
Updated dependencies [17d23d8]:
Updated dependencies [`d1d34fe`]:
Updated dependencies [`828b7df`, `2671e77`]:
#9565 b1c9139 Thanks @IRCody! - Ensure that a container applications image configuration is not updated if there were not changes to the image.
#9628 92f12f4 Thanks @gpanders! - Remove "Cloudchamber" from user facing error messages
#9576 2671e77 Thanks @vicb! - Add core local dev functionality for containers.
Adds a new WRANGLER_DOCKER_HOST env var to customise what socket to connect to.
Updated dependencies [828b7df, 2671e77]:
add a warning suggesting users to specify their target environment (via -e or --env) when their wrangler config file contains some environments and th
#9536 3b61c41 Thanks @dario-piotrowicz! - expose Unstable_Binding type
#9564 1d3293f Thanks @skepticfx! - Switch container registry to registry.cloudflare.com from registry.cloudchamber.cfdata.org.
Also adds the env var CLOUDFLARE_CONTAINER_REGISTRY to override this
#9520 04f9164 Thanks @vicb! - fix the default value for keep_names (true)
#9506 36113c2 Thanks @penalosa! - Strip the CF-Connecting-IP header from outgoing fetches
#9592 49f5ac7 Thanks @petebacondarwin! - Point to the right location for docs on telemetry
#9593 cf33417 Thanks @vicb! - drop unused WRANGLER_UNENV_RESOLVE_PATHS env var
#9566 521eeb9 Thanks @vicb! - Bump @cloudflare/unenv-preset to 2.3.3
#9344 02e2c1e Thanks @dario-piotrowicz! - add warning about env not specified to potentially risky wrangler commands
add a warning suggesting users to specify their target environment (via -e or --env)
when their wrangler config file contains some environments and they are calling one
of the following commands:
this is a measure we're putting in place to try to prevent developers from accidentally applying changes to an incorrect (potentially even production) environment
#9344 02e2c1e Thanks @dario-piotrowicz! - allow passing an empty string to the -e|--env flag to target the top-level environment
#9536 3b61c41 Thanks @dario-piotrowicz! - performance improvement: restart a mixed mode session only if the worker's remote bindings have changed
#9550 c117904 Thanks @dario-piotrowicz! - allow startWorker to accept false as an inspector option (to disable the inspector server)
#9473 fae8c02 Thanks @dario-piotrowicz! - expose new experimental_maybeStartOrUpdateMixedModeSession utility
Updated dependencies [bd528d5, 2177fb4, 36113c2, e16fcc7]:
Implements the proposal noted here https://github.com/cloudflare/workers-sdk/discussions/9143.
#9509 0b2ba45 Thanks @emily-shen! - feat: add static routing options via 'run_worker_first' to Wrangler
Implements the proposal noted here https://github.com/cloudflare/workers-sdk/discussions/9143.
This is now usable in wrangler dev and in production - just specify the routes that should hit the worker first with run_worker_first in your Wrangler config. You can also omit certain paths with ! negative rules.
#9507 1914b87 Thanks @dario-piotrowicz! - slightly improve wrangler dev bindings loggings
improve the bindings loggings by:
[connected] suffix for remote bindings#9475 931f467 Thanks @edmundhung! - add hello world binding that serves as as an explanatory example.
#9443 95eb47d Thanks @dario-piotrowicz! - add workerName option to startMixedModeSession API
#9541 80b8bd9 Thanks @dario-piotrowicz! - make workers created with startWorker await the ready promise on dispose
#9443 95eb47d Thanks @dario-piotrowicz! - add mixed-mode support for mtls bindings
#9515 9e4cd16 Thanks @dario-piotrowicz! - make sure that remote binding errors are surfaced when using mixed (hybrid) mode
#9516 92305af Thanks @IRCody! - Reorder deploy output when deploying a container worker so the worker url is printed last and the worker triggers aren't deployed until the container has been built and deployed successfully.
Updated dependencies [931f467, 95eb47d, 0b2ba45]:
Your coding agent can read these notes before it upgrades. Set up the MCP server →