From 66237544f60fd3d7d64d3ca3691e19614d287e88 Mon Sep 17 00:00:00 2001 From: yoshi-taka Date: Sat, 30 Aug 2025 00:58:25 +0900 Subject: [PATCH 1/3] Replace chalk with Node.js native implementation --- packages/react-email/package.json | 1 - packages/react-email/src/utils/preview/start-dev-server.ts | 6 ++++-- pnpm-lock.yaml | 3 --- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/react-email/package.json b/packages/react-email/package.json index fe69083094..7f7712aac8 100644 --- a/packages/react-email/package.json +++ b/packages/react-email/package.json @@ -29,7 +29,6 @@ "dependencies": { "@babel/parser": "^7.27.0", "@babel/traverse": "^7.27.0", - "chalk": "^5.0.0", "chokidar": "^4.0.3", "commander": "^13.0.0", "debounce": "^2.0.0", diff --git a/packages/react-email/src/utils/preview/start-dev-server.ts b/packages/react-email/src/utils/preview/start-dev-server.ts index f8b8a62638..05b0fec8c5 100644 --- a/packages/react-email/src/utils/preview/start-dev-server.ts +++ b/packages/react-email/src/utils/preview/start-dev-server.ts @@ -1,7 +1,7 @@ import http from 'node:http'; import path from 'node:path'; import url from 'node:url'; -import chalk from 'chalk'; +import { styleText } from 'node:util'; import { createJiti } from 'jiti'; import logSymbols from 'log-symbols'; import ora from 'ora'; @@ -85,7 +85,9 @@ export const startDevServer = async ( if (!portAlreadyInUse) { // this errors when linting but doesn't on the editor so ignore the warning on this /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */ - console.log(chalk.greenBright(` React Email ${packageJson.version}`)); + console.log( + styleText('greenBright', ` React Email ${packageJson.version}`), + ); console.log(` Running preview at: http://localhost:${port}\n`); } else { const nextPortToTry = port + 1; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c9d9089eba..2813115a04 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -771,9 +771,6 @@ importers: '@babel/traverse': specifier: ^7.27.0 version: 7.27.0 - chalk: - specifier: ^5.0.0 - version: 5.4.0 chokidar: specifier: ^4.0.3 version: 4.0.3 From bf0b37076c0be95f44f2b5fbb3223184293a5c16 Mon Sep 17 00:00:00 2001 From: Gabriel Miranda Date: Mon, 8 Sep 2025 15:22:23 -0300 Subject: [PATCH 2/3] migrate to styleText from Node in the preview server as well --- packages/preview-server/package.json | 1 - .../preview-server/src/actions/render-email-by-path.tsx | 8 ++++---- pnpm-lock.yaml | 3 --- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/preview-server/package.json b/packages/preview-server/package.json index 7c5286fbaf..adb4166628 100644 --- a/packages/preview-server/package.json +++ b/packages/preview-server/package.json @@ -31,7 +31,6 @@ "@types/react-dom": "19.0.4", "@types/webpack": "5.28.5", "autoprefixer": "10.4.21", - "chalk": "4.1.2", "clsx": "2.1.1", "esbuild": "0.25.0", "framer-motion": "12.23.12", diff --git a/packages/preview-server/src/actions/render-email-by-path.tsx b/packages/preview-server/src/actions/render-email-by-path.tsx index 8f135c8337..09ad5c52e1 100644 --- a/packages/preview-server/src/actions/render-email-by-path.tsx +++ b/packages/preview-server/src/actions/render-email-by-path.tsx @@ -1,7 +1,7 @@ 'use server'; import fs from 'node:fs'; import path from 'node:path'; -import chalk from 'chalk'; +import { styleText } from 'node:util'; import logSymbols from 'log-symbols'; import ora, { type Ora } from 'ora'; import { @@ -107,11 +107,11 @@ export const renderEmailByPath = async ( const millisecondsToRendered = performance.now() - timeBeforeEmailRendered; let timeForConsole = `${millisecondsToRendered.toFixed(0)}ms`; if (millisecondsToRendered <= 450) { - timeForConsole = chalk.green(timeForConsole); + timeForConsole = styleText('green', timeForConsole); } else if (millisecondsToRendered <= 1000) { - timeForConsole = chalk.yellow(timeForConsole); + timeForConsole = styleText('yellow', timeForConsole); } else { - timeForConsole = chalk.red(timeForConsole); + timeForConsole = styleText('red', timeForConsole); } spinner?.stopAndPersist({ symbol: logSymbols.success, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2813115a04..68c235bc14 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -668,9 +668,6 @@ importers: autoprefixer: specifier: 10.4.21 version: 10.4.21(postcss@8.5.3) - chalk: - specifier: 4.1.2 - version: 4.1.2 clsx: specifier: 2.1.1 version: 2.1.1 From 9f2f63798f8e06e083847a0e8671ce62264b8000 Mon Sep 17 00:00:00 2001 From: Gabriel Miranda Date: Mon, 8 Sep 2025 15:32:10 -0300 Subject: [PATCH 3/3] add changeset --- .changeset/fresh-bees-share.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/fresh-bees-share.md diff --git a/.changeset/fresh-bees-share.md b/.changeset/fresh-bees-share.md new file mode 100644 index 0000000000..8d41ea0c1c --- /dev/null +++ b/.changeset/fresh-bees-share.md @@ -0,0 +1,6 @@ +--- +"@react-email/preview-server": patch +"react-email": patch +--- + +use `styleText` from `node:util` instead of `chalk`