chore(emails): upgrade react-email to latest#3819
Conversation
Upgrade @react-email/components 0.0.16 -> 1.0.12, @react-email/render 0.0.12 -> 2.0.8, and the react-email CLI 2.1.1 -> 6.5.0. render() is now async, so await it in the aws-ses, smtp and null transports. Add react-dom (+ @types/react-dom) which @react-email/render now requires as a peer dependency.
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (4)
📜 Recent review details🧰 Additional context used📓 Path-based instructions (4)**/*.{ts,tsx}📄 CodeRabbit inference engine (.github/copilot-instructions.md)
Files:
**/*.{ts,tsx,js,jsx}📄 CodeRabbit inference engine (.github/copilot-instructions.md)
Files:
**/*.ts📄 CodeRabbit inference engine (.cursor/rules/otel-metrics.mdc)
Files:
**/*.{js,ts,tsx,jsx,css,json,md}📄 CodeRabbit inference engine (AGENTS.md)
Files:
🧠 Learnings (7)📓 Common learnings📚 Learning: 2026-03-22T19:26:49.299ZApplied to files:
📚 Learning: 2026-03-22T13:26:12.060ZApplied to files:
📚 Learning: 2026-03-22T19:24:14.403ZApplied to files:
📚 Learning: 2026-05-18T08:21:27.694ZApplied to files:
📚 Learning: 2026-05-18T08:21:27.694ZApplied to files:
📚 Learning: 2026-04-27T16:40:37.692ZApplied to files:
🔇 Additional comments (4)
WalkthroughThis PR upgrades the react-email library dependencies and updates all email transport implementations to work with the new asynchronous rendering API. The Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning Review ran into problems🔥 ProblemsGit: Failed to clone repository. Please run the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
✅ Checklist
Testing
Upgraded the email packages in
internal-packages/emails:@react-email/components0.0.161.0.12@react-email/render^0.0.12^2.0.8react-email(CLI)^2.1.1^6.5.0react-dom^18.2.0(now a required peer of render)Breaking change handled:
render()is now async (Promise<string>) in@react-email/renderv1+. Addedawaitin theaws-ses,smtpandnulltransports.EmailClientand the webapp callers were already async and needed no changes.Verification:
pnpm run typecheck --filter emails✅pnpm run typecheck --filter webapp(consumer of theemailspackage) ✅<Body>now wraps content in a<table>/<td>for better email-client compatibility, anx-apple-disable-message-reformattingmeta tag was added, and CSS shorthand (e.g.margin) is now also emitted as longhand. No visual regressions; theCodeBlock/dracula theme, buttons, and row/column layouts all render correctly.No changeset or
.server-changes/entry is added:emailsis a private internal package (not underpackages/), and there is no user-facing behavior change.Changelog
Upgrade
react-emailand@react-email/{components,render}ininternal-packages/emailsto their latest versions and adapt the mail transports to the now-asyncrender()API.Screenshots
Rendered email templates before vs after the upgrade (visually identical):
Before (

@react-email/components@0.0.16,render@0.0.12)After (

@react-email/components@1.0.12,render@2.0.8)💯
Link to Devin session: https://app.devin.ai/sessions/ccb6f071aeb544768d164c4e7f4e9413
Requested by: @nicktrn