Skip to content

Version Packages - #14824

Merged
NuroDev merged 1 commit into
mainfrom
changeset-release/main
Jul 28, 2026
Merged

Version Packages#14824
NuroDev merged 1 commit into
mainfrom
changeset-release/main

Conversation

@workers-devprod

@workers-devprod workers-devprod commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

miniflare@4.20260722.1

Minor Changes

  • #14702 e426cb9 Thanks @Sipixer! - Support passing V8 flags to workerd via the MINIFLARE_WORKERD_V8_FLAGS environment variable

    The generated workerd config already supports v8Flags, but Miniflare never populated it, so the runtime always ran with V8's default heap limit (~1.4 GB). Large dev applications (e.g. big SSR module graphs under @cloudflare/vite-plugin, where each server-file edit grows the runner isolate's heap) can reach that limit, at which point workerd aborts with V8 fatal error; location = Reached heap limit and every subsequent dispatchFetch() fails with fetch failed until the dev server is manually restarted.

    Setting e.g. MINIFLARE_WORKERD_V8_FLAGS="--max-old-space-size=4096" raises the limit and keeps long dev sessions alive. The variable follows the same space-separated format as MINIFLARE_WORKERD_AUTOGATES.

  • #14280 465c0fb Thanks @tahmid-23! - Add a local S3-compatible API for R2 buckets at /cdn-cgi/local/r2/s3/<bucket-id>, where <bucket-id> is the ID the bucket is configured with in the r2Buckets option

    Buckets configured with s3Credentials: { accessKeyId, secretAccessKey } in r2Buckets are served over an S3-compatible HTTP API, authenticated with AWS Signature Version 4 (both Authorization header and presigned URL query authentication). Supported operations: GetObject, HeadObject, PutObject, CopyObject, DeleteObject, DeleteObjects, ListObjects, ListObjectsV2, HeadBucket, ListBuckets, CreateMultipartUpload, UploadPart, UploadPartCopy, CompleteMultipartUpload, and AbortMultipartUpload. Status codes, error responses, and unsupported-header screening mirror R2's S3 endpoint, including its static responses for bucket-configuration reads and its named errors for unimplemented operations.

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

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

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

Patch Changes

  • #14784 1035f74 Thanks @ATKasem! - Fix getWithMetadata dropping metadata for falsy KV values

    KVNamespace.getWithMetadata returned null metadata whenever the stored value was falsy — an empty string or "0" — because the metadata branch was guarded by a truthiness check on the value. The guard now checks for null explicitly, so metadata is preserved for empty-string and "0" values while genuinely missing keys still return null.

  • #14864 3a22ae5 Thanks @Hashim1999164! - Hide the workerd console window on Windows when the parent process has no console. Spawning workerd without windowsHide: true caused Windows Terminal to open a visible, focus-stealing window for background or detached parents (for example Astro's astro dev --background).

@cloudflare/vite-plugin@1.48.0

Minor Changes

  • #14883 76e6014 Thanks @jamesopstad! - Serve the bundled client HTML in dev when Vite's experimental.bundledDev is enabled

    Note that this feature is experimental and subject to change.

Patch Changes

  • #14862 c232d05 Thanks @petebacondarwin! - Destroy the client socket instead of crashing when a WebSocket upgrade fails

    If dispatchFetch rejected while a WebSocket upgrade was still in flight (for example when Miniflare is disposed during a dev server shutdown or restart), the error escaped the async upgrade handler as an unhandled rejection. This could terminate the dev server process and leaked the client socket. The upgrade handler now catches such failures and tears the socket down cleanly.

  • #14837 de6a951 Thanks @1rgs! - Fix compatibility with Vite's experimental.bundledDev option. Keep Miniflare, containers, and tunnels alive when a build runs in dev.

    The plugin used the buildEnd hook as its signal that the dev server was closing, and tore down its dev resources there. Vite's experimental.bundledDev runs a build pass during serve, which fires buildEnd while the dev server is still live — so Miniflare was disposed (the next request failed with Expected \miniflare` to be defined`), locally-built container images were removed, and any active tunnel was closed, all mid-serve.

    During serve, these resources are now torn down from a patched server.close. We will replace server patching with first-class APIs when they are added to Vite.

  • #14851 fb89b72 Thanks @exKAZUu! - Retry transient module-transport failures in the runner worker

    Each fetchModule invoke was a single fetch to the dev server with no retry. If that one fetch failed transiently (e.g. Network connection lost when workerd reuses a loopback connection that Node just closed), Vite's module runner cached the rejection and every request importing the affected module failed for the rest of the dev session. The invoke is an idempotent request for module code, so retry it up to three times before giving up.

  • Updated dependencies [773ead4, 773ead4, 09b8a44, 4dfb96e, 1035f74, e426cb9, 3a22ae5, 465c0fb, 465c0fb, e8b3a9d, 552bcfc, b737676, 6e0bf6e]:

    • wrangler@4.115.0
    • miniflare@4.20260722.1

@cloudflare/vitest-pool-workers@0.19.0

Minor Changes

  • #14879 e6480e3 Thanks @dmmulroy! - Add a verbose option to cloudflareTest() and cloudflarePool() configuration

    Set verbose: false to suppress verbose workerd runtime logs, such as caught Durable Object RPC errors. The option defaults to true to preserve existing output.

Patch Changes

  • #14821 edc203e Thanks @mishushakov! - Ignore workerd's disconnected: peer disconnected without gracefully ending TLS session exception logs

    When tests make real fetch() calls to external TLS endpoints, servers and load balancers routinely close idle keepalive connections without sending a TLS close_notify. No request fails — the connection is idle — but workerd logs a kj/compat/tls.c++ exception with a full stack trace each time, flooding otherwise green test runs. This is the TLS sibling of the disconnected: ... messages already in the ignore list, so filter it the same way.

  • Updated dependencies [773ead4, 773ead4, 09b8a44, 4dfb96e, 1035f74, e426cb9, 3a22ae5, 465c0fb, 465c0fb, e8b3a9d, 552bcfc, b737676, 6e0bf6e]:

    • wrangler@4.115.0
    • miniflare@4.20260722.1

@cloudflare/workers-utils@0.29.0

Minor Changes

  • #14877 552bcfc Thanks @jasoncabot! - Respect and surface the Retry-After header on Cloudflare API responses

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

    Now:

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

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

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

wrangler@4.115.0

Minor Changes

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

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

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

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

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

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

    Now:

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

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

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

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

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

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

Patch Changes

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

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

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

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

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

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

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

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

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

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

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

    • miniflare@4.20260722.1

@cloudflare/autoconfig@0.2.1

Patch Changes

  • Updated dependencies [552bcfc]:
    • @cloudflare/workers-utils@0.29.0
    • @cloudflare/cli-shared-helpers@0.1.17

@cloudflare/cli-shared-helpers@0.1.17

Patch Changes

  • Updated dependencies [552bcfc]:
    • @cloudflare/workers-utils@0.29.0

create-cloudflare@2.70.15

Patch Changes

  • #14767 3a141ed Thanks @jasoncabot! - Fix git commit hanging when commit.gpgsign is enabled

    If you have GPG commit signing configured with a passphrase-protected key, the initial commit created during project setup would appear to hang: the passphrase prompt couldn't get keyboard input because it had to compete with C3's own progress output for control of the terminal. The only way out was Ctrl+C, which also skipped the rest of setup, including the prompt to deploy your new project.

    git commit now runs the same way it would if you ran it yourself, so passphrase-protected signing keys work as expected. A failure while staging files is also now reported correctly instead of leaving the progress indicator spinning indefinitely.

  • #14758 b8b60f2 Thanks @dependabot! - Update dependencies of "create-cloudflare"

    The following dependency versions have been updated:

    Dependency From To
    @tanstack/cli 0.69.5 0.69.6
  • #14852 9caa6ef Thanks @dependabot! - Update dependencies of "create-cloudflare"

    The following dependency versions have been updated:

    Dependency From To
    create-vue 3.22.4 3.23.0
  • #14853 0debc23 Thanks @dependabot! - Update dependencies of "create-cloudflare"

    The following dependency versions have been updated:

    Dependency From To
    create-analog 2.6.3 2.6.4
  • #14854 afaecee Thanks @dependabot! - Update dependencies of "create-cloudflare"

    The following dependency versions have been updated:

    Dependency From To
    create-vike 0.0.664 0.0.668
  • #14855 e015a43 Thanks @dependabot! - Update dependencies of "create-cloudflare"

    The following dependency versions have been updated:

    Dependency From To
    @angular/create 22.0.7 22.0.8
  • #14856 7fd99b8 Thanks @dependabot! - Update dependencies of "create-cloudflare"

    The following dependency versions have been updated:

    Dependency From To
    create-solid 0.7.0 0.8.0
  • #14857 a460a2a Thanks @dependabot! - Update dependencies of "create-cloudflare"

    The following dependency versions have been updated:

    Dependency From To
    @tanstack/cli 0.69.6 0.70.1
  • #14858 dfe39fc Thanks @dependabot! - Update dependencies of "create-cloudflare"

    The following dependency versions have been updated:

    Dependency From To
    sv 0.16.3 0.16.5
  • #14859 d44bd80 Thanks @dependabot! - Update dependencies of "create-cloudflare"

    The following dependency versions have been updated:

    Dependency From To
    create-react-router 8.2.0 8.3.0
  • #14888 29ea4d2 Thanks @chinesepowered! - Fix the hello-world-workflows JavaScript template crashing at runtime

    MyWorkflow defined a constructor that assigned to this without calling super() first, so instantiating the Workflow threw ReferenceError: Must call super constructor in derived class before accessing 'this'. The constructor also took (env) where WorkflowEntrypoint is constructed with (ctx, env). It was redundant in the first place — the base class already assigns this.env — so it has been removed, matching the TypeScript variant of the same template.

@cloudflare/deploy-helpers@0.6.2

Patch Changes

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

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

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

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

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

    • miniflare@4.20260722.1
    • @cloudflare/workers-utils@0.29.0
    • @cloudflare/cli-shared-helpers@0.1.17

@cloudflare/pages-shared@0.13.161

Patch Changes

@cloudflare/workers-auth@0.5.3

Patch Changes

  • Updated dependencies [552bcfc]:
    • @cloudflare/workers-utils@0.29.0

@cloudflare/remote-bindings@0.0.3

Patch Changes

@cloudflare/runtime-types@0.0.6

Patch Changes

@cloudflare/workflows-shared@0.12.2

Patch Changes

  • #14840 03a4330 Thanks @Kkartik14! - Fix local Workflows retaining abort listeners after waits complete

    Workflow sleeps, retry delays, and event waits now share a typed abort-aware race that removes its listener when either side settles. This prevents long-running local Workflow instances from retaining a listener and its captured promise state for every completed wait until the instance is paused or evicted.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

✅ All changesets look good

@pkg-pr-new

pkg-pr-new Bot commented Jul 23, 2026

Copy link
Copy Markdown
@cloudflare/autoconfig

npm i https://pkg.pr.new/@cloudflare/autoconfig@14824

@cloudflare/config

npm i https://pkg.pr.new/@cloudflare/config@14824

create-cloudflare

npm i https://pkg.pr.new/create-cloudflare@14824

@cloudflare/deploy-helpers

npm i https://pkg.pr.new/@cloudflare/deploy-helpers@14824

@cloudflare/kv-asset-handler

npm i https://pkg.pr.new/@cloudflare/kv-asset-handler@14824

miniflare

npm i https://pkg.pr.new/miniflare@14824

@cloudflare/pages-shared

npm i https://pkg.pr.new/@cloudflare/pages-shared@14824

@cloudflare/unenv-preset

npm i https://pkg.pr.new/@cloudflare/unenv-preset@14824

@cloudflare/vite-plugin

npm i https://pkg.pr.new/@cloudflare/vite-plugin@14824

@cloudflare/vitest-pool-workers

npm i https://pkg.pr.new/@cloudflare/vitest-pool-workers@14824

@cloudflare/workers-auth

npm i https://pkg.pr.new/@cloudflare/workers-auth@14824

@cloudflare/workers-editor-shared

npm i https://pkg.pr.new/@cloudflare/workers-editor-shared@14824

@cloudflare/workers-utils

npm i https://pkg.pr.new/@cloudflare/workers-utils@14824

wrangler

npm i https://pkg.pr.new/wrangler@14824

commit: c291008

@workers-devprod
workers-devprod force-pushed the changeset-release/main branch 27 times, most recently from c87541e to d35ba77 Compare July 28, 2026 08:19
@workers-devprod
workers-devprod force-pushed the changeset-release/main branch 6 times, most recently from 9600248 to 73e02b8 Compare July 28, 2026 16:50
@workers-devprod
workers-devprod force-pushed the changeset-release/main branch from 73e02b8 to c291008 Compare July 28, 2026 19:02
@NuroDev
NuroDev merged commit 760a85b into main Jul 28, 2026
66 of 67 checks passed
@NuroDev
NuroDev deleted the changeset-release/main branch July 28, 2026 19:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants