Skip to content

Commit c6fcd94

Browse files
authored
fix(react-email): Preview server crashing without React 19 (#1861)
1 parent 3b8aada commit c6fcd94

File tree

12 files changed

+153
-135
lines changed

12 files changed

+153
-135
lines changed

.changeset/honest-apes-hope.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"react-email": patch
3+
---
4+
5+
Fix preview server crashing without React 19
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
'use server';
2+
3+
import type { EmailsDirectory } from '../utils/get-emails-directory-metadata';
4+
import { getEmailsDirectoryMetadata } from '../utils/get-emails-directory-metadata';
5+
6+
export const getEmailsDirectoryMetadataAction = async (
7+
absolutePathToEmailsDirectory: string,
8+
keepFileExtensions = false,
9+
isSubDirectory = false,
10+
11+
baseDirectoryPath = absolutePathToEmailsDirectory,
12+
): Promise<EmailsDirectory | undefined> => {
13+
return getEmailsDirectoryMetadata(
14+
absolutePathToEmailsDirectory,
15+
keepFileExtensions,
16+
isSubDirectory,
17+
baseDirectoryPath,
18+
);
19+
};

packages/react-email/src/actions/get-emails-directory-metadata.ts

Lines changed: 0 additions & 123 deletions
This file was deleted.

packages/react-email/src/app/layout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type { Metadata } from 'next';
22
import './globals.css';
3-
import { getEmailsDirectoryMetadata } from '../actions/get-emails-directory-metadata';
43
import { emailsDirectoryAbsolutePath } from '../utils/emails-directory-absolute-path';
54
import { EmailsProvider } from '../contexts/emails';
5+
import { getEmailsDirectoryMetadata } from '../utils/get-emails-directory-metadata';
66
import { inter } from './inter';
77

88
export const metadata: Metadata = {

packages/react-email/src/app/preview/[...slug]/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import path from 'node:path';
22
import { Suspense } from 'react';
33
import { redirect } from 'next/navigation';
44
import { getEmailPathFromSlug } from '../../../actions/get-email-path-from-slug';
5-
import { getEmailsDirectoryMetadata } from '../../../actions/get-emails-directory-metadata';
65
import { renderEmailByPath } from '../../../actions/render-email-by-path';
76
import { emailsDirectoryAbsolutePath } from '../../../utils/emails-directory-absolute-path';
87
import Home from '../../page';
8+
import { getEmailsDirectoryMetadata } from '../../../utils/get-emails-directory-metadata';
99
import Preview from './preview';
1010

1111
export const dynamicParams = true;

packages/react-email/src/cli/commands/build.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { spawn } from 'node:child_process';
55
import {
66
type EmailsDirectory,
77
getEmailsDirectoryMetadata,
8-
} from '../../actions/get-emails-directory-metadata';
8+
} from '../../utils/get-emails-directory-metadata';
99
import { cliPacakgeLocation } from '../utils';
1010
import { registerSpinnerAutostopping } from '../../utils/register-spinner-autostopping';
1111
import logSymbols from 'log-symbols';

packages/react-email/src/cli/commands/export.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { tree } from '../utils';
1212
import {
1313
EmailsDirectory,
1414
getEmailsDirectoryMetadata,
15-
} from '../../actions/get-emails-directory-metadata';
15+
} from '../../utils/get-emails-directory-metadata';
1616
import { renderingUtilitiesExporter } from '../../utils/esbuild/renderring-utilities-exporter';
1717

1818
const getEmailTemplatesFromDirectory = (emailDirectory: EmailsDirectory) => {

packages/react-email/src/components/sidebar/sidebar-directory-children.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { AnimatePresence, LayoutGroup, motion } from 'framer-motion';
22
import * as Collapsible from '@radix-ui/react-collapsible';
33
import Link from 'next/link';
44
import { useSearchParams } from 'next/navigation';
5-
import type { EmailsDirectory } from '../../actions/get-emails-directory-metadata';
5+
import type { EmailsDirectory } from '../../utils/get-emails-directory-metadata';
66
import { emailsDirectoryAbsolutePath } from '../../utils/emails-directory-absolute-path';
77
import { cn } from '../../utils';
88
import { IconFile } from '../icons/icon-file';

packages/react-email/src/components/sidebar/sidebar-directory.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import * as Collapsible from '@radix-ui/react-collapsible';
33
import * as React from 'react';
44
import { cn } from '../../utils';
5-
import { type EmailsDirectory } from '../../actions/get-emails-directory-metadata';
5+
import { type EmailsDirectory } from '../../utils/get-emails-directory-metadata';
66
import { Heading } from '../heading';
77
import { IconFolder } from '../icons/icon-folder';
88
import { IconFolderOpen } from '../icons/icon-folder-open';

packages/react-email/src/contexts/emails.tsx

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
'use client';
22
import { createContext, useContext, useState } from 'react';
3-
import {
4-
getEmailsDirectoryMetadata,
5-
type EmailsDirectory,
6-
} from '../actions/get-emails-directory-metadata';
3+
import { getEmailsDirectoryMetadataAction } from '../actions/get-emails-directory-metadata-action';
74
import { useHotreload } from '../hooks/use-hot-reload';
5+
import type { EmailsDirectory } from '../utils/get-emails-directory-metadata';
86

97
const EmailsContext = createContext<
108
| {
@@ -37,7 +35,7 @@ export const EmailsProvider = (props: {
3735
// the rules of hooks
3836
// eslint-disable-next-line react-hooks/rules-of-hooks
3937
useHotreload(async () => {
40-
const metadata = await getEmailsDirectoryMetadata(
38+
const metadata = await getEmailsDirectoryMetadataAction(
4139
props.initialEmailsDirectoryMetadata.absolutePath,
4240
);
4341
if (metadata) {

0 commit comments

Comments
 (0)