diff --git a/.changeset/free-sides-grin.md b/.changeset/free-sides-grin.md
new file mode 100644
index 0000000000..5aac8c2e3c
--- /dev/null
+++ b/.changeset/free-sides-grin.md
@@ -0,0 +1,5 @@
+---
+"@react-email/render": patch
+---
+
+fix react-dom/server import for the browser and some bundlers
diff --git a/packages/render/src/browser/render.tsx b/packages/render/src/browser/render.tsx
index 9765097892..28bcaf7041 100644
--- a/packages/render/src/browser/render.tsx
+++ b/packages/render/src/browser/render.tsx
@@ -53,7 +53,10 @@ export const render = async (
options?: Options,
) => {
const suspendedElement = {element};
- const reactDOMServer = await import('react-dom/server');
+ const reactDOMServer = await import('react-dom/server').then(
+ // This is beacuse react-dom/server is CJS
+ (m) => m.default,
+ );
let html!: string;
if (Object.hasOwn(reactDOMServer, 'renderToReadableStream')) {
diff --git a/packages/render/src/node/render.tsx b/packages/render/src/node/render.tsx
index 9424a18482..3005aa1019 100644
--- a/packages/render/src/node/render.tsx
+++ b/packages/render/src/node/render.tsx
@@ -10,7 +10,10 @@ export const render = async (
options?: Options,
) => {
const suspendedElement = {element};
- const reactDOMServer = await import('react-dom/server');
+ const reactDOMServer = await import('react-dom/server').then(
+ // This is beacuse react-dom/server is CJS
+ (m) => m.default,
+ );
let html!: string;
if (Object.hasOwn(reactDOMServer, 'renderToReadableStream')) {