Source: https://seerepo.com/r/resend/react-email/built
Markdown source: https://seerepo.com/r/resend/react-email/built.md
Description: react-email is a TypeScript repo built with Next.js and React. It sends email with Resend. It has 209,349 written lines, with 194 test files.

# What is react-email built with?

react-email is a TypeScript repo built with Next.js and React. It sends email with Resend, makes its content with hast-util-from-html, prismjs, marked, html-to-text, entities, and 2 more, validates its data with Zod, is tested with Vitest, Testing Library, vitest-browser-react, and playwright, deploys with vercel, and uses Redis. It has 209,349 written lines, with 194 test files.

Read on November 5, 2026, at commit d8a0778.

Repository: https://github.com/resend/react-email

## Frontend (apps/web)

### The base

- **[Next.js](https://seerepo.com/uses/nextjs)**: 49 files · [in apps/web/package.json](https://github.com/resend/react-email/blob/d8a077865793516917f42993a1e13becd797cad1/apps/web/package.json)
- **[React](https://seerepo.com/uses/react)**: 48 files · [in apps/web/package.json](https://github.com/resend/react-email/blob/d8a077865793516917f42993a1e13becd797cad1/apps/web/package.json)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**
- **[classnames](https://seerepo.com/uses/classnames)**: 24 files
- **[PostCSS](https://seerepo.com/uses/postcss)**: 1 file

### Interface

- **[tiptap](https://seerepo.com/uses/tiptap)**: 17 files
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 13 files
- **[Framer](https://seerepo.com/uses/framer)**: 8 files
- **react-three**: 5 files
- **[three](https://seerepo.com/uses/three)**: 5 files
- **prism-react-renderer**: 2 files
- **[sonner](https://seerepo.com/uses/sonner)**: 2 files
- **[vaul](https://seerepo.com/uses/vaul)**: 1 file

### Icons

- **[Lucide](https://seerepo.com/uses/lucide)**: 22 files

## Backend (apps/web)

### Data

- **[Redis](https://seerepo.com/uses/redis)**: 1 file · [apps/web/src/lib/rate-limiter.ts, line 1](https://github.com/resend/react-email/blob/d8a077865793516917f42993a1e13becd797cad1/apps/web/src/lib/rate-limiter.ts#L1)

## Support (apps/web)

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 2 files

### Testing

- **Vitest**: 1 file

### Deploy

- **vercel**: 1 file

### Tools

- **Babel**: 1 file

### Other

- **rate-limiter-flexible**: 1 file
- **[Vercel](https://seerepo.com/uses/vercel)**: 1 file

## Frontend (packages/create-email)

### Interface

- **[ora](https://seerepo.com/uses/ora)**: 1 file

## Support (packages/create-email)

### Tools

- **commander**: 1 file
- **log-symbols**: 1 file

### Other

- **fs-extra**: 1 file

## Frontend (packages/editor)

### The base

- **[React](https://seerepo.com/uses/react)**: 60 files · [in apps/web/package.json](https://github.com/resend/react-email/blob/d8a077865793516917f42993a1e13becd797cad1/apps/web/package.json)

### Interface

- **[tiptap](https://seerepo.com/uses/tiptap)**: 82 files
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 3 files
- **@floating-ui/react-dom**: 1 file

## Support (packages/editor)

### Content

- **hast-util-from-html**: 1 file
- **[prismjs](https://seerepo.com/uses/prismjs)**: 1 file

### Testing

- **Vitest**: 32 files
- **Testing Library**: 11 files
- **vitest-browser-react**: 4 files

## Frontend (packages/react-email)

### The base

- **[React](https://seerepo.com/uses/react)**: 24 files · [in apps/web/package.json](https://github.com/resend/react-email/blob/d8a077865793516917f42993a1e13becd797cad1/apps/web/package.json)
- **[Next.js](https://seerepo.com/uses/nextjs)**: 1 file · [in apps/web/package.json](https://github.com/resend/react-email/blob/d8a077865793516917f42993a1e13becd797cad1/apps/web/package.json)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**: 2 files

### Interface

- **[prompts](https://seerepo.com/uses/prompts)**: 2 files
- **picospinner**: 1 file

## Support (packages/react-email)

### Content

- **[prismjs](https://seerepo.com/uses/prismjs)**: 2 files
- **[marked](https://seerepo.com/uses/marked)**: 1 file

### Testing

- **Vitest**: 2 files

### Tools

- **css-tree**: 18 files
- **log-symbols**: 5 files
- **esbuild**: 4 files
- **chokidar**: 3 files
- **jiti**: 3 files
- **Babel**: 1 file
- **commander**: 1 file
- **glob**: 1 file
- **shelljs**: 1 file
- **tsconfig-paths**: 1 file

### Other

- **conf**: 1 file
- **debounce**: 1 file
- **mime-types**: 1 file
- **Socket.io**: 1 file

## Support (packages/react-email/dev)

### Other

- **shlex**: 1 file

## Frontend (packages/render)

### The base

- **[React](https://seerepo.com/uses/react)**: 8 files · [in apps/web/package.json](https://github.com/resend/react-email/blob/d8a077865793516917f42993a1e13becd797cad1/apps/web/package.json)

## Support (packages/render)

### Content

- **html-to-text**: 2 files
- **[entities](https://seerepo.com/uses/entities)**: 1 file
- **html5parser**: 1 file

### Testing

- **Vitest**: 2 files
- **playwright**: 1 file

### Tools

- **Prettier**: 1 file
- **shelljs**: 1 file

## Frontend (packages/ui)

### The base

- **[React](https://seerepo.com/uses/react)**: 66 files · [in apps/web/package.json](https://github.com/resend/react-email/blob/d8a077865793516917f42993a1e13becd797cad1/apps/web/package.json)
- **[Next.js](https://seerepo.com/uses/nextjs)**: 13 files · [in apps/web/package.json](https://github.com/resend/react-email/blob/d8a077865793516917f42993a1e13becd797cad1/apps/web/package.json)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**
- **[tailwind-merge](https://seerepo.com/uses/tailwind-merge)**: 1 file

### Interface

- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 18 files
- **[Framer](https://seerepo.com/uses/framer)**: 7 files
- **[sonner](https://seerepo.com/uses/sonner)**: 5 files
- **prism-react-renderer**: 3 files
- **@lottiefiles/dotlottie-react**: 1 file
- **picospinner**: 1 file

## Backend (packages/ui)

### Services

- **[Resend](https://seerepo.com/uses/resend)**: 1 file · [packages/ui/src/actions/export-single-template.ts, line 3](https://github.com/resend/react-email/blob/d8a077865793516917f42993a1e13becd797cad1/packages/ui/src/actions/export-single-template.ts#L3)

## Support (packages/ui)

### Content

- **node-html-parser**: 3 files

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 3 files

### Testing

- **Vitest**: 8 files

### Tools

- **esbuild**: 7 files
- **Babel**: 4 files
- **source-map-js**: 3 files
- **css-tree**: 1 file
- **jiti**: 1 file
- **log-symbols**: 1 file

### Other

- **clsx**: 2 files
- **use-debounce**: 2 files
- **colorjs.io**: 1 file
- **pretty-bytes**: 1 file
- **socket.io-client**: 1 file
- **stacktrace-parser**: 1 file

## Other repos with a similar stack

- [calcom/cal.diy](https://seerepo.com/r/calcom/cal.diy/built): Next.js, React, Redis, Tailwind CSS, classnames, Radix UI, Framer, sonner, Lucide, Zod, marked, entities, tailwind-merge, node-html-parser · [Compare](https://seerepo.com/compare/calcom/cal.diy/vs/resend/react-email)
- [shadcn-ui/ui](https://seerepo.com/r/shadcn-ui/ui/built): Next.js, React, Tailwind CSS, PostCSS, Radix UI, sonner, vaul, Lucide, Zod, ora, prompts · [Compare](https://seerepo.com/compare/resend/react-email/vs/shadcn-ui/ui)
- [TryGhost/Ghost](https://seerepo.com/r/TryGhost/Ghost/built): React, Tailwind CSS, tiptap, Radix UI, sonner, Lucide, Zod, @floating-ui/react-dom, html-to-text, entities, tailwind-merge · [Compare](https://seerepo.com/compare/resend/react-email/vs/TryGhost/Ghost)
- [multica-ai/multica](https://seerepo.com/r/multica-ai/multica/built): Next.js, React, Redis, Resend, Tailwind CSS, PostCSS, tiptap, sonner, Zod, marked, tailwind-merge · [Compare](https://seerepo.com/compare/multica-ai/multica/vs/resend/react-email)
- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): Next.js, React, Redis, Tailwind CSS, Radix UI, Framer, sonner, vaul, Zod, tailwind-merge · [Compare](https://seerepo.com/compare/resend/react-email/vs/Significant-Gravitas/AutoGPT)
- [remotion-dev/remotion](https://seerepo.com/r/remotion-dev/remotion/built): Next.js, React, Tailwind CSS, Radix UI, three, Lucide, Zod, prismjs, prompts, tailwind-merge · [Compare](https://seerepo.com/compare/remotion-dev/remotion/vs/resend/react-email)

## Frequently asked questions

### What language is react-email written in?

react-email is written in TypeScript, with 209,349 written lines.

### What framework does react-email use?

react-email is built with Next.js and React.

The proof: [in apps/web/package.json](https://github.com/resend/react-email/blob/d8a077865793516917f42993a1e13becd797cad1/apps/web/package.json)

### What services does react-email use?

react-email sends email with Resend and uses Redis.

The proof: [packages/ui/src/actions/export-single-template.ts, line 3](https://github.com/resend/react-email/blob/d8a077865793516917f42993a1e13becd797cad1/packages/ui/src/actions/export-single-template.ts#L3)

### Does react-email have tests?

Yes. react-email has 194 test files and is tested with Vitest, Testing Library, vitest-browser-react, and playwright.

### Which repos have a stack like react-email's?

The ones that share most of its stack: calcom/cal.diy, shadcn-ui/ui, and TryGhost/Ghost.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
