Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
React Email

React Email Laravel Package

maantje/react-email

Bring React Email to Laravel: build email templates as React components and render them server-side for use with Laravel Mailables. Combines JSX component ergonomics with Laravel’s mail workflow for maintainable, reusable transactional emails.

View on GitHub
Deep Wiki
Context7

React email for Laravel

Frequently asked questions about React Email
What is maantje/react-email and how does it work with Laravel?
maantje/react-email is a Composer package that lets you author Laravel mail templates as React Email JSX or TSX components and render them to HTML for use inside Laravel Mailables. PHP composes the message while a JavaScript renderer produces the final HTML, which gives you React component ergonomics without abandoning Laravel's mail workflow. It is MIT-licensed and installable via Composer, and it is aimed at teams that already use React or want one component vocabulary across web and email.
How do I install maantje/react-email in a Laravel application?
Install it with Composer using composer require maantje/react-email, then follow the repository README for the expected Mailable integration and React Email setup. Because the templates are JSX or TSX, you will also need a Node and npm toolchain to install React Email and build or render the components. Confirm the exact publish, config, and rendering steps in the package documentation before wiring it into an existing app.
Does maantje/react-email require Node.js in production?
In most designs, yes: React Email rendering runs in JavaScript, so a Node runtime is part of the rendering path unless you precompile templates to HTML at build time. The evaluation flags this as a key unknown, because runtime rendering means Node must be present, healthy, and monitored in production, while build-time rendering shifts the dependency into CI and deploy. For a pure-PHP shop or an API-only service without a frontend toolchain, this is the main adoption cost.
Which Laravel and PHP versions does maantje/react-email support?
The supported Laravel version matrix, PHP floor, and Node floor are open questions in the technical assessment, so check the package's composer.json and CI matrix rather than assuming. The assessment recommends explicitly validating Laravel 10.x, 11.x, and 12.x compatibility, PHP 8.1 or newer, and the Node version in your production image. You should also confirm whether React Email versions are pinned, since routine upgrades become a two-ecosystem exercise across Composer and npm.
Does maantje/react-email work with queued Mailables and Laravel Octane?
It can be used from queued Mailables, but the assessment specifically calls out queued jobs and Laravel Octane as things to verify before production. Long-lived workers and process reuse can expose Node subprocess hangs, memory pressure, or leaks, so test render failures inside a real queue worker and under Octane. Also confirm whether a render exception fails the job, is silently dropped, or bubbles up as a transport-level exception.
Can I test React Email templates with Mail::fake() and assertSent in Laravel?
The testing story is flagged as an open question, so verify it against the package source and a small spike. Mail::fake() normally intercepts the Mailable before transport, so assertSent should still work, but the React render step may still run depending on where rendering happens. Add a render-only test that converts the component to HTML and asserts on the output, so CI can catch template breakage without sending mail.
How does maantje/react-email handle render errors and escaping of dynamic props?
The assessment asks whether render failures fail the queued job, silently drop, or bubble as a TransportException, so confirm the exception wrapping in the package before relying on it. For escaping, JSX escapes interpolated values by default, but the prop contract from PHP into JSX is a boundary you must test with real dynamic data. Treat any raw HTML or dangerouslySetInnerHTML-style escape hatch as a security-sensitive decision and review it explicitly.
Is maantje/react-email production-ready and who maintains it?
Treat it as young: the assessment notes one identifiable maintainer, roughly 50 stars, and zero dependents, so there is little production evidence in the ecosystem to borrow confidence from. It is MIT-licensed and Composer-installable, but expect minor-version churn and a two-ecosystem upgrade path involving both Composer and npm. Pilot it on one low-risk transactional email before expanding adoption.
How does maantje/react-email compare to Laravel Blade and Markdown mail templates?
Blade and Markdown mail keep everything in PHP and Laravel's existing mail workflow, with no extra runtime and mature testing support. maantje/react-email trades that simplicity for React component ergonomics and design consistency when your team already uses React Email or wants one component vocabulary across web and inbox. It solves a design-consistency problem, not a deliverability or throughput problem, so do not adopt it for those reasons.
How do I migrate existing Blade mail templates to React Email safely?
Use a strangler pattern rather than a big-bang rewrite: start with one low-risk transactional email such as password reset or email verification, keep the Blade template live, and diff outputs in staging. Add a config flag that selects the Blade or React implementation per mail class so rollback is a one-line change. Expand template by template only after the render path, failure handling, and queue behavior are proven, and leave marketing or bulk mail on the existing system for at least a quarter.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle