From 497acf903f367153b3535406a4fa01561647f7d4 Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Mon, 3 Feb 2025 08:44:46 +0100 Subject: [PATCH] fix(cloudflare): PPR in wrangler dev --- .changeset/lucky-actors-flash.md | 8 ++++++++ .../open-next/src/overrides/wrappers/cloudflare-node.ts | 6 ++++++ 2 files changed, 14 insertions(+) create mode 100644 .changeset/lucky-actors-flash.md diff --git a/.changeset/lucky-actors-flash.md b/.changeset/lucky-actors-flash.md new file mode 100644 index 000000000..b49d7b5c0 --- /dev/null +++ b/.changeset/lucky-actors-flash.md @@ -0,0 +1,8 @@ +--- +"@opennextjs/aws": patch +--- + +fix(cloudflare): PPR in wrangler dev + +PPR works fine when deployed but not in dev because of bug in miniflare. +Adding a workaround until the bug is fixed upstream. diff --git a/packages/open-next/src/overrides/wrappers/cloudflare-node.ts b/packages/open-next/src/overrides/wrappers/cloudflare-node.ts index d00227f4e..973467cb7 100644 --- a/packages/open-next/src/overrides/wrappers/cloudflare-node.ts +++ b/packages/open-next/src/overrides/wrappers/cloudflare-node.ts @@ -53,6 +53,12 @@ const handler: WrapperHandler = responseHeaders.append("Set-Cookie", cookie); } + // TODO(vicb): this is a workaround to make PPR work with `wrangler dev` + // See https://github.com/cloudflare/workers-sdk/issues/8004 + if (url.hostname === "localhost") { + responseHeaders.set("Content-Encoding", "identity"); + } + const { readable, writable } = new TransformStream({ transform(chunk, controller) { controller.enqueue(Uint8Array.from(chunk.chunk ?? chunk));