#13139 79fd529 Thanks @roerohan! - feat: add Flagship feature flag binding support
Adds end-to-end support for the Flagship feature flag binding, which allows Workers to evaluate feature flags from Cloudflare's Flagship service. Configure it in wrangler.json with a flagship array containing binding and app_id entries. In local dev, the binding returns default values for all flag evaluations; use "remote": true in the binding to evaluate flags against the live Flagship service.
#13392 2589395 Thanks @emily-shen! - Add telemetry to local REST API
The local REST API (used by the local explorer) now collects anonymous usage telemetry. This respects any existing telemetry preferences, which can be disabled by running the command wrangler telemetry disable.
This only applies when the dev session is started via Wrangler, and not via the Vite plugin or standalone Miniflare.
No actual data values, keys, query contents, or resource IDs are collected.
Event schema:
{
"event": "localapi.<route>.<method>", // e.g. localapi.kv.keys.get
"deviceId": "<uuid>",
"timestamp": 1234567890,
"properties": {
"userAgent": "Mozilla/5.0 ...",
// Only for localapi.local.workers.get:
"workerCount": 2,
"kvCount": 3,
"d1Count": 1,
"r2Count": 0,
"doCount": 1,
"workflowsCount": 0
}
}
Note: the Local Explorer and corresponding local REST API is still an experimental feature.
#13393 c50cb5b Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| workerd | 1.20260409.1 | 1.20260410.1 |
#13335 5eff8c1 Thanks @KennethRuan! - Return metadata in queue broker response
The queue broker's /message and /batch endpoints now return a JSON response body containing queue metrics (backlogCount, backlogBytes, oldestMessageTimestamp) instead of an empty response. A new GET /metrics endpoint is also added to support the metrics() API.
#13139 79fd529 Thanks @roerohan! - feat: add Flagship feature flag binding support
Adds end-to-end support for the Flagship feature flag binding, which allows Workers to evaluate feature flags from Cloudflare's Flagship service. Configure it in wrangler.json with a flagship array containing binding and app_id entries. In local dev, the binding returns default values for all flag evaluations; use "remote": true in the binding to evaluate flags against the live Flagship service.
#13358 40b4f11 Thanks @dependabot! - Update dependencies of "create-cloudflare"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| create-docusaurus | 3.9.2 | 3.10.0 |
#13133 42c7ef0 Thanks @emily-shen! - explorer: list DO instances with name where possible
Note: The local explorer is a WIP experimental feature.
#13336 a42e0e8 Thanks @emily-shen! - local explorer: fix handling on resources that are bound to multiple workers
Note the local explorer is a experimental feature still.
#13337 c510494 Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| workerd | 1.20260405.1 | 1.20260408.1 |
#13362 8b71eca Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| workerd | 1.20260408.1 | 1.20260409.1 |
#13351 3788983 Thanks @pombosilva! - Add step and config properties to the workflow step context
The callback passed to step.do() now receives ctx.step (with name and count) and ctx.config (the fully resolved step configuration with defaults merged in), in addition to the existing ctx.attempt.
#13331 a066e24 Thanks @NuroDev! - Add animated Cloudflare logo to local explorer homepage
The local explorer now displays an animated Cloudflare logo on the homepage, providing a more engaging visual experience when viewing local resources.
#13133 42c7ef0 Thanks @emily-shen! - explorer: list DO instances with name where possible
Note: The local explorer is a WIP experimental feature.
#13336 a42e0e8 Thanks @emily-shen! - local explorer: fix handling on resources that are bound to multiple workers
Note the local explorer is a experimental feature still.
#13337 c510494 Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| workerd | 1.20260405.1 | 1.20260408.1 |
#13362 8b71eca Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| workerd | 1.20260408.1 | 1.20260409.1 |
#13329 7ca6f6e Thanks @G4brym! - fix: Treat AI Search bindings as always-remote in local dev
AI Search namespace (ai_search_namespaces) and instance (ai_search) bindings are always-remote (they have no local simulation), but pickRemoteBindings() did not include them in its always-remote type list. This caused the remote proxy session to exclude these bindings when remote: true was not explicitly set in the config, resulting in broken AI Search bindings during wrangler dev.
Additionally, removeRemoteConfigFieldFromBindings() in the deploy config-diff logic was not stripping the remote field from AI Search bindings, which could cause false config diffs during deployment.
Updated dependencies [42c7ef0, c510494, 8b71eca, a42e0e8]:
#13274 6e62043 Thanks @dependabot! - Update dependencies of "create-cloudflare"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| create-astro | 5.0.4 | 5.0.5 |
#13275 b221b00 Thanks @dependabot! - Update dependencies of "create-cloudflare"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| create-next-app | 16.2.1 | 16.2.2 |
#13276 94ea512 Thanks @dependabot! - Update dependencies of "create-cloudflare"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| create-react-router | 7.13.2 | 7.14.0 |
#13278 8e7074f Thanks @dependabot! - Update dependencies of "create-cloudflare"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| @angular/create | 21.2.5 | 21.2.6 |
#13279 51f784f Thanks @dependabot! - Update dependencies of "create-cloudflare"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| create-vue | 3.22.1 | 3.22.2 |
#13243 448fec8 Thanks @petebacondarwin! - Show a clear error message when running on an unsupported Node.js version
Previously, running create-cloudflare on an older Node.js version (e.g. v18) would fail with a confusing syntax error. Now, a dedicated version check runs before loading the CLI and displays a helpful message explaining the minimum required Node.js version and suggesting version managers like Volta or nvm.
#13145 5b60405 Thanks @Caio-Nogueira! - Add support for ReadableStream on workflow steps. This allows users to overcome the 1MB limit per step output.
ReadableStream<Uint8Array> is already serializable on the workers platform. This feature makes it native to workflows as well by persisting each chunk and replaying it if needed
#13240 a3e3b57 Thanks @emily-shen! - local explorer: serve the local explorer's OpenAPI spec at /cdn-cgi/explorer/api
The local explorer is supported by a REST API served from the worker's local address. It can be accessed independently of the UI, (e.g. by an AI agent) and is thus documented at this endpoint.
#13314 7a60d4b Thanks @Ltadrian! - Fix hyperdrive local dev binding tls configuration bug
#13241 7d318e1 Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| workerd | 1.20260401.1 | 1.20260402.1 |
#13305 fa6d84f Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| workerd | 1.20260402.1 | 1.20260405.1 |
#13241 7d318e1 Thanks @dependabot! - Update Images binding local mock to use chainable handle pattern
hosted.image(imageId) now returns a handle with details(), bytes(), update(), and delete() methods, aligning with the updated workerd API (https://github.com/cloudflare/workerd/pull/6288).
#13095 65e6684 Thanks @penalosa! - Reject V8 coverage provider with a clear error message
V8 native code coverage (@vitest/coverage-v8) requires node:inspector to collect profiling data from V8's runtime. workerd only provides node:inspector as a non-functional stub, so V8 coverage would silently fail or crash with a confusing No such module "node:inspector" error.
The pool now detects this configuration early — during Vite plugin setup, before Vitest tries to load the coverage provider — and throws a clear error directing users to use Istanbul coverage instead, which works by instrumenting source code at build time and runs on any JavaScript runtime.
Updated dependencies [a3e3b57, 7d318e1, fa6d84f, 96ee5d4, 7d318e1, 7a60d4b, 78cbe37, 6fa5dfd]:
#12932 96ee5d4 Thanks @thomasgauvin! - feat: add wrangler email routing and wrangler email sending commands
Email Routing commands:
wrangler email routing list - list zones with email routing statuswrangler email routing settings <domain> - get email routing settings for a zonewrangler email routing enable/disable <domain> - enable or disable email routingwrangler email routing dns get/unlock <domain> - manage DNS recordswrangler email routing rules list/get/create/update/delete <domain> - manage routing rules (use catch-all as the rule ID for the catch-all rule)wrangler email routing addresses list/get/create/delete - manage destination addressesEmail Sending commands:
wrangler email sending list - list zones with email sendingwrangler email sending settings <domain> - get email sending settings for a zonewrangler email sending enable <domain> - enable email sending for a zone or subdomainwrangler email sending disable <domain> - disable email sending for a zone or subdomainwrangler email sending dns get <domain> - get DNS records for a sending domainwrangler email sending send - send an email using the builder APIwrangler email sending send-raw - send a raw MIME email messageAlso adds email_routing:write and email_sending:write OAuth scopes to wrangler login.
#13241 7d318e1 Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| workerd | 1.20260401.1 | 1.20260402.1 |
#13305 fa6d84f Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"
The following dependency versions have been updated:
| Dependency | From | To |
|---|---|---|
| workerd | 1.20260402.1 | 1.20260405.1 |
#13193 78cbe37 Thanks @dario-piotrowicz! - During autoconfig filter out Hono when there are 2 detected frameworks
During the auto-configuration process Hono is now treated as an auxiliary framework (like Vite) and automatically filtered out when two frameworks are detected (before Hono was being filtered out only when the other framework was Waku).
#13205 6fa5dfd Thanks @petebacondarwin! - fix: use formatConfigSnippet for compatibility_date warning in wrangler dev
The compatibility_date warning shown when no date is configured in wrangler dev was hardcoded in TOML format. This now uses formatConfigSnippet to render the snippet in the correct format (TOML or JSON) based on the user's config file type.
Updated dependencies [a3e3b57, 7d318e1, fa6d84f, 7d318e1, 7a60d4b]:
#13011 b9b7e9d Thanks @ruifigueira! - Add experimental headful browser rendering support for local development
Experimental: This feature may be removed or changed without notice.
When developing locally with the Browser Rendering API, you can enable headful (visible) mode via the X_BROWSER_HEADFUL environment variable to see the browser while debugging:
X_BROWSER_HEADFUL=true wrangler dev
X_BROWSER_HEADFUL=true vite dev
Note: when using @cloudflare/playwright, two Chrome windows may appear — the initial blank page and the one created by browser.newPage(). This is expected behavior due to how Playwright handles browser contexts via CDP.
#13051 d5bffde Thanks @dario-piotrowicz! - Update getLocalWorkerdCompatibilityDate to return today's date
The re-exported getLocalWorkerdCompatibilityDate function from @cloudflare/vite-plugin previously resolved the workerd compatibility date by traversing the local miniflare installation, which was unreliable in some package manager setups. It now simply returns today's date. The function is also marked as deprecated — callers should just use today's date instead, for example like so: new Date().toISOString().slice(0, 10)
#13125 f76652c Thanks @kayluhb! - Fix SyntaxError when SSR-transformed module ends with a single-line comment
When module code ends with a // comment (e.g. //# sourceMappingURL=... preserved by vite-plus), the closing } of the async wrapper in runInlinedModule was absorbed into the comment, causing SyntaxError: Unexpected end of input. Adding a newline before the closing brace prevents this.
#13188 110002c Thanks @shulaoda! - Normalize the return value of getAssetsDirectory() with vite.normalizePath() to ensure assets.directory in the output wrangler.json always uses forward slashes
Updated dependencies [9c4035b, 5d29055, fb67a18, d5bffde, ab44870, 48d83ca, b2f53ea, b9b7e9d, 14e72eb, 4dc94fd, b2f53ea, d5bffde, 48d83ca]: