Skip to content

Conversation

@gabrielmfern
Copy link
Member

@gabrielmfern gabrielmfern commented Nov 12, 2025

I've tested all of our copy-paste components from https://react.email/components through Litmus on the email clients that we have supported and fixed all of the issues I could find to make them all look good in the email clients.

Some of them still have some very small issues that this doesn't cover, and that probably aren't possible to fix.

This also adds the missing static files from web/public/static to components/static so that they're visible in pnpm components:dev.

@changeset-bot
Copy link

changeset-bot bot commented Nov 12, 2025

⚠️ No Changeset found

Latest commit: e48daa0

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel
Copy link

vercel bot commented Nov 12, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
react-email Ready Ready Preview Comment Nov 12, 2025 7:57pm
react-email-demo Ready Ready Preview Comment Nov 12, 2025 7:57pm

@gabrielmfern gabrielmfern requested review from a team and CarolinaMoraes and removed request for a team November 12, 2025 18:39
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

4 issues found across 47 files

Prompt for AI agents (all 4 issues)

Understand the root cause of the following 4 issues and fix them.


<file name="apps/web/components/header-and-numbered-list-items/inline-styles.tsx">

<violation number="1" location="apps/web/components/header-and-numbered-list-items/inline-styles.tsx:35">
The new feature title string has a typo (“Vesatile”) and will render incorrect user-facing copy. Please correct it to “Versatile”.</violation>
</file>

<file name="apps/web/components/article-with-single-author/inline-styles.tsx">

<violation number="1" location="apps/web/components/article-with-single-author/inline-styles.tsx:22">
Passing width={undefined} overrides Row’s default width=&quot;100%&quot;, stripping the width attribute from the rendered table and allowing it to shrink in email clients. Please keep the explicit width.</violation>
</file>

<file name="apps/web/components/header-and-numbered-list-items/tailwind.tsx">

<violation number="1" location="apps/web/components/header-and-numbered-list-items/tailwind.tsx:20">
The first feature title has a typo: it now renders as “Vesatile Comfort” instead of “Versatile Comfort”, introducing a visible copy regression.</violation>
</file>

<file name="apps/web/components/customer-reviews/tailwind.tsx">

<violation number="1" location="apps/web/components/customer-reviews/tailwind.tsx:84">
Wrapping the rating row in &lt;Row&gt;/&lt;Column&gt; puts the &lt;dd&gt; inside the preceding &lt;dt&gt;, so the description list no longer has the required dt/dd sibling structure. That breaks HTML semantics that screen readers rely on and can cause the percentage to be skipped. Please restructure so each &lt;dt&gt; and its &lt;dd&gt; remain siblings.</violation>
</file>

React with 👍 or 👎 to teach cubic. Mention @cubic-dev-ai to give feedback, ask questions, or re-run the review.

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
@CarolinaMoraes
Copy link
Contributor

Isn't passing width={undefined} to the Row something that can cause some issues? I was looking through the Row implementation, and as it has the width 100% by default, explicitly passing undefined supposedly would override this (since we spread the props after the default width), no?

width="100%"
border={0}
cellPadding="0"
cellSpacing="0"
role="presentation"
{...props}

@gabrielmfern
Copy link
Member Author

@CarolinaMoraes yeah, those are very intentional, it's so that the Row fits the contents inside itself instead of filling up the space of the parent

@gabrielmfern gabrielmfern merged commit b5b5663 into canary Nov 13, 2025
14 checks passed
@gabrielmfern gabrielmfern deleted the fix/copy-paste-component-compat-issues branch November 13, 2025 14:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants