В React появился отдельный модуль react-html, из которого можно импортировать функцию рендера HTML renderToMarkup. Это преемник функции renderToStaticMarkup из react-dom.
Функцию renderToMarkup можно будет использовать как в React Native, так и с React Server Components. Эта функция рендерит HTML код, который не предназначен для гидратации. Функцию renderToMarkup можно использовать для генерации e-mail в Server Action:
import { renderToMarkup } from 'react-html';
import EmailTemplate from './my-email-template-component.js'
async function action(email, name) {
"use server";
// ... in your server, e.g. a Server Action...
const htmlString = await renderToMarkup(<EmailTemplate name={name} />);
// ... send e-mail using some e-mail provider
await sendEmail({ to: email, contentType: 'text/html', body: htmlString });
}
💬 https://github.com/facebook/react/pull/30105
https://github.com/facebook/react/tree/main/packages/react-html