From b020a7d9880a2819c1beb922fb2f208b37b6c16c Mon Sep 17 00:00:00 2001 From: gabriel miranda Date: Wed, 29 Oct 2025 11:02:57 -0300 Subject: [PATCH 1/3] chore(render): remove react-promise-suspense, and @types/prettier --- packages/render/package.json | 4 +--- packages/render/src/browser/render-web.spec.tsx | 9 +++------ packages/render/src/node/render-node.spec.tsx | 9 +++------ pnpm-lock.yaml | 14 -------------- 4 files changed, 7 insertions(+), 29 deletions(-) diff --git a/packages/render/package.json b/packages/render/package.json index 55252aa6ae..08c49518eb 100644 --- a/packages/render/package.json +++ b/packages/render/package.json @@ -115,8 +115,7 @@ }, "dependencies": { "html-to-text": "^9.0.5", - "prettier": "^3.5.3", - "react-promise-suspense": "^0.3.4" + "prettier": "^3.5.3" }, "peerDependencies": { "react": "^18.0 || ^19.0 || ^19.0.0-rc", @@ -125,7 +124,6 @@ "devDependencies": { "@edge-runtime/vm": "5.0.0", "@types/html-to-text": "9.0.4", - "@types/prettier": "3.0.0", "@types/react": "npm:types-react@19.0.0-rc.1", "@types/react-dom": "npm:types-react-dom@19.0.0", "jsdom": "26.1.0", diff --git a/packages/render/src/browser/render-web.spec.tsx b/packages/render/src/browser/render-web.spec.tsx index 313fe8f2d4..9be4d4146c 100644 --- a/packages/render/src/browser/render-web.spec.tsx +++ b/packages/render/src/browser/render-web.spec.tsx @@ -2,8 +2,7 @@ * @vitest-environment jsdom */ -import { createElement } from 'react'; -import usePromise from 'react-promise-suspense'; +import { createElement, use } from 'react'; import { Preview } from '../shared/utils/testing/preview'; import { Template } from '../shared/utils/testing/template'; import { render } from './render'; @@ -126,11 +125,9 @@ describe('render on the browser environment', () => { }); it('waits for Suspense boundaries to ending before resolving', async () => { + const htmlPromise = fetch('https://example.com').then((res) => res.text()); const EmailTemplate = () => { - const html = usePromise( - () => fetch('https://example.com').then((res) => res.text()), - [], - ); + const html = use(htmlPromise); return
; }; diff --git a/packages/render/src/node/render-node.spec.tsx b/packages/render/src/node/render-node.spec.tsx index f7934db999..a100fb3c80 100644 --- a/packages/render/src/node/render-node.spec.tsx +++ b/packages/render/src/node/render-node.spec.tsx @@ -2,8 +2,7 @@ * @vitest-environment node */ -import { Suspense } from 'react'; -import usePromise from 'react-promise-suspense'; +import { Suspense, use } from 'react'; import { Preview } from '../shared/utils/testing/preview'; import { Template } from '../shared/utils/testing/template'; import { render } from './render'; @@ -86,11 +85,9 @@ describe('render on node environments', () => { }); it('that it properly waits for Suepsense boundaries to resolve before resolving', async () => { + const htmlPromise = fetch('https://example.com').then((res) => res.text()); const EmailTemplate = () => { - const html = usePromise( - () => fetch('https://example.com').then((res) => res.text()), - [], - ); + const html = use(htmlPromise); return
; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2350340304..daf5105aab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -870,9 +870,6 @@ importers: react-dom: specifier: ^19.0.0 version: 19.0.0(react@19.0.0) - react-promise-suspense: - specifier: ^0.3.4 - version: 0.3.4 devDependencies: '@edge-runtime/vm': specifier: 5.0.0 @@ -880,9 +877,6 @@ importers: '@types/html-to-text': specifier: 9.0.4 version: 9.0.4 - '@types/prettier': - specifier: 3.0.0 - version: 3.0.0 '@types/react': specifier: ^19.0.1 version: 19.0.1 @@ -4374,10 +4368,6 @@ packages: '@types/phoenix@1.6.6': resolution: {integrity: sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==} - '@types/prettier@3.0.0': - resolution: {integrity: sha512-mFMBfMOz8QxhYVbuINtswBp9VL2b4Y0QqYHwqLz3YbgtfAcat2Dl6Y1o4e22S/OVE6Ebl9m7wWiMT2lSbAs1wA==} - deprecated: This is a stub types definition. prettier provides its own type definitions, so you do not need this installed. - '@types/prismjs@1.26.5': resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} @@ -12591,10 +12581,6 @@ snapshots: '@types/phoenix@1.6.6': {} - '@types/prettier@3.0.0': - dependencies: - prettier: 3.5.3 - '@types/prismjs@1.26.5': {} '@types/prompts@2.4.9': From 3df3768d334d9df8ce1a86cf6f29a03dfb42edca Mon Sep 17 00:00:00 2001 From: gabriel miranda Date: Wed, 29 Oct 2025 11:03:20 -0300 Subject: [PATCH 2/3] add changeset --- .changeset/ten-crabs-cheer.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/ten-crabs-cheer.md diff --git a/.changeset/ten-crabs-cheer.md b/.changeset/ten-crabs-cheer.md new file mode 100644 index 0000000000..a44f975219 --- /dev/null +++ b/.changeset/ten-crabs-cheer.md @@ -0,0 +1,5 @@ +--- +"@react-email/render": patch +--- + +Remove unused `react-promise-suspense` From 1c104a43807a77381709d38c74d21007887b2f28 Mon Sep 17 00:00:00 2001 From: Gabriel Miranda Date: Mon, 3 Nov 2025 11:58:14 -0300 Subject: [PATCH 3/3] fix typo in test Co-authored-by: Lucas Vieira --- packages/render/src/node/render-node.spec.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/render/src/node/render-node.spec.tsx b/packages/render/src/node/render-node.spec.tsx index a100fb3c80..b2ab317e27 100644 --- a/packages/render/src/node/render-node.spec.tsx +++ b/packages/render/src/node/render-node.spec.tsx @@ -84,7 +84,7 @@ describe('render on node environments', () => { expect(actualOutput).toMatchSnapshot(); }); - it('that it properly waits for Suepsense boundaries to resolve before resolving', async () => { + it('that it properly waits for Suspense boundaries to resolve before resolving', async () => { const htmlPromise = fetch('https://example.com').then((res) => res.text()); const EmailTemplate = () => { const html = use(htmlPromise);