React Email ou Maizzle : comparer deux frameworks d’e-mails
React Email transforme des composants React en HTML d’e-mail ; Maizzle associe des gabarits HTML, Tailwind CSS et une chaîne de build. Pour une équipe de développement SaaS, le bon choix dépend du code déjà maîtrisé et de la façon dont le HTML rejoint l’API d’envoi.
Comparaison rapide
| Point | React Email | Maizzle |
|---|---|---|
| Source | Composants React et JSX | HTML, composants et Tailwind CSS |
| Transformation | Rendu React vers HTML | Build, inlining CSS et optimisation |
| Prévisualisation | Aperçu local dans le flux React | Serveur de développement dédié |
| Réutilisation | Props, composants et logique partagée | Layouts, blocs et classes utilitaires |
| Coût du framework | Gratuit, open source | Gratuit, open source |
| Envoi | API ou SMTP à choisir séparément | API ou SMTP à choisir séparément |
Réponse courte pour une équipe SaaS
React Email est adapté lorsque le produit est déjà construit en React et que les développeurs veulent traiter chaque message comme un composant. Les props portent les données d’une commande, d’une facture ou d’une alerte, tandis que la prévisualisation locale reste proche du code applicatif. Maizzle convient aux équipes qui préfèrent lire directement la structure HTML et appliquer Tailwind CSS avant une étape de build qui place les styles dans le document. Les deux frameworks produisent un résultat à transmettre à un service d’envoi ; aucun ne constitue à lui seul une API de livraison.
La différence se voit dans les frontières du projet. React Email rapproche les templates du frontend, avec les mêmes conventions de modules, de types et de revue de code. Maizzle rend la pipeline d’e-mail plus explicite : une source, des transformations, puis un dossier de sortie. Avant de décider, prenez une notification réelle et suivez-la de la variable métier jusqu’au HTML final. Cette petite expérience révèle le coût de maintenance mieux qu’une liste de fonctions.
React Email : des e-mails comme composants
Avec React Email, un gabarit expose une fonction de composant. Un message de bienvenue peut recevoir un prénom, une URL d’activation et une locale ; une facture peut recevoir une liste de lignes et un total. Les primitives de la bibliothèque décrivent le document, le corps, le conteneur, le texte ou le bouton. Le développeur garde ainsi une séparation nette entre les données du SaaS et le balisage de l’e-mail.
Cette approche est confortable si le dépôt utilise déjà TypeScript, les imports et des composants partagés. Un en-tête, un pied de page et un bouton peuvent suivre la même convention que le reste de l’interface, tout en restant limités aux contraintes du HTML d’e-mail. La contrepartie est une dépendance à la connaissance de React et du JSX. Une personne qui modifie rarement du code devra comprendre les props, les fragments et le rendu avant de changer une phrase.
Le rendu doit être une étape visible de la livraison. Décidez si le serveur produit le HTML au moment de l’envoi ou si la CI publie des artefacts. Conservez les variables non résolues de façon intentionnelle et journalisez la version du template. Cette discipline évite qu’une modification de composant change plusieurs messages sans que l’équipe sache quel artefact a été envoyé.
Maizzle : HTML, Tailwind et pipeline dédiée
Maizzle part d’un document HTML et de classes Tailwind CSS. Les layouts et les blocs permettent de garder une ossature commune pour une confirmation, un rappel ou une notification de sécurité. Pendant le build, les règles CSS sont intégrées au HTML et les transformations prévues par la configuration s’appliquent. Le résultat est un fichier autonome que l’API d’envoi peut recevoir.
Pour une équipe qui pense d’abord en tableaux, cellules et attributs de messagerie, cette visibilité est utile. Les classes Tailwind accélèrent la mise en forme, mais elles ne rendent pas tous les styles sûrs par magie : le gabarit doit rester compatible avec les clients ciblés. Les responsables du code doivent également documenter les extensions de configuration, les layouts disponibles et le dossier de sortie.
Le serveur de développement de Maizzle donne un endroit clair pour modifier une source et regarder le résultat. Il ne remplace pas la vérification du HTML produit ni la décision sur le moment où l’API envoie le message. La pipeline peut vivre dans le même dépôt que le produit ou dans un paquet séparé ; dans les deux cas, nommez les versions et les variables de façon stable.
Templates en code, réutilisation et i18n
Les deux modèles permettent de partager des parties, mais les unités de partage ne sont pas identiques. React Email partage des composants et leurs props. Vous pouvez créer un composant de prix, un bloc d’adresse ou un encart d’action, puis passer la traduction et les valeurs au même endroit. Des types stricts aident à repérer une variable manquante avant le build.
Maizzle partage des layouts, des includes et des conventions de classes. Les données de build peuvent alimenter des placeholders dans un gabarit HTML. Cette organisation fonctionne bien lorsque les auteurs veulent voir le document et quand les règles de design sont exprimées en tokens Tailwind. Elle demande de limiter les variables implicites : chaque bloc doit préciser les champs dont il dépend.
Pour l’internationalisation, gardez un catalogue hors du markup et imposez une liste de locales. Dans React Email, le composant reçoit une locale et choisit les textes dans une couche dédiée ; dans Maizzle, un contexte de build peut sélectionner les données et le fichier de gabarit. Dans les deux cas, prévoyez les textes plus longs, les formats de date et les liens propres à chaque marché. Une traduction manquante doit faire échouer le rendu ou être signalée avant l’envoi.
Prévisualiser et vérifier le HTML
Une prévisualisation locale répond à la question « que produit mon changement ? ». Elle ne décide pas de la politique de test de votre équipe. Après le rendu, inspectez les tableaux, les liens, les textes alternatifs, les en-têtes et les variables. Faites passer le HTML par votre processus de vérification des clients de messagerie et gardez les cas représentatifs dans le dépôt. React Email et Maizzle s’insèrent tous deux dans ce flux, avec des commandes et des artefacts différents.
Reliez ensuite le fichier final à votre service d’envoi. Une API transactionnelle reçoit généralement un destinataire, un sujet, un HTML et des données de suivi. Si votre application envoie directement le composant React, définissez une frontière claire entre rendu et appel réseau. Avec Maizzle, le service applicatif peut charger un fichier construit ou l’intégrer à un paquet. Dans les deux cas, les secrets d’API restent hors des templates.
Coûts : frameworks gratuits, envoi facturé séparément
React Email et Maizzle sont des outils gratuits et open source. Le poste concret arrive avec le fournisseur qui remet les messages. Resend Free inclut 3 000 e-mails par mois et le plan Pro coûte 20 $ par mois pour 50 000 e-mails. Resend propose aussi un palier Pro à 35 $ par mois pour 100 000 e-mails. Ces montants sont mensuels et portent sur des e-mails envoyés.
Postmark Free autorise 100 e-mails par mois sans dépassement. Son plan Basic commence à 15 $ par mois pour 10 000 e-mails ; au palier de 50 000 e-mails, Basic est à 55 $ par mois. Postmark sépare donc clairement la construction des messages et le volume remis par son service.
Mailgun Free comprend 100 e-mails par jour. Mailgun Basic commence à 15 $ par mois pour 10 000 e-mails mensuels. Foundation coûte 35 $ par mois après le premier mois pour 50 000 e-mails mensuels, et Scale coûte 90 $ par mois après le premier mois pour 100 000 e-mails. Pour comparer correctement, notez le volume, la période de facturation et les éventuels dépassements dans votre budget.
Ces prix n’achètent ni React Email ni Maizzle. Ils paient la remise, les journaux et les fonctions du service d’envoi choisi. Un volume irrégulier peut favoriser un plan avec un petit palier de départ ; un produit SaaS qui envoie des notifications constantes doit comparer le quota inclus et le tarif des e-mails supplémentaires. Ajoutez les frais d’un outil de prévisualisation uniquement si votre processus en a besoin.
Migration de React Email vers Maizzle
Commencez par dresser l’inventaire des templates, des données, des langues et des points d’appel. Choisissez une notification avec un layout commun, une liste et un bouton. Exportez son HTML actuel, notez les styles indispensables et reproduisez la structure dans un layout Maizzle. Traduisez ensuite les composants récurrents en includes ou en blocs HTML, sans changer le contrat de données au même moment.
Construisez les deux versions dans une branche de migration. Comparez les liens, les valeurs, les textes et le résultat après inlining CSS. Branchez l’API sur une sélection contrôlée, puis retirez l’ancien rendu lorsque la nouvelle pipeline est comprise par les personnes qui la maintiendront. La migration est plus sûre si chaque étape produit un artefact nommé et traçable.
Migration de Maizzle vers React Email
Dans l’autre direction, séparez d’abord les données du HTML. Transformez chaque layout en composant React, remplacez les includes par des composants et regroupez les tokens visuels dans une petite couche de styles. Les classes Tailwind ne se transposent pas toutes directement : gardez une liste de règles approuvées et rendez les styles adaptés à l’e-mail.
Ajoutez une locale et un jeu de données de démonstration à chaque composant. Faites produire le HTML dans la même étape que les autres notifications React, puis conservez le chemin d’envoi identique tant que le rendu n’est pas accepté. Cette méthode permet de changer la source sans déplacer simultanément les secrets, les files ou les règles de livraison.
Tableau de décision pratique
| Situation | React Email | Maizzle |
|---|---|---|
| Dépôt déjà très React | Composants et types dans les conventions existantes | Pipeline indépendante à documenter |
| Équipe centrée sur le markup | Apprentissage du JSX et des props | HTML visible et classes Tailwind |
| Design partagé | Composants et tokens en code | Layouts et configuration de build |
| Envoi | Ajouter une API ou un relais | Ajouter une API ou un relais |
Ce tableau décrit des chemins de travail, pas un classement. Faites le choix avec la personne qui écrira les templates, celle qui opérera le build et celle qui maintiendra l’intégration d’envoi. Une convention claire vaut mieux qu’un mélange de deux syntaxes pour un même message.
Questions fréquentes
React Email et Maizzle sont-ils payants ?
Les deux projets sont gratuits et open source. Le budget concerne surtout le service qui envoie les messages, la prévisualisation éventuelle et l’infrastructure de build. Resend, Postmark, Mailgun ou un autre fournisseur facturent leurs propres volumes.
Quel framework convient à une équipe qui utilise déjà React ?
React Email s’intègre naturellement à une équipe qui écrit déjà des composants React et du JSX. Les props, les conditions et la composition restent familières. Maizzle demeure possible, mais il introduit une façon de structurer les gabarits en HTML et Tailwind CSS.
Maizzle remplace-t-il un service d’envoi ?
Non. Maizzle prépare des gabarits et produit un HTML adapté à la messagerie, avec notamment l’inlining CSS. Il faut ensuite remettre ce HTML à une API ou à un relais SMTP, comme pour React Email.
Comment gérer plusieurs langues avec ces frameworks ?
Centralisez les traductions et les variables dans votre application, puis rendez chaque locale à partir du même contrat de données. Avec React Email, des composants peuvent recevoir la locale en prop. Avec Maizzle, des données de build et des gabarits par langue peuvent suivre la même convention de nommage.
Peut-on migrer un catalogue de React Email vers Maizzle ?
Oui, mais il faut refaire la couche de présentation. Inventoriez les variables, les blocs partagés et les règles de style, puis transposez une notification représentative en HTML et Tailwind. Gardez l’ancien rendu jusqu’à la validation du nouveau chemin d’envoi.
Comment choisir le service d’envoi après le framework ?
Mesurez le nombre de messages par mois, la journalisation nécessaire, les domaines et le besoin d’une API. Un petit produit peut commencer avec le plan gratuit de Resend ou Mailgun. Un volume de 50 000 messages peut être comparé à Resend Pro à 20 $ par mois, Postmark Basic à 55 $ par mois ou Mailgun Foundation à 35 $ par mois.