Skip to content

Commit a328483

Browse files
authored
fix(email-exporter): ReadableByteStreamController for safari react-email (#2295)
1 parent 6e7df8c commit a328483

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

packages/xl-email-exporter/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
"email": "email dev"
5555
},
5656
"dependencies": {
57+
"web-streams-polyfill": "^4.2.0",
5758
"@blocknote/core": "0.44.2",
5859
"@blocknote/react": "0.44.2",
5960
"@react-email/components": "^0.1.1",

packages/xl-email-exporter/src/react-email/reactEmailExporter.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,15 @@ export class ReactEmailExporter<
310310
(({ children }: { children: React.ReactNode }) => (
311311
<React.Fragment>{children}</React.Fragment>
312312
));
313-
return renderEmail(
313+
const needsPolyfill = !globalThis.ReadableByteStreamController;
314+
if (needsPolyfill) {
315+
// needed for safari compatibility;
316+
// https://github.com/resend/react-email/blob/f02e21e998d507aa3fdfbb7b8639f915b8df6cb5/apps/docs/utilities/render.mdx#3-convert-to-html
317+
(globalThis as any).ReadableByteStreamController = (
318+
await import("web-streams-polyfill")
319+
).default.ReadableByteStreamController;
320+
}
321+
const ret = await renderEmail(
314322
<Html>
315323
<Head>{options?.head}</Head>
316324
<Body
@@ -335,6 +343,10 @@ export class ReactEmailExporter<
335343
</Body>
336344
</Html>,
337345
);
346+
if (needsPolyfill) {
347+
delete (globalThis as any).ReadableByteStreamController;
348+
}
349+
return ret;
338350
}
339351

340352
protected blocknoteDefaultPropsToReactEmailStyle(

pnpm-lock.yaml

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)