Client compatibility and proofs
What is automatically proven, and the manual email-client QA checklist that closes the remaining gap.
Nuxt Email makes two kinds of compatibility claim, and it is careful to keep them separate.
What is automatically proven
The conformance suite compares covered email-safety behaviors to a pinned React Email oracle and asserts byte-level, normalized, or semantic equality. Presentation tables, MSO button spacers, preview-text hiding, font declarations, and Tailwind inlining all have explicit regression cases.
This is useful implementation evidence, but it is a comparison to a reference renderer, not proof that every email client will display a message identically.
What still requires a human
No automated test opens Gmail, Apple Mail, or Outlook. Closing that gap is a manual release gate run against the fixed transactional fixture. The checklist below mirrors the repository's QA record.
Render the fixture
Render the release fixture with its committed props through renderEmail('transactional', props). Optionally swap only the logo URL for an HTTPS image you control.
Send with your own account
Send the exact rendered html and text to test mailboxes through a provider SDK you choose. Nuxt Email does not send mail.
Inspect in three clients
Open the same message in Gmail web, Apple Mail (macOS or iOS), and Outlook for Windows.
Record the result
Note client versions, screenshots, defects, and a final accept/reject decision.
Required checks
- Inbox preview shows only the intended preview sentence and does not expose filler characters.
- The remote logo has useful alternative text when images are blocked.
- Heading, paragraphs, divider, and footer links retain readable spacing.
- The activation button is clickable, visually centered, and has comparable horizontal and vertical padding in Outlook.
- Two columns stay in one row at desktop email widths and remain readable when the client narrows the message.
- Link destinations and the
mailto:link are correct. - Plain-text fallback contains the meaningful content and destinations but excludes preview filler and images.
- No script, hydration payload, framework state, or event-handler attribute is present.