Quick start
Import theEmailTheming plugin and add it to your extensions:
How theming works
Themes are CSS-in-JS style objects that map to email component types (headings, paragraphs, links, buttons, etc.). Each theme defines a set ofReact.CSSProperties for every supported
component.
During composeReactEmail, the EmailTheming
plugin acts as a SerializerPlugin that resolves styles for each node based on its type and
depth in the document tree. These styles are then inlined directly onto the rendered React
Email components as style attributes. This is necessary because email clients don’t
reliably support <style> tags or external stylesheets.
The resolved styles are passed to each node’s renderToReactEmail() method via the style
prop, where they can be spread onto the rendered element.
Built-in themes
The editor ships with two themes:| Theme | Description |
|---|---|
'basic' | Full styling: typography, spacing, borders, and visual hierarchy. This is the default. |
'minimal' | Essentially no styles. Gives you a blank slate to build your own look from scratch. |
.configure():
Switching themes dynamically
Use React state to toggle themes at runtime. Re-key theEditorProvider to apply the new theme:
The
key={theme} on EditorProvider forces React to remount the editor when the theme changes,
ensuring the new theme is applied cleanly.Theme components
Themes define styles for the following email components:| Component | Description |
|---|---|
reset | CSS reset styles |
body | Email body wrapper |
container | Content container |
h1 | Level 1 heading |
h2 | Level 2 heading |
h3 | Level 3 heading |
paragraph | Text paragraphs |
list | Ordered and unordered lists |
listItem | Individual list items |
listParagraph | Paragraphs inside list items |
nestedList | Nested list styles |
blockquote | Block quotes |
codeBlock | Code blocks |
inlineCode | Inline code |
link | Hyperlinks |
button | Email buttons |
section | Content sections |
footer | Footer area |
hr | Horizontal rules |
image | Images |
Theme-aware serialization
WhenEmailTheming is in your extensions array, the composeReactEmail function automatically
applies theme styles to the exported HTML. No extra configuration is needed.
Examples
See theming in action with a runnable example:Email Theming
Basic/Minimal theme toggle with live preview.