Skip to content

Version Packages - #14699

Merged
ascorbic merged 1 commit into
mainfrom
changeset-release/main
Jul 17, 2026
Merged

Version Packages#14699
ascorbic merged 1 commit into
mainfrom
changeset-release/main

Conversation

@workers-devprod

@workers-devprod workers-devprod commented Jul 15, 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.20260714.0

Minor Changes

  • #14562 9f04a7e Thanks @martijnwalraven! - Add a handleUncaughtError shared option that receives uncaught Worker exceptions

    The runtime catches handler exceptions to build the 500 response, so they never reach the inspector — the one place an uncaught exception exists as a structured value in Node is the pretty-error path, where the error report from the Worker is revived into a source-mapped Error. Embedders can now pass handleUncaughtError: (error: Error) => void to observe that revived error programmatically; logging behavior is unchanged.

    The hook fires only where the pretty-error path does: requests reaching the Worker through the entry socket (a browser or another HTTP client against the dev server). dispatchFetch() is unaffected — it always sets MF-Disable-Pretty-Error, and the entry worker then propagates the exception by rejecting the returned promise instead, so dispatchFetch() callers already receive the error directly and the hook is not invoked.

  • #14706 cb6c3f9 Thanks @edmundhung! - Add Durable Object storage access to createTestHarness()

    You can now execute SQL against a SQLite-backed Durable Object to seed or assert the storage state.

    const server = createTestHarness({
      workers: [{ configPath: "./wrangler.json" }],
    });
    await server.listen();
    
    const worker = server.getWorker();
    const storage = await worker.getDurableObjectStorage("COUNTER", {
      name: "user-123",
    });
    
    await worker.fetch("/counter/user-123");
    
    const rows = await storage.exec(
      "SELECT value FROM counters WHERE id = ?",
      "user-123"
    );
    expect(rows).toEqual([{ value: 1 }]);

Patch Changes

  • #14417 34e696d Thanks @matthewdavidrodgers! - Improve asset serving performance by removing an unnecessary internal dispatch hop

    Asset requests and RPC calls now avoid an extra internal forwarding layer, reducing latency. The forwarding infrastructure is preserved for future use by cohort-based deployments.

  • #14682 d39ae01 Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"

    The following dependency versions have been updated:

    Dependency From To
    @cloudflare/workers-types ^5.20260710.1 ^5.20260714.1
    workerd 1.20260710.1 1.20260714.1
  • #14562 9f04a7e Thanks @martijnwalraven! - Keep reporting uncaught Worker errors when a stack frame's file URL has no local path

    fileURLToPath throws on file:// URLs that cannot be represented as a local path (a non-local host; on Windows, any drive-less path — which is every file:///... URL reported by a POSIX-built bundle). Both the source-mapping machinery and youch's error-page frame parsing convert stack-frame specifiers this way, so one such frame previously failed the whole pretty-error request: the error page was replaced by a raw Node stack, the error was not logged, and handleUncaughtError did not fire. Source mapping now degrades to the unmapped stack and the pretty page falls back to a plain stack response instead.

  • #14418 cb30df3 Thanks @matthewdavidrodgers! - Improve routing performance for Workers with assets

    Reduce request handling latency by streamlining the router Worker's request path. The loopback infrastructure remains available for future use.

  • #14727 3f3afbb Thanks @ascorbic! - Prevent local Browser Rendering teardown from hanging when Chrome does not exit

    Miniflare now bounds graceful Chrome shutdown and forcefully terminates the browser process tree when needed, preventing disposal from waiting indefinitely.

  • #14723 e6fbc4e Thanks @ascorbic! - Prevent concurrent Miniflare instances from deleting each other's temporary email sessions

    Email session cleanup now removes only the current instance's session directory and leaves the shared parent intact, avoiding startup failures when multiple local runtimes use the same project.

wrangler@4.112.0

