zalify/easy-email-editor

Easy Email Editor is a feature-rich, top open-source SaaS email editor based on React and MJML.

TypeScript

3,041

603 commits

updated Aug 13, 2026

See the code

README

Easy email


The most developer-friendly email editor based on MJML


Using TypeScript


💼 Looking for more features? Check out Easy Email Pro with cross-browser support, responsive design, and premium components.


Introduction

Easy email is developed based on the MJML and has very good compatibility. At the same time, it can generate code through drag-and-drop editing.

Video Overview
Overview

🎮 Live Demo

📧 Free Email Templates

Looking for ready-to-use templates? Check out our free collection of MJML and HTML email templates.

🚀 Getting Started

$ npm install --save easy-email-core easy-email-editor easy-email-extensions react-final-form
import React from 'react';
import { BlockManager, BasicType, AdvancedType } from 'easy-email-core';
import { EmailEditor, EmailEditorProvider } from 'easy-email-editor';
import { ExtensionProps, SimpleLayout } from 'easy-email-extensions';

import 'easy-email-editor/lib/style.css';
import 'easy-email-extensions/lib/style.css';
import '@arco-themes/react-easy-email-theme/css/arco.css';

const initialValues = {
  subject: 'Welcome to Easy-email',
  subTitle: 'Nice to meet you!',
  content: BlockManager.getBlockByType(BasicType.PAGE)!.create({}),
};

export default function App() {

  return (
    <EmailEditorProvider
      data={initialValues}
      height={'calc(100vh - 72px)'}
      autoComplete
      dashed={false}
    >
      {({ values }) => {
        return (
          <SimpleLayout>
            <EmailEditor />
          </SimpleLayout>
        );
      }}
    </EmailEditorProvider>
  );
}



⚙️ Configuration

propertyTypeDescription
heightstring / numberSet the height of the container
datainterface IEmailTemplate { content: IPage; subject: string; subTitle: string; }Source data
children( props: FormState,helper: FormApi<IEmailTemplate, Partial>) => React.ReactNodeReactNode
onSubmitConfig<IEmailTemplate, Partial>['onSubmit'];Called when the commit is triggered manually
fontList{ value: string; label: string; }[];Default font list.
onUploadImage(data: Blob) => Promise;Triggered when an image is pasted or uploaded

📊 Open Source vs Pro Version

FeatureOpen Source VersionPro Version
Browser CompatibilityOnly supports ChromeCompatible with various browsers (uses iframe)
React 19 Support❌ Not supported✅ Supported
Responsive Design❌ Not available✅ Supports different UI for desktop and mobile
AMP block❌ Not available✅ Accordion, Carousel, Form, Product, Reviews, Lucky Wheel
Migration❌ Not available✅ Seamless migration from Unlayer templates
Advanced FeaturesBasic features onlyUnsplash library, File Manager, Block Studio, and many more custom blocks
Technical SupportCommunity supportProfessional technical support with faster response times

Learn more about Easy Email Pro.

📄 License

The MIT License

email-builder
email-editor
email-template-editor
javascript
mjml-editor
react
react-email-editor

zalify/easy-email-editor

Easy Email Editor is a feature-rich, top open-source SaaS email editor based on React and MJML.

TypeScript

3,041

603 commits

updated Aug 13, 2026

See the code

README

Easy email


The most developer-friendly email editor based on MJML


Using TypeScript


💼 Looking for more features? Check out Easy Email Pro with cross-browser support, responsive design, and premium components.


Introduction

Easy email is developed based on the MJML and has very good compatibility. At the same time, it can generate code through drag-and-drop editing.

Video Overview
Overview

🎮 Live Demo

📧 Free Email Templates

Looking for ready-to-use templates? Check out our free collection of MJML and HTML email templates.

🚀 Getting Started

$ npm install --save easy-email-core easy-email-editor easy-email-extensions react-final-form
import React from 'react';
import { BlockManager, BasicType, AdvancedType } from 'easy-email-core';
import { EmailEditor, EmailEditorProvider } from 'easy-email-editor';
import { ExtensionProps, SimpleLayout } from 'easy-email-extensions';

import 'easy-email-editor/lib/style.css';
import 'easy-email-extensions/lib/style.css';
import '@arco-themes/react-easy-email-theme/css/arco.css';

const initialValues = {
  subject: 'Welcome to Easy-email',
  subTitle: 'Nice to meet you!',
  content: BlockManager.getBlockByType(BasicType.PAGE)!.create({}),
};

export default function App() {

  return (
    <EmailEditorProvider
      data={initialValues}
      height={'calc(100vh - 72px)'}
      autoComplete
      dashed={false}
    >
      {({ values }) => {
        return (
          <SimpleLayout>
            <EmailEditor />
          </SimpleLayout>
        );
      }}
    </EmailEditorProvider>
  );
}



⚙️ Configuration

propertyTypeDescription
heightstring / numberSet the height of the container
datainterface IEmailTemplate { content: IPage; subject: string; subTitle: string; }Source data
children( props: FormState,helper: FormApi<IEmailTemplate, Partial>) => React.ReactNodeReactNode
onSubmitConfig<IEmailTemplate, Partial>['onSubmit'];Called when the commit is triggered manually
fontList{ value: string; label: string; }[];Default font list.
onUploadImage(data: Blob) => Promise;Triggered when an image is pasted or uploaded

📊 Open Source vs Pro Version

FeatureOpen Source VersionPro Version
Browser CompatibilityOnly supports ChromeCompatible with various browsers (uses iframe)
React 19 Support❌ Not supported✅ Supported
Responsive Design❌ Not available✅ Supports different UI for desktop and mobile
AMP block❌ Not available✅ Accordion, Carousel, Form, Product, Reviews, Lucky Wheel
Migration❌ Not available✅ Seamless migration from Unlayer templates
Advanced FeaturesBasic features onlyUnsplash library, File Manager, Block Studio, and many more custom blocks
Technical SupportCommunity supportProfessional technical support with faster response times

Learn more about Easy Email Pro.

📄 License

The MIT License

email-builder
email-editor
email-template-editor
javascript
mjml-editor
react
react-email-editor

Significant stargazers

Wes Sander

58 followers · starred Sep 2026

Barthélémy Ledoux

180 followers · starred Jan 2024

Bruno Lemos

1,185 followers · starred Jun 2024

mehmet turac

35 followers · starred May 2026