V8 heap limit configurable; local S3 API for R2; VPC TCP connect works
miniflare@4.20260722.1
Minor Changes
-
#14702
e426cb9Thanks @Sipixer! - Support passing V8 flags toworkerdvia theMINIFLARE_WORKERD_V8_FLAGSenvironment variableThe generated
workerdconfig already supportsv8Flags, 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 pointworkerdaborts withV8 fatal error; location = Reached heap limitand every subsequentdispatchFetch()fails withfetch faileduntil 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 asMINIFLARE_WORKERD_AUTOGATES. -
#14280
465c0fbThanks @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 ther2BucketsoptionBuckets configured with
s3Credentials: { accessKeyId, secretAccessKey }inr2Bucketsare served over an S3-compatible HTTP API, authenticated with AWS Signature Version 4 (bothAuthorizationheader 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
6e0bf6eThanks @mack-erel! - Supportconnect()on remote VPC Network and VPC Service bindings in local developmentRemote 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 withIncoming 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
1035f74Thanks @ATKasem! - FixgetWithMetadatadropping metadata for falsy KV valuesKVNamespace.getWithMetadatareturnednullmetadata 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 fornullexplicitly, so metadata is preserved for empty-string and"0"values while genuinely missing keys still returnnull. -
#14864
3a22ae5Thanks @Hashim1999164! - Hide the workerd console window on Windows when the parent process has no console. Spawning workerd withoutwindowsHide: truecaused Windows Terminal to open a visible, focus-stealing window for background or detached parents (for example Astro'sastro dev --background).
Fetched July 28, 2026
