github cloudflare/workers-sdk wrangler@4.78.0

latest releases: @cloudflare/vite-plugin@1.30.2, @cloudflare/pages-shared@0.13.119, @cloudflare/containers-shared@0.13.1...
15 hours ago

Minor Changes

  • #13031 eeaa473 Thanks @WalshyDev! - Add support for Cloudflare Access Service Token authentication via environment variables

    When running wrangler dev with remote bindings behind a Cloudflare Access-protected domain, Wrangler previously required cloudflared access login which opens a browser for interactive authentication. This does not work in CI/CD environments.

    You can now set the CLOUDFLARE_ACCESS_CLIENT_ID and CLOUDFLARE_ACCESS_CLIENT_SECRET environment variables to authenticate using an Access Service Token instead:

    export CLOUDFLARE_ACCESS_CLIENT_ID="<your-client-id>.access"
    export CLOUDFLARE_ACCESS_CLIENT_SECRET="<your-client-secret>"
    wrangler dev

    Additionally, when running in a non-interactive environment (CI) without these credentials, Wrangler now throws a clear, actionable error instead of hanging on cloudflared access login.

  • #13027 9fcdfca Thanks @G4brym! - feat: Add ai_search_namespaces and ai_search binding types

    Two new binding types for AI Search:

    • ai_search_namespaces: Namespace binding — namespace is required and auto-provisioned at deploy time if it doesn't exist (like R2 buckets)
    • ai_search: Single instance binding bound directly to a pre-existing instance in the default namespace

    Both are remote-only in local dev.

  • #12874 53ed15a Thanks @xortive! - Add Workers VPC service support for Hyperdrive origins

    Hyperdrive configs can now connect to databases through Workers VPC services using the --service-id option:

    wrangler hyperdrive create my-config --service-id <vpc-service-uuid> --database mydb --user myuser --password mypassword

    This enables Hyperdrive to connect to databases hosted in private networks that are accessible through Workers VPC TCP services.

  • #12852 6b50bfa Thanks @Carolx715! - Add interactive data catalog validation to R2 object and lifecycle commands.

    When performing R2 operations that could affect data catalog state (object put, object delete, lifecycle add, lifecycle set), Wrangler now validates with the API and prompts users for confirmation if a conflict is detected. For bulk put operations, Wrangler prompts upfront before starting the batch. Users can bypass prompts with --force (-y). In non-interactive/CI environments, the operation proceeds automatically.

  • #13030 0386553 Thanks @natewong1313! - Add local mode support for Stream bindings

    Miniflare and wrangler dev now support using Cloudflare Stream bindings locally.

    Supported operations:

    • upload() — upload video via URL
    • video(id).details(), .update(), .delete(), .generateToken()
    • videos.list()
    • captions.generate(), .list(), .delete()
    • downloads.generate(), .get(), .delete()
    • watermarks.generate(), .list(), .get(), .delete()

    The following are not yet supported in local mode and will throw:

    • createDirectUpload()
    • Caption upload via File
    • Watermark generation via File

    Data is persisted across restarts by default. You must set streamPersist: false in Miniflare options to disable persistence.

  • #12874 53ed15a Thanks @xortive! - Add --cert-verification-mode option to wrangler vpc service create and wrangler vpc service update

    You can now configure the TLS certificate verification mode when creating or updating a VPC connectivity service. This controls how the connection to the origin server verifies TLS certificates.

    Available modes:

    • verify_full (default) -- verify certificate chain and hostname
    • verify_ca -- verify certificate chain only, skip hostname check
    • disabled -- do not verify the server certificate at all
    wrangler vpc service create my-service --type tcp --tcp-port 5432 --ipv4 10.0.0.1 --tunnel-id <tunnel-uuid> --cert-verification-mode verify_ca

    This applies to both TCP and HTTP VPC service types. When omitted, the default verify_full behavior is used.

  • #12874 53ed15a Thanks @xortive! - Add TCP service type support for Workers VPC

    You can now create TCP services in Workers VPC using the --type tcp option:

    wrangler vpc service create my-db --type tcp --tcp-port 5432 --ipv4 10.0.0.1 --tunnel-id <tunnel-uuid>

    This enables exposing TCP-based services like PostgreSQL, MySQL, and other database servers through Workers VPC.

Patch Changes

  • #13039 bc24ec8 Thanks @petebacondarwin! - fix: Angular auto-config now correctly handles projects without SSR configured

    Previously, running wrangler deploy (or wrangler setup) on a plain Angular SPA (created with ng new without --ssr) would crash with Cannot set properties of undefined (setting 'experimentalPlatform'), because the auto-config code unconditionally assumed SSR was configured.

    Angular projects without SSR are now treated as assets-only deployments: no wrangler.jsonc main entry is generated, angular.json is not modified, no src/server.ts is created, and no extra dependencies are installed.

  • #13036 0b4c21a Thanks @pbrowne011! - Fix wrangler deploy --dry-run skipping asset build-artifact validation checks

    Previously, --dry-run skipped the entire asset sync step, which meant it also skipped validation that runs during asset manifest building. This included the check that errors when a _worker.js file or directory would be uploaded as a public static asset (which can expose private server-side code), as well as the per-file size limit check.

    With this fix, --dry-run now runs buildAssetManifest against the asset directory when assets are configured, performing the same file-system validation as a real deploy without uploading anything or making any API calls.

  • #13061 535582d Thanks @petebacondarwin! - fix: resolve secondary worker types when environment overrides the worker name in multi-worker type generation

    When running wrangler types with multiple -c config flags and the secondary worker has named environments that override the worker name (e.g. a worker named do-worker with env staging whose effective name becomes do-worker-staging), service bindings and Durable Object bindings in the primary worker that reference do-worker-staging now correctly resolve to the typed entry point instead of falling back to an unresolved comment type such as DurableObjectNamespace /* MyClass from do-worker-staging */.

    The fix extends the secondary entries map to also register environment-specific worker names, so that lookups by the env-qualified name (e.g. do-worker-staging) resolve to the same source file as the base worker name.

  • #13058 992f9a3 Thanks @petebacondarwin! - fix: patch undici to prevent fetch() throwing on 401 responses with a request body

    Fetching with a request body (string, JSON, FormData, etc.) to an endpoint that returns a 401 would throw TypeError: fetch failed with cause expected non-null body source. This affected Unstable_DevWorker.fetch() and any other use of undici's fetch in wrangler.

    The root cause is isTraversableNavigable() in undici returning true unconditionally, causing the 401 credential-retry logic to run in Node.js where it should never apply (there is no browser UI to prompt for credentials). This is tracked upstream in nodejs/undici#4910. Until an upstream fix is released, we apply a patch to undici that returns false from isTraversableNavigable().

  • #13017 91b7f73 Thanks @petebacondarwin! - fix: prevent Docker container builds from spawning console windows on Windows

    On Windows, detached: true in child_process.spawn() gives each child process its own visible console window, causing many windows to flash open during wrangler deploy with [[containers]]. The detached option is now only set on non-Windows platforms (where it is needed for process group cleanup), and windowsHide: true is added to further suppress console windows on Windows.

  • #12996 f6cdab2 Thanks @guybedford! - Fix source phase imports in bundled and non-bundled Workers

    Wrangler now preserves import source syntax when it runs esbuild, including module format detection and bundled deploy output. This fixes both --no-bundle and bundled deployments for Workers that import WebAssembly using source phase imports.

  • #12931 ce65246 Thanks @dario-piotrowicz! - Improve error message when modules cannot be resolved during bundling

    When a module cannot be resolved during bundling, Wrangler now suggests using the alias configuration option to substitute it with an alternative implementation. This replaces esbuild's default suggestion to "mark the path as external", which is not a supported option in Wrangler.

    For example, if you try to import a module that doesn't exist:

    import foo from "some-missing-module";

    Wrangler will now suggest:

    To fix this, you can add an entry to "alias" in your Wrangler configuration
    to substitute "some-missing-module" with an alternative implementation.
    See https://developers.cloudflare.com/workers/wrangler/configuration/#bundling-issues
    

    This provides actionable guidance for resolving import errors.

  • #13049 7a5be20 Thanks @nikitassharma! - add library-push flag to containers registries credentials

    This flag is not available for public use.

  • #13018 9c5ebf5 Thanks @tgarg-cf! - Validate that queue consumers in wrangler config only use the "worker" type

    Previously, non-worker consumer types (e.g. http_pull) could be specified in the queues.consumers config. Now, wrangler will error if a consumer type other than "worker" is specified in the config file.

    To configure non-worker consumer types, use the wrangler queues consumer CLI commands instead (e.g. wrangler queues consumer http-pull add).

  • Updated dependencies [9fcdfca, 1faff35, f4ea4ac, 0386553]:

    • miniflare@4.20260317.3

Don't miss a new workers-sdk release

NewReleases is sending notifications on new releases.