Co-authored-by: resend-version-bump[bot] <277115511+resend-version-bump[bot]@users.noreply.github.com>
24 KiB
react-email
6.9.0
6.8.1
6.8.0
Minor Changes
9605c04: Add a Props tab to the preview toolbar for live-editing the props a template is rendered with. Edits re-render the preview without changing the template'sPreviewProps, invalid JSON is flagged inline, and a reset restores the template defaults.
Patch Changes
d7743bc: Ship per-module build output withsideEffects: falseso bundlers can tree-shake unused components. Importing a component no longer pulls prismjs, marked, and tailwindcss into the bundle unlessCodeBlock,Markdown, orTailwindis actually used.7b32bf6: Fixed toolbar tabs not responding on statically built previews when the page was opened with atoolbar-panelquery param in the URL.
6.7.0
Minor Changes
b448c3b: Enable custom export extensions via --extension/-e (e.g. .blade.php).
Patch Changes
6.6.9
Patch Changes
bc2f7e3: Fixgrouputilities including bad rules that don't work
6.6.8
Patch Changes
dca3c01: Fixemail buildcomputing the wrong output file tracing root in nested-workspace monorepos (e.g. a package one or more directories below the true repo root), which caused Vercel deploys to fail with an ENOENT error on the routes manifest.
6.6.7
Patch Changes
6a5ff2a: Escape double quotes inMarkdownlinkhref/titleand imagetitleattributes, matching the escaping already applied to imagesrc/alt. A markdown title like'The "Complete" Guide'no longer breaks out of the attribute in the rendered HTML.4cf4c72: Fix two-value logical shorthands whose values aren't all numeric (e.g.margin-inline: 1rem auto,padding-inline: 10px calc(1rem + 2px)) producing invalid duplicated longhands. They are now split into the correct per-side declarations.fa77d55: Merge declarations when the same class is defined by multiple Tailwind rules (e.g. a preset and a child config override).fa52a04: Convert Tailwind'srgba(r g b / a)syntax torgb(r,g,b,a)syntax for better email client support.fc8318c: Fix Tailwind classes not being inlined into styles for<Section>,<Column>and<Row>.
6.6.6
Patch Changes
b4ac0d5: FixButtonemittingmso-text-raisewithout a unit on its Outlook padding spacer (e.g.mso-text-raise:18), which Outlook treats as invalid. The value now carriespx, matching the unit React already adds on the button label.cb3c468: Fixemail buildso the generated preview app deploys on Vercel by tracing files from the user's project root instead of the.react-emailsubfolder.- Updated dependencies [
c300cfb]- @react-email/render@2.0.10
6.6.5
6.6.4
Patch Changes
f8279be: Fix Tailwind pill utilities likerounded-t-fullandrounded-e-fullleaving an unrenderablecalc(infinity * 1px)in the inlined email CSS (previously onlyrounded-fullwas converted to9999px).
6.6.3
6.6.2
Patch Changes
437c414: Fix Tailwind opacity modifiers (e.g.bg-blue-600/50) rendering an invalid percentage alpha that breaks in some email clients.
6.6.1
Patch Changes
21bac49: FixMarkdowncorrupting double quotes inmarkdownCustomStyles. Inline style values containing a"(e.g.fontFamily: '"Times New Roman", serif') were escaped to the apostrophe entity'instead of", silently rewriting the quoted value. Double quotes are now escaped as".- Updated dependencies [
60a5b09]- @react-email/render@2.0.9
6.6.0
Minor Changes
16ff94c: add a useTitleTag in Preview component so users can disable it if they want to
6.5.0
Minor Changes
3875d2a: add a--clientsoption toemail devand aCOMPATIBILITY_EMAIL_CLIENTSenvironment variable to narrow which email clients trigger compatibility warnings. By default the preview still warns forgmail,apple-mail,outlook, andyahoo. Teams that only target one or two clients can now skip the noise:email dev --clients outlook,apple-mail. The CLI flag wins over the env var; an empty or fully-invalid list falls back to the defaults so warnings can't be silently switched off. Builds on #2797 by @ReemX.
Patch Changes
d47825a: Add accessibility defaults to components:dir/langonBody, an emptyaltfallback onImg,role="presentation"on theMarkdowntable, and a<title>fromPreview.
6.4.0
Minor Changes
ba99365: resolve and strip unresolved--tw-*CSS variables in non-inlinable rules so Tailwind media query utilities no longer break Gmail
6.3.3
6.3.2
Patch Changes
fbda5c8: increase whitespace padding to 200 characters for better Gmail preview text rendering
6.3.1
Patch Changes
c610dc0: fix: padding in Container/Section failing on Klaviyo and Outlook desktop
6.3.0
6.2.0
Minor Changes
-
192d82a: Addthemeandutilityprops to<Tailwind>for Tailwind v4 CSS-first configuration. Both accept a CSS string and can be combined with the existingconfigprop.import themeCss from "./theme.css?inline"; <Tailwind theme={themeCss}> <div className="bg-brand font-display">Custom themed content</div> </Tailwind>;Empty strings are no-ops. The base Tailwind theme and utilities are still loaded —
themeandutilitylayer on top.The preview server,
email export, and the caniemail compatibility check all understand the Vite-style?inlineand?rawsuffixes on CSS imports, so the pattern above works the same in your project and inside the preview UI. The compatibility check also extracts thethemeandutilityprops (in addition toconfig) when analyzing your template, so any caniemail incompatibilities in CSS produced by those props will surface as warnings.Internal note: the exported
setupTailwindhelper now takes{ config, cssConfigs }instead of a positionalTailwindConfig. Calling it with the old shape throws with a migration hint.
Patch Changes
06f1d05: Watch directories targeted by dynamicimport()template literals so changes to runtime-resolved files trigger preview reloads.
6.1.5
Patch Changes
1a61cb0: Avoid OOM when runningemail exporton projects with many templates. esbuild builds now run in batches of 10 entry points, and the render phase runs each batch of 25 templates inside aworker_threadsworker so V8 isolate memory is reclaimed between batches.
6.1.4
Patch Changes
1c386ce: Avoid spamming each spinner frame as a new line on non-TTY streams (CI logs, pipes, dumb terminals). The spinner now logs each status text once instead of redrawing animated frames when the output is not a TTY.ad6a9de: - deprecate packageManager CLI option foremail build, only supporting npm- ensure
email builddependency installation includes dev dependencies
- ensure
6.1.3
6.1.2
6.1.1
Patch Changes
3c62bd0: fix divider with extra borders around other corners
6.1.0
Patch Changes
47eeece: Tailwind: clearer error when<Head>is outside<Tailwind>
6.0.8
Patch Changes
65525e0: Tailwind: parse non inline configuration variables
6.0.7
Patch Changes
87a2486: undo nesting of all media queries, and replace >= <= exxpressions with min-width/max-width on the Tailwind component
6.0.6
Patch Changes
84bb7ab: collapse empty-fallback var() refs in inline styles
6.0.5
6.0.4
Patch Changes
96af3a7: Replace ora with picospinner for CLI and preview spinner output.5cf57ae: unpin esbuild- Updated dependencies [
e0e896f]- @react-email/render@2.0.8
6.0.3
Patch Changes
bb51e5e: fix missing react and react-dom peer dependencies
6.0.2
Patch Changes
63b6e71: Fix Markdown component crashing on CommonMark loose lists with paragraph continuations
6.0.1
Patch Changes
599b8c5: fix type issues in starter template and in react-email
6.0.0
Major Changes
-
d0a7a52: Move all components and utilities into thereact-emailpackageAll components (previously in
@react-email/componentsor individual packages like@react-email/button) and rendering utilities (previously in@react-email/render) are now exported directly fromreact-email. This unifies the install and import experience into a single package.We're going to deprecate all packages except
@react-email/renderand@react-email/ui, and they will not be updated anymore.Breaking change
Imports from
@react-email/components,@react-email/render, or individual component packages (e.g.@react-email/button) are no longer the recommended path and they will all be deprecated with the exception of@react-email/renderand@react-email/editor, andrenderwill remain exported fromreact-email. Consumers should import everything fromreact-email.Why
Having separate packages for components (
@react-email/components), and the CLI (react-email) created unnecessary confusion, and a maintenance burden for us.How to migrate
-
Remove
@react-email/components:npm remove @react-email/components -
Update
react-email, and move it over todependencies:npm install react-email@latest -
Update your imports:
- import { Button, Html, Head, render } from "@react-email/components"; + import { Button, Html, Head, render } from "react-email";
-
Patch Changes
a3a15ea: replace deprecatedurl.parse()with WHATWG URL API in the preview dev server.- Updated dependencies [
7fc539d]- @react-email/render@2.0.7
6.0.0-canary.2
6.0.0-canary.1
Patch Changes
- Updated dependencies [
7fc539d]- @react-email/render@2.0.7-canary.0
6.0.0-canary.0
Major Changes
-
d0a7a52: Move all components and utilities into thereact-emailpackageAll components (previously in
@react-email/componentsor individual packages like@react-email/button) and rendering utilities (previously in@react-email/render) are now exported directly fromreact-email. This unifies the install and import experience into a single package.We're going to deprecate all packages except
@react-email/renderand@react-email/preview-server, and they will not be updated anymore.Breaking change
Imports from
@react-email/components,@react-email/render, or individual component packages (e.g.@react-email/button) are no longer the recommended path and they will all be deprecated with the exception of@react-email/renderand@react-email/editor, andrenderwill remain exported fromreact-email. Consumers should import everything fromreact-email.Why
Having separate packages for components (
@react-email/components), and the CLI (react-email) created unnecessary confusion, and a maintenance burden for us.How to migrate
-
Update your dependencies -- remove
@react-email/components, keepreact-email:- npm install @react-email/components react-email @react-email/preview-server + npm install react-email @react-email/preview-server -
Update your imports:
- import { Button, Html, Head, render } from "@react-email/components"; + import { Button, Html, Head, render } from "react-email"; -
The
@react-email/preview-serverand@react-email/editorpackages are not included inreact-email
-
Patch Changes
a3a15ea: replace deprecatedurl.parse()with WHATWG URL API in the preview dev server.
5.2.10
5.2.9
Patch Changes
79bb7cc: manually determine esbuild binary path to avoid forcing a host version
5.2.8
5.2.7
5.2.6
Patch Changes
11f56c5: fix RESEND_API_KEY being overwritten in email preview
5.3.0-canary.2
Patch Changes
1b9df29: ensure that installed preview server also has dev dependencies
5.3.0-canary.1
Patch Changes
0289914: fix random errors due to root directory not being the preview's path
5.3.0-canary.0
Minor Changes
7c18bd3: don't require installing @react-email/preview-server in the project, pack it into$HOME/.react-email
5.2.5
Patch Changes
81aea00: revert changes to fix compatibility with alpine
5.2.4
Patch Changes
26283f9: fix support for alpine
5.2.3
Patch Changes
800c960:email buildalways failing
5.2.2
5.2.1
5.2.0
Patch Changes
16cc7d1: increase timeout to 10 minutes by default, disable build workers
5.2.0-canary.3
Patch Changes
16cc7d1: increase timeout to 10 minutes by default, disable build workers
5.2.0-canary.2
5.2.0-canary.1
5.2.0-canary.0
5.1.1
Patch Changes
8b7a660: remove use of devEngines which npm detects
5.1.0
Minor Changes
3c2aa37: use turbo foremail build
5.0.8
5.0.7
5.0.6
5.0.5
5.0.4
5.0.3
5.0.2
5.0.1
5.0.0
Minor Changes
95c7417: Dark mode switcher emulating email client color inversion
Patch Changes
5.0.0-canary.12
5.0.0-canary.11
5.0.0-canary.10
5.0.0-canary.9
5.0.0-canary.8
Patch Changes
b6b027c: improved integration setup flow
5.0.0-canary.7
5.0.0-canary.6
5.0.0-canary.5
5.0.0-canary.4
5.0.0-canary.3
Minor Changes
95c7417: Dark mode switcher emulating email client color inversion
5.0.0-canary.2
Patch Changes
1b3176e: fallback to not text coloring for Node.js < 20
5.0.0-canary.1
5.0.0-canary.0
4.3.2
4.3.1
Patch Changes
1e13d15: hot reloading errors when importing .json and other file extensions
4.3.0
4.2.12
Patch Changes
90f39d5: Normalize Windows paths in generated Next.js config
4.2.11
4.2.10
4.2.9
Patch Changes
1e53b4c: usestyleTextfromnode:utilinstead ofchalk
4.2.8
Patch Changes
64cd6ec: fix hot reloading with circular dependencies
4.2.7
4.2.6
4.2.5
Patch Changes
8719082: fix errors inexportwhen without manual React import
4.2.4
4.2.3
Patch Changes
8259eeb: fix files with extension-like suffixes (i.e. config, .spec) breaking dependency graph
4.2.2
Patch Changes
eb7f0ac: dev server erroring when trying to startup with port already being used
4.2.1
4.2.0
Minor Changes
e52818c: add custom error handling for prettier's syntax errors
4.1.3
4.1.2
4.1.1
Patch Changes
ef77691: fix path resolution done wrong breakingemail devon Windows
4.1.0
Minor Changes
abf8599: use a separate package for storing the preview server (@react-email/preview-server)
Patch Changes
e173b44: Use the same version for the preview-server and react-email
4.1.0-canary.12
4.1.0-canary.11
Patch Changes
19d4b45: fix static file serving security issue with logging
4.1.0-canary.10
4.1.0-canary.9
Patch Changes
40fb596: Use the same version for the preview-server and react-email
4.1.0-canary.8
Minor Changes
ed2f46a: use a separate package for storing the preview server (@react-email/preview-server)
4.1.0-canary.7
Patch Changes
f00aff6: Fix prettier errors causing NextJS serialization error
4.1.0-canary.6
Patch Changes
11c4600: Add support for hot reloading with tsconfig path aliases
4.1.0-canary.5
Patch Changes
b947f98: Pre-render email templates on hover
4.1.0-canary.4
Patch Changes
5c6150d: Add .json import support for hot reloadingaae2f59: Ensure dependencies outside emails directory are completely resolvedb4b2373: Fix non-email files being rendered during hot reloading
4.1.0-canary.3
Patch Changes
681d4ed: fix backwards compatibility withrenderversions
4.1.0-canary.2
Patch Changes
9b1adb0: Use range of versions for dependencies
4.1.0-canary.1
Patch Changes
a587e17: Fix dependent of dependents not causing hot reloadsdbf3a64: Add error message for when an email template does not have a default export
4.1.0-canary.0
Minor Changes
4a0d4e3: Theme switcher for email template
4.0.17
Patch Changes
e352a67: fix<svg>not being flagged as incompatible8f64ebd: fix the forcedcolor-scheme: darkfor the preview6de4e9f: fix static file serving security issue with loggingb2e96d5: Add support for hot reloading with tsconfig path aliases6b0cfd6: fix hot reloading with collapsed directories8c93330: Fix prettier errors causing NextJS serialization errora07eebf: Pre-render email templates on hover
4.0.16
Patch Changes
1340a0a: fix mobile's sidebar broken in the preview server
4.0.15
Patch Changes
812c551: fix preview server's background gradient interferring with the user's colors
4.0.14
Patch Changes
b57f866: fix hot reloading with directories at least two levels deep
4.0.13
Patch Changes
8e4afce: fix hot reloading support for users withNodeNext-style imports
4.0.12
Patch Changes
aa518a3: Add an explicit error when running Node <= 17
4.0.11
Patch Changes
4.0.10
Patch Changes
5ef9fe8: fix support forimport ... = require(...)syntax4c7f597: fixemail devnot working withtraversalerror
4.0.9
Patch Changes
643d841: Add .json import support for hot reloadingf21a983: fix Node 18 supportcd02449: Ensure dependencies outside emails directory are completely resolved73a31ed: Fix dependent of dependents not causing hot reloadsbdffd8c: fix backwards compatibility withrenderversionse7fa043: Fix access to files outsidestaticdirectory9aa033c: Use range of versions for dependenciesab70556: Fix non-email files being rendered during hot reloading9c9aa5d: Add error message for when an email template does not have a default export
4.0.8
Patch Changes
ea579b5: Log out errors that happen whenexport's esbuild fails
4.0.7
Patch Changes
403e415: Fixdenonot working as an option foremail build
4.0.6
Patch Changes
809130e:next@15.2.4
4.0.5
Patch Changes
e1dc351: Add support for path aliases when linter runs tailwind config
4.0.4
Patch Changes
1a7f9e6: Update dependencies:next@15.2.39832b5e: Fixed support for importing modules when linter loads Tailwind config
4.0.3
Patch Changes
4.0.2
Patch Changes
ddf9652: Fix crashing when the link or image does not exist
4.0.1
Patch Changes
8fd7409: Fix static files regression8448a0b: Improved classes, better borders on table, improved scollbar colors
4.0.0
Major Changes
56ab5ab: Add toolbar with image/link validation, compatibility checking and a spam scoring system
3.0.7
Patch Changes
c61760e: use thepunycodepackage for the static modules382c305: Fixes active state for root email templats on file tree519f0c6: Respect user's NODE_ENV when previewing templatese149816: Upgrade socket.io to 4.8.1
3.0.7-canary.1
Patch Changes
57db6f7: Upgrade socket.io to 4.8.1
3.0.7-canary.0
Patch Changes
98b434c: Fixes active state for root email templats on file tree1c5c986: Respect user's NODE_ENV when previewing templates
3.0.6
Patch Changes
c6fcd94: Fix preview server crashing without React 19
3.0.5
Patch Changes
7337d04: Fix emails being re-rendered each time there is navigation in the preview server
3.0.4
Patch Changes
8f395d2: Update to React 19
3.0.3
Patch Changes
1e82151: fix null byte characters being rendered in the preview serverb34aa90: Move react and react-dom to just dependencies for better DX6781316: Improve error messages for all CLI commands
3.0.3-canary.2
Patch Changes
6781316: Improve error messages for all CLI commands
3.0.3-canary.1
Patch Changes
6facd7c: fix null byte characters being rendered in the preview server
3.0.3-canary.0
Patch Changes
f7833da: Move react and react-dom to just dependencies for better DX
3.0.2
Patch Changes
dc72ca4: bump chokidar to v42a8675a: Add util/types as a module4b174a4: Fix missing Request and Response globals7eb68af: Fix NODE_ENV for emails as "PRODUCTION" instead of "DEVELOPMENT"76183e0: Update socket.io and socket.io-clientf295614: Add AbortSignal, Event and EventTargetbb79540: Add missing timers/promises Node module foremail dev
3.0.2-canary.4
Patch Changes
76183e0: Update socket.io and socket.io-client
3.0.2-canary.3
Patch Changes
ac01c91: bump chokidar to v4
3.0.2-canary.2
Patch Changes
59e27bc: Add missing timers/promises Node module foremail dev
3.0.2-canary.1
Patch Changes
3.0.2-canary.0
Patch Changes
76bbf7b: Fix missing Request and Response globals1af53fb: Fix NODE_ENV for emails as "PRODUCTION" instead of "DEVELOPMENT"
3.0.1
Patch Changes
a40904e: Fix hot reloading
3.0.0
Major Changes
1a47335: Use a built version of preview app when runningemail dev
Patch Changes
-
19cab7b: Fixes decorators causing dependency tree babel parsing to fail -
14b7d1d: update socket.io/socket.io-client to 4.7.5 -
b68e166: Fix sharp warning when runningemail dev -
3caaf53: Updated peer dependencies to allow for React 19 release candidated and React 19 itself -
9a5fd78: fix email template preview failing with emails having spaces -
d118a39: Fixes tooltip color being black for specific theming configurations -
481e339: Fixes root directories being hidden when they are alone at their depth -
f9483ec: DeprecatedrenderAsyncand maderenderitself always asyncWhy
Three reasons:
- Better support of NextJS's latest versions
- Being ready for future React API deprecations
- Support for Suspense which allows for using async inside components
See https://github.com/resend/react-email/discussions/1144 for more info.
How to upgrade
If you are using the old
render, you will need to now treat the Promise that comes out of it, as it is now async. If you are usingrenderAsync, you can replace it withrenderand things should work the same.
3.0.0-canary.1
Patch Changes
b87cbbf: Fix sharp warning when runningemail dev
3.0.0-canary.0
Major Changes
f552226: Use a built version of preview app when runningemail dev
Patch Changes
-
2799bb4: fix email template preview failing with emails having spaces -
3f67038: DeprecatedrenderAsyncand maderenderitself always asyncWhy
Three reasons:
- Better support of NextJS's latest versions
- Being ready for future React API deprecations
- Support for Suspense which allows for using async inside components
See https://github.com/resend/react-email/discussions/1144 for more info.
How to upgrade
If you are using the old
render, you will need to now treat the Promise that comes out of it, as it is now async. If you are usingrenderAsync, you can replace it withrenderand things should work the same.
2.1.7-canary.2
Patch Changes
349e5d5: Fixes decorators causing dependency tree babel parsing to fail983626d: Fixes root directories being hidden when they are alone at their depth
2.1.7-canary.1
Patch Changes
6f5204e: Fixes tooltip color being black for specific theming configurations
2.1.7-canary.0
Patch Changes
27234ec: update socket.io/socket.io-client to 4.7.5a1c016b: Updated peer dependencies to allow for React 19 release candidated and React 19 itself
2.1.6
Patch changes
- Fixes live refresh not working with files outside
emailsdirectory - Fixes export failing when templates have different suffixes
2.1.6-canary.0
Patch changes
- Fixes live refresh not working with files outside
emailsdirectory - Fixes export failing when templates have different suffixes