Minor Changes

  • #14470 3de70df Thanks @DiogoSantoss! - Add a top-level addresses field to Wrangler configuration for Email Routing

    You can now declare the inbound email addresses handled by your Worker directly in wrangler.json:

    {
      "name": "my-worker",
      "main": "src/index.ts",
      "compatibility_date": "2026-05-21",
      "addresses": ["support@example.com", "*@example.com"]
    }
  • #14706 cb6c3f9 Thanks @edmundhung! - Add Durable Object storage access to createTestHarness()

    You can now execute SQL against a SQLite-backed Durable Object to seed or assert the storage state.

    const server = createTestHarness({
      workers: [{ configPath: "./wrangler.json" }],
    });
    await server.listen();
    
    const worker = server.getWorker();
    const storage = await worker.getDurableObjectStorage("COUNTER", {
      name: "user-123",
    });
    
    await worker.fetch("/counter/user-123");
    
    const rows = await storage.exec(
      "SELECT value FROM counters WHERE id = ?",
      "user-123"
    );
    expect(rows).toEqual([{ value: 1 }]);
  • #14562 9f04a7e Thanks @martijnwalraven! - Emit a typed runtimeError event on the unstable_startWorker DevEnv for uncaught Worker exceptions

    Uncaught Worker exceptions were only source-mapped and printed, so programmatic consumers had to scrape terminal output to observe them. The DevEnv now re-emits a RuntimeErrorEvent (like reloadComplete) carrying the exception text and source-mapped stack — fed from Miniflare's pretty-error seam via the new handleUncaughtError option for exceptions the runtime catches, and from the inspector for those it does not.

Patch Changes

  • #14682 d39ae01 Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"

    The following dependency versions have been updated:

    Dependency From To
    @cloudflare/workers-types ^5.20260710.1 ^5.20260714.1
    workerd 1.20260710.1 1.20260714.1
  • #14725 c79504f Thanks @edmundhung! - Support containers in createTestHarness()

    Workers configured with containers can now be tested using createTestHarness(). The harness builds configured images and makes container-backed Durable Objects available during integration tests.

  • #14696 c7dbe1a Thanks @martijnwalraven! - Type unstable_startWorker, DevEnv.startWorker, and ConfigController.set/patch against WranglerStartDevWorkerInput, so the wrangler-specific dev.structuredLogsHandler field the runtime already honors is expressible through the public API. Previously the public signatures took the base StartDevWorkerInput, and callers passing the handler needed a cast while internal callers (the test harness) routed the wider type around the signature.

  • #14494 4e1a7a7 Thanks @petebacondarwin! - Register a workers.dev subdomain before uploading a new Worker

    Deploying a Worker for the first time on an account that has no workers.dev subdomain failed with an opaque API error raised by the upload request itself (code 10063, "You need a workers.dev subdomain in order to proceed"). Wrangler now checks for a workers.dev subdomain before uploading a brand-new Worker that publishes to workers.dev and prompts you to register one, so you get a clear, actionable message instead of a cryptic API failure. The check is skipped for deploys that don't target workers.dev (routes-only deploys, or workers_dev: false) and for existing Workers, since their account already has a subdomain.

  • Updated dependencies [34e696d, d39ae01, 9f04a7e, 9f04a7e, cb30df3, cb6c3f9, 3f3afbb, e6fbc4e]:

    • miniflare@4.20260714.0

@cloudflare/autoconfig@0.1.6

Patch Changes

  • Updated dependencies [8cd805d]:
    • @cloudflare/cli-shared-helpers@0.1.15
    • @cloudflare/workers-utils@0.27.0

@cloudflare/cli-shared-helpers@0.1.15

Patch Changes

  • #14499 8cd805d Thanks @colinhacks! - Detect the nub package manager

    C3 resolves the invoking package manager with which-pm-runs, which already returns nub, but detectPackageManager had no nub case in its switch, so it fell through to the npm default and produced npm commands. detectPackageManager now maps nub to its nub/nubx executables, and @cloudflare/cli-shared-helpers's package-install helpers accept nub as a package manager.

  • Updated dependencies []:

    • @cloudflare/workers-utils@0.27.0

@cloudflare/config@0.2.1

Patch Changes

create-cloudflare@2.70.12

Patch Changes

  • #14661 414ce87 Thanks @dependabot! - Update dependencies of "create-cloudflare"

    The following dependency versions have been updated:

    Dependency From To
    create-react-router 8.1.0 8.2.0
  • #14499 8cd805d Thanks @colinhacks! - Detect the nub package manager

    C3 resolves the invoking package manager with which-pm-runs, which already returns nub, but detectPackageManager had no nub case in its switch, so it fell through to the npm default and produced npm commands. detectPackageManager now maps nub to its nub/nubx executables, and @cloudflare/cli-shared-helpers's package-install helpers accept nub as a package manager.

@cloudflare/deploy-helpers@0.5.1

Patch Changes

@cloudflare/pages-shared@0.13.158

Patch Changes

@cloudflare/vite-plugin@1.45.1

Patch Changes

  • #14610 e727842 Thanks @martijnwalraven! - Keep watching config changes after a failed dev server restart

    Previously, when a config change made the dev server restart fail — for example because the updated Worker config was invalid — the plugin stopped watching config changes entirely: the change handler (covering the Worker config files, local dev vars, and the assets configuration) removed itself before restarting, and only a successfully created server would register a fresh one. Since Vite keeps the current server running when a restart fails, every subsequent config change (including the one that fixes the config) was silently ignored for the rest of the session.

    The handler now stays registered and guards against re-entrant restarts instead, so fixing the config restarts the dev server as expected.

  • #14418 cb30df3 Thanks @matthewdavidrodgers! - Improve routing performance for Workers with assets

    Reduce request handling latency by streamlining the router Worker's request path. The loopback infrastructure remains available for future use.

  • Updated dependencies [34e696d, d39ae01, 3de70df, c79504f, 9f04a7e, 9f04a7e, cb30df3, cb6c3f9, c7dbe1a, 3f3afbb, e6fbc4e, 4e1a7a7, 9f04a7e]:

    • miniflare@4.20260714.0
    • wrangler@4.112.0

@cloudflare/vitest-pool-workers@0.18.6

Patch Changes

@cloudflare/format-errors@0.0.9

Patch Changes

@cloudflare/local-explorer-ui@0.14.2

Patch Changes

  • #14668 e93d27e Thanks @DebadityaHait! - Make long worker selector lists scrollable

    Workers beyond the visible selector limit can now be reached with a mouse, trackpad, or keyboard without scrolling the Local Explorer page.

@cloudflare/playground-preview-worker@0.3.3

Patch Changes

@cloudflare/runtime-types@0.0.3

Patch Changes

@cloudflare/turbo-r2-archive@0.0.5

Patch Changes

@cloudflare/workers-shared@0.19.9

Patch Changes

  • #14417 34e696d Thanks @matthewdavidrodgers! - Improve asset serving performance by removing an unnecessary internal dispatch hop

    Asset requests and RPC calls now avoid an extra internal forwarding layer, reducing latency. The forwarding infrastructure is preserved for future use by cohort-based deployments.

  • #14705 00f41d6 Thanks @WillTaylorDev! - Retry asset reads from KV when they fail

    The asset worker reads static assets from KV, and a read can occasionally fail with a transient error. It previously retried only once before giving up. It now retries a few times with exponential backoff, which reduces the chance of serving an error. A missing asset is not treated as a failure and is not retried.

  • #14418 cb30df3 Thanks @matthewdavidrodgers! - Improve routing performance for Workers with assets

    Reduce request handling latency by streamlining the router Worker's request path. The loopback infrastructure remains available for future use.

@cloudflare/workflows-shared@0.12.1

Patch Changes

@github-actions

github-actions Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Changeset Review

✅ All changesets look good

@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

@pkg-pr-new

pkg-pr-new Bot commented Jul 15, 2026

Copy link
Copy Markdown
@cloudflare/autoconfig

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

@cloudflare/config

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

create-cloudflare

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

@cloudflare/deploy-helpers

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

@cloudflare/kv-asset-handler

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

miniflare

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

@cloudflare/pages-shared

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

@cloudflare/unenv-preset

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

@cloudflare/vite-plugin

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

@cloudflare/vitest-pool-workers

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

@cloudflare/workers-auth

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

@cloudflare/workers-editor-shared

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

@cloudflare/workers-utils

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

wrangler

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

commit: 9d8d72f

@workers-devprod
workers-devprod force-pushed the changeset-release/main branch 4 times, most recently from d5f4685 to ef3d753 Compare July 15, 2026 11:35
devin-ai-integration[bot]

This comment was marked as resolved.

@workers-devprod
workers-devprod force-pushed the changeset-release/main branch 13 times, most recently from 28c181c to 8639f23 Compare July 16, 2026 16:00
devin-ai-integration[bot]

This comment was marked as resolved.

@workers-devprod
workers-devprod force-pushed the changeset-release/main branch 3 times, most recently from 8bd9220 to ceb7e6a Compare July 17, 2026 07:08
@workers-devprod
workers-devprod force-pushed the changeset-release/main branch from ceb7e6a to 9d8d72f Compare July 17, 2026 07:15
@ascorbic
ascorbic merged commit 82918ad into main Jul 17, 2026
66 of 67 checks passed
@ascorbic
ascorbic deleted the changeset-release/main branch July 17, 2026 09:18
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