next build fails: Cannot get final name for export 'encodeXML' (resend + react-email)

On Next.js 14 with resend 2.0.0/2.0.0-canary.2, passing a React email component to the react property of resend.emails.send breaks next build with: ./node_modules/html-to-text/lib/html-to-text.mjs + 24 modules / Cannot get final name for export 'encodeXML' of ./node_modules/entities/lib/esm/index.js. It works fine in local dev; only the production build fails. Multiple reporters reproduced the same failure on resend 2.0.0.

Resend fixed this in v2.0.1-canary.0 (PR #259): upgrade the resend package and rebuild, which multiple reporters confirmed resolves the build. Workaround for the broken versions: pre-render the component with renderAsync from @react-email/render and pass the result as the html property instead of react:

const html = await renderAsync(MagicLinkEmail({ url, host }));
await resend.emails.send({ from, to, subject, html });

Note: one reporter found the bug reappeared in 2.1.0-canary.0, so pin the working canary if you stay on the canary channel. Source: https://github.com/resend/resend-node/issues/256

Source: https://github.com/resend/resend-node/issues/256