diff --git a/packages/xl-email-exporter/package.json b/packages/xl-email-exporter/package.json index 0a193cb5dc..5ab0cb4d9b 100644 --- a/packages/xl-email-exporter/package.json +++ b/packages/xl-email-exporter/package.json @@ -54,6 +54,7 @@ "email": "email dev" }, "dependencies": { + "web-streams-polyfill": "^4.2.0", "@blocknote/core": "0.44.2", "@blocknote/react": "0.44.2", "@react-email/components": "^0.1.1", diff --git a/packages/xl-email-exporter/src/react-email/reactEmailExporter.tsx b/packages/xl-email-exporter/src/react-email/reactEmailExporter.tsx index 5c9c8a2fe6..b7380c5779 100644 --- a/packages/xl-email-exporter/src/react-email/reactEmailExporter.tsx +++ b/packages/xl-email-exporter/src/react-email/reactEmailExporter.tsx @@ -310,7 +310,15 @@ export class ReactEmailExporter< (({ children }: { children: React.ReactNode }) => ( {children} )); - return renderEmail( + const needsPolyfill = !globalThis.ReadableByteStreamController; + if (needsPolyfill) { + // needed for safari compatibility; + // https://github.com/resend/react-email/blob/f02e21e998d507aa3fdfbb7b8639f915b8df6cb5/apps/docs/utilities/render.mdx#3-convert-to-html + (globalThis as any).ReadableByteStreamController = ( + await import("web-streams-polyfill") + ).default.ReadableByteStreamController; + } + const ret = await renderEmail( {options?.head} , ); + if (needsPolyfill) { + delete (globalThis as any).ReadableByteStreamController; + } + return ret; } protected blocknoteDefaultPropsToReactEmailStyle( diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 34715c6d01..a45ae7993e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5336,6 +5336,9 @@ importers: react-email: specifier: ^4.3.0 version: 4.3.0 + web-streams-polyfill: + specifier: ^4.2.0 + version: 4.2.0 devDependencies: '@types/jsdom': specifier: ^21.1.7 @@ -15627,6 +15630,10 @@ packages: web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + web-streams-polyfill@4.2.0: + resolution: {integrity: sha512-0rYDzGOh9EZpig92umN5g5D/9A1Kff7k0/mzPSSCY8jEQeYkgRMoY7LhbXtUCWzLCMX0TUE9aoHkjFNB7D9pfA==} + engines: {node: '>= 8'} + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -27940,6 +27947,8 @@ snapshots: web-namespaces@2.0.1: {} + web-streams-polyfill@4.2.0: {} + webidl-conversions@3.0.1: {} webidl-conversions@7.0.0: {}