diff --git a/.changeset/shaggy-ears-appear.md b/.changeset/shaggy-ears-appear.md
new file mode 100644
index 0000000000..cadb29831b
--- /dev/null
+++ b/.changeset/shaggy-ears-appear.md
@@ -0,0 +1,5 @@
+---
+"@react-email/render": patch
+---
+
+add fallback for m.default when importing react-dom
diff --git a/packages/render/src/browser/render.tsx b/packages/render/src/browser/render.tsx
index 9772d7e0b6..a2cfd765f4 100644
--- a/packages/render/src/browser/render.tsx
+++ b/packages/render/src/browser/render.tsx
@@ -5,10 +5,12 @@ import { readStream } from '../shared/read-stream.browser';
export const render = async (node: React.ReactNode, options?: Options) => {
const suspendedElement = {node};
- const reactDOMServer = await import('react-dom/server.browser').then(
- // This is beacuse react-dom/server is CJS
- (m) => m.default,
- );
+ const reactDOMServer = await import('react-dom/server').then((m) => {
+ if ('default' in m) {
+ return m.default;
+ }
+ return m;
+ });
const html = await new Promise((resolve, reject) => {
reactDOMServer
diff --git a/packages/render/src/edge/render.tsx b/packages/render/src/edge/render.tsx
index 7102a6c44a..121cae7578 100644
--- a/packages/render/src/edge/render.tsx
+++ b/packages/render/src/edge/render.tsx
@@ -10,10 +10,13 @@ export const render = async (
options?: Options,
) => {
const suspendedElement = {element};
- const reactDOMServer = await importReactDom().then(
- // This is because react-dom/server is CJS
- (m) => m.default,
- );
+ const reactDOMServer = await importReactDom().then((m) => {
+ if ('default' in m) {
+ return m.default;
+ }
+
+ return m;
+ });
const html = await new Promise((resolve, reject) => {
reactDOMServer
diff --git a/packages/render/src/node/render.tsx b/packages/render/src/node/render.tsx
index 6fc91f4539..642d14e131 100644
--- a/packages/render/src/node/render.tsx
+++ b/packages/render/src/node/render.tsx
@@ -6,10 +6,12 @@ import { readStream } from './read-stream';
export const render = async (node: React.ReactNode, options?: Options) => {
const suspendedElement = {node};
- const reactDOMServer = await import('react-dom/server').then(
- // This is beacuse react-dom/server is CJS
- (m) => m.default,
- );
+ const reactDOMServer = await import('react-dom/server').then((m) => {
+ if ('default' in m) {
+ return m.default;
+ }
+ return m;
+ });
let html!: string;
if (