From dfe14776830b2b51033af6ada4f7af42133a0cb0 Mon Sep 17 00:00:00 2001 From: Gabriel Miranda Date: Mon, 3 Nov 2025 11:58:22 -0300 Subject: [PATCH] chore(render): remove use of react-promise-suspense (#2610) Co-authored-by: Lucas Vieira --- .changeset/ten-crabs-cheer.md | 5 +++++ packages/render/package.json | 4 +--- packages/render/src/browser/render-web.spec.tsx | 9 +++------ packages/render/src/node/render-node.spec.tsx | 11 ++++------- pnpm-lock.yaml | 14 -------------- 5 files changed, 13 insertions(+), 30 deletions(-) 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 000000000..a44f97521 --- /dev/null +++ b/.changeset/ten-crabs-cheer.md @@ -0,0 +1,5 @@ +--- +"@react-email/render": patch +--- + +Remove unused `react-promise-suspense` diff --git a/packages/render/package.json b/packages/render/package.json index 376f8eb50..44f8b5256 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 313fe8f2d..9be4d4146 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 f7934db99..b2ab317e2 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'; @@ -85,12 +84,10 @@ 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 = 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 6d931e8d2..d04e09700 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -876,9 +876,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 @@ -886,9 +883,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 @@ -4265,10 +4259,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==} @@ -12797,10 +12787,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':