# Account emails in React Email, in English, German and French

One neutral React Email layout for every account email, rendered synchronously on the server, written in the reader's language, with live previews via pnpm email:dev.

The five account emails (verification, welcome, password reset, the password-reset security notice and Organization invitations) are React Email components now: a typed document per email drawn by one layout, with the plain-text part written from the same document. Rendering stays synchronous (`renderToStaticMarkup`, held equal to React Email's `render` by a test), so the auth callbacks did not change shape and `html-to-text`/`prettier` stay out of the Worker ([ADR-0014](/docs/adr/0014-account-emails-in-react-email)).

Each email is written in the language of the request that caused it: the site's language cookie, then `Accept-Language`, then English. The copy lives in `packages/email/src/locales/{en,de,fr}.ts`. The layout is neutral (the site's brand mark and `EMAIL_FROM`'s display name, the UI's neutral tokens, a dark palette) and links nothing but the email's one action. The invitation rules from [the relay fix](/docs/changelog/2026-10-29-invitation-relay) hold in every language.

`pnpm email:dev` serves a live preview of every template on port 3060; its Next.js UI is installed on first run outside the workspace, so it never reaches the Worker ([Email](/docs/features/email#layout-and-languages)).

