Documentation is extremely important and takes a fair deal of time and effort to write and keep updated. Everything is written in Markdown to facilitate the process of contributing.
We’re open to expanding the catalog of components to cover as many use cases as possible. We suggest to open an issue for discussion first to make sure your idea is aligned with the project goals.
Open an issue to report bugs or to propose new features.
Reporting bugs: describe the bug as clearly as you can, including steps to reproduce, what happened and what you were expecting to happen. Also include browser version, OS and other related software’s (npm, Node.js, etc) versions when applicable.
Suggesting features: explain the proposed feature, what it should do, why it is useful, how users should use it. Give us as much info as possible so it will be easier to discuss, access and implement the proposed feature. When you’re unsure about a certain aspect of the feature, feel free to leave it open for others to discuss and find an appropriate solution.
Pull requests are very welcome. Note that if you are going to propose drastic changes, be sure to open an issue for discussion first, to make sure that your PR will be accepted before you spend effort coding it.
Forking the repository: clone it locally and create a branch for your proposed bug fix or new feature. Avoid working directly on the main branch.
Making changes: implement your bug fix or feature, write tests to cover it and make sure all tests are passing. Then commit your changes, push your bug fix/feature branch to the origin (your forked repo) and open a pull request to the upstream (the repository you originally forked)‘s main branch.
⌘I
{"docsConfig":{"theme":"almond","$schema":"https://mintlify.com/docs.json","name":"React Email","colors":{"primary":"#06BCEE","light":"#81D7F7","dark":"#0E7490"},"logo":{"light":"https://mintcdn.com/react-email/5VriGJ5Ik0v6egEW/logo/light.svg?fit=max\u0026auto=format\u0026n=5VriGJ5Ik0v6egEW\u0026q=85\u0026s=b39c562221038e5817dcacb0afb698a9","dark":"https://mintcdn.com/react-email/5VriGJ5Ik0v6egEW/logo/dark.svg?fit=max\u0026auto=format\u0026n=5VriGJ5Ik0v6egEW\u0026q=85\u0026s=9d8335c2783b8541912c4dfce2a98d58"},"favicon":"https://mintcdn.com/react-email/5VriGJ5Ik0v6egEW/favicon.png?fit=max\u0026auto=format\u0026n=5VriGJ5Ik0v6egEW\u0026q=85\u0026s=bc6741090f7306d11f881052cd25ce9f","background":{"image":"https://mintcdn.com/react-email/5VriGJ5Ik0v6egEW/images/background.png?fit=max\u0026auto=format\u0026n=5VriGJ5Ik0v6egEW\u0026q=85\u0026s=f8e7b360614b3c860bad7ac326584901","color":{"light":"#FFFFFF","dark":"#111111"}},"navbar":{"primary":{"type":"github","href":"https://github.com/resend/react-email"}},"styling":{"codeblocks":{"theme":{"light":"github-light","dark":"vesper"}},"latex":false},"integrations":{"ga4":{"measurementId":"G-2LXLLQLM5D"}},"contextual":{"options":["copy",{"title":"llms-full.txt","description":"View all docs as Markdown for LLMs","icon":"markdown","href":"https://react.email/docs/llms-full.txt"},"chatgpt","claude"],"display":"header"},"navigation":{"global":{"anchors":[{"anchor":"Components","icon":"grid-2-plus","href":"https://react.email/components"},{"anchor":"Templates","icon":"arrow-pointer","href":"https://demo.react.email/preview/Community/notifications/vercel-invite-user"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"react-email","hasAudioNarration":false,"actualSubdomain":"react-email","customDomains":["react.email"],"gitSource":{"type":"github","owner":"resend","repo":"react-email","deployBranch":"main","contentDirectory":"apps/docs","mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6acfe14364145da8aa474c38","collectionId":"fae6ef1e-5e76-4949-b3d2-e5efff5edc05","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6acfe14364145da8aa474c38"},"entitlements":{},"buildId":"6acfe14364145da8aa474c38","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"Primitives","count":65},{"language":"default","tag":"Editor","count":26},{"language":"default","tag":"Components","count":19},{"language":"default","tag":"Integrations","count":18},{"language":"default","tag":"API Reference","count":11},{"language":"default","tag":"Contributing","count":10},{"language":"default","tag":"Features","count":10},{"language":"default","tag":"Getting Started","count":8},{"language":"default","tag":"Overview","count":7},{"language":"default","tag":"Development workflow","count":6}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"@media (min-width:1024px){#navbar .flex-1.flex.items-center.gap-x-4:has(img.nav-logo):has(>a){flex:none!important;width:14.75rem}#navbar .flex.items-center.gap-4:has(.nav-tabs){flex:1!important}#navbar .ml-auto:has(.nav-tabs){margin-left:0!important;justify-content:space-between;flex:1!important}#navbar .gap-x-6:has(.nav-tabs)>nav{margin-left:auto!important}}#footer a[href*=\"mintlify.com\"]{display:none}"}],"page":{"pagePath":"contributing","slug":"/contributing","pageMetadata":{"title":"Contributing","sidebarTitle":"Old Contributing","description":"Wanna help? Awesome! There are many ways you can contribute.","og:image":"https://react.email/static/covers/react-email.png","icon":"code-pull-request","href":"/contributing"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Wanna help? Awesome! There are many ways you can contribute.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,path:`path`,pre:`pre`,span:`span`,strong:`strong`,svg:`svg`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,CodeBlock,Heading}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`improving-the-docs`,children:`Improving the docs`}),`\n`,_jsxs(_components.p,{children:[`Documentation is extremely important and takes a fair deal of time and effort to write and keep updated. Everything is written in `,_jsx(_components.a,{href:`https://www.markdownguide.org/`,children:`Markdown`}),` to facilitate the process of contributing.`]}),`\n`,_jsxs(Accordion,{title:`Docs Setup Guide`,icon:_jsx(_components.svg,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,children:_jsx(_components.path,{d:`M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z`})}),id:`docs-setup-guide`,children:[_jsx(Heading,{level:`2`,id:`docs-setup-guide`,children:`Docs Setup Guide`}),_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Clone the repository:`}),`\n`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light vesper`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#101010`,color:`#24292e`,\"--shiki-dark\":`#FFF`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#FFC799`},children:`git`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#99FFE4`},children:` clone`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#99FFE4`},children:` https://github.com/resend/react-email.git`})]}),`\n`]})})}),_jsxs(_components.ol,{start:`2`,children:[`\n`,_jsx(_components.li,{children:`Install all dependencies:`}),`\n`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light vesper`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#101010`,color:`#24292e`,\"--shiki-dark\":`#FFF`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#FFC799`},children:`pnpm`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#99FFE4`},children:` install`})]}),`\n`]})})}),_jsxs(_components.ol,{start:`3`,children:[`\n`,_jsxs(_components.li,{children:[`Navigate to the `,_jsx(_components.code,{children:`apps/docs`}),` folder:`]}),`\n`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light vesper`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#101010`,color:`#24292e`,\"--shiki-dark\":`#FFF`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#FFC799`},children:`cd`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#99FFE4`},children:` apps/docs`})]}),`\n`]})})}),_jsxs(_components.ol,{start:`4`,children:[`\n`,_jsx(_components.li,{children:`Run the development server:`}),`\n`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light vesper`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#101010`,color:`#24292e`,\"--shiki-dark\":`#FFF`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#FFC799`},children:`pnpm`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#99FFE4`},children:` dev`})]}),`\n`]})})}),_jsxs(_components.ol,{start:`5`,children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Make your changes under the `,_jsx(_components.code,{children:`apps/docs`}),` folder and see a live preview at `,_jsx(_components.a,{href:`http://localhost:3000`,children:`localhost:3000`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Submit a pull request.`}),`\n`]}),`\n`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`building-new-components`,children:`Building new components`}),`\n`,_jsx(_components.p,{children:`We’re open to expanding the catalog of components to cover as many use cases as possible. We suggest to open an issue for discussion first to make sure your idea is aligned with the project goals.`}),`\n`,_jsxs(Accordion,{title:`Components Setup Guide`,icon:_jsx(_components.svg,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,children:_jsx(_components.path,{d:`M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z`})}),id:`components-setup-guide`,children:[_jsx(Heading,{level:`2`,id:`components-setup-guide`,children:`Components Setup Guide`}),_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Clone the repository:`}),`\n`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light vesper`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#101010`,color:`#24292e`,\"--shiki-dark\":`#FFF`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#FFC799`},children:`git`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#99FFE4`},children:` clone`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#99FFE4`},children:` https://github.com/resend/react-email.git`})]}),`\n`]})})}),_jsxs(_components.ol,{start:`2`,children:[`\n`,_jsx(_components.li,{children:`Install all dependencies:`}),`\n`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light vesper`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#101010`,color:`#24292e`,\"--shiki-dark\":`#FFF`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#FFC799`},children:`pnpm`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#99FFE4`},children:` install`})]}),`\n`]})})}),_jsxs(_components.ol,{start:`3`,children:[`\n`,_jsx(_components.li,{children:`Run local servers and watch for changes:`}),`\n`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light vesper`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#101010`,color:`#24292e`,\"--shiki-dark\":`#FFF`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#FFC799`},children:`pnpm`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#99FFE4`},children:` dev`})]}),`\n`]})})}),_jsxs(_components.ol,{start:`4`,children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Add a new folder under `,_jsx(_components.code,{children:`packages`}),` and build your component.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Don’t forget to add tests.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Submit a pull request.`}),`\n`]}),`\n`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`opening-issues`,children:`Opening issues`}),`\n`,_jsx(_components.p,{children:`Open an issue to report bugs or to propose new features.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Reporting bugs`}),`: describe the bug as clearly as you can, including steps to reproduce, what happened and what you were expecting to happen. Also include browser version, OS and other related software’s (npm, Node.js, etc) versions when applicable.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Suggesting features`}),`: explain the proposed feature, what it should do, why it is useful, how users should use it. Give us as much info as possible so it will be easier to discuss, access and implement the proposed feature. When you’re unsure about a certain aspect of the feature, feel free to leave it open for others to discuss and find an appropriate solution.`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`proposing-pull-requests`,children:`Proposing pull requests`}),`\n`,_jsx(_components.p,{children:`Pull requests are very welcome. Note that if you are going to propose drastic changes, be sure to open an issue for discussion first, to make sure that your PR will be accepted before you spend effort coding it.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Forking the repository`}),`: clone it locally and create a branch for your proposed bug fix or new feature. Avoid working directly on the main branch.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Making changes`}),`: implement your bug fix or feature, write tests to cover it and make sure all tests are passing. Then commit your changes, push your bug fix/feature branch to the origin (your forked repo) and open a pull request to the upstream (the repository you originally forked)‘s main branch.`]}),`\n`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"github-light","dark":"vesper"}},"config":{},"pageMetadata":{"title":"Contributing","sidebarTitle":"Old Contributing","description":"Wanna help? Awesome! There are many ways you can contribute.","og:image":"https://react.email/static/covers/react-email.png","icon":"code-pull-request","href":"/contributing"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Improving the docs","slug":"improving-the-docs","depth":2,"children":[]},{"title":"Building new components","slug":"building-new-components","depth":2,"children":[]},{"title":"Opening issues","slug":"opening-issues","depth":2,"children":[]},{"title":"Proposing pull requests","slug":"proposing-pull-requests","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"react-email","siteName":"React Email","title":"Contributing - React Email","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-04-28T19:23:23.711Z","originalFileLocation":"contributing.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Wanna help? Awesome! There are many ways you can contribute.\">\u003cmeta data-mint-head name=\"application-name\" content=\"React Email\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/react-email/HKze1io2eEDCMZTC/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/react-email/HKze1io2eEDCMZTC/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/react-email/HKze1io2eEDCMZTC/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/react-email/HKze1io2eEDCMZTC/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/react-email/HKze1io2eEDCMZTC/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/react-email/HKze1io2eEDCMZTC/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/react-email/HKze1io2eEDCMZTC/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/react-email/HKze1io2eEDCMZTC/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/react-email/HKze1io2eEDCMZTC/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Contributing - React Email\">\u003cmeta data-mint-head property=\"og:description\" content=\"Wanna help? Awesome! There are many ways you can contribute.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"React Email\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://react.email/docs/contributing\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://react.email/static/covers/react-email.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Contributing - React Email\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Wanna help? Awesome! There are many ways you can contribute.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://react.email/static/covers/react-email.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/react-email/HKze1io2eEDCMZTC/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"React Email\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#06BCEE\">\u003clink data-mint-head rel=\"canonical\" href=\"https://react.email/docs/contributing\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/contributing.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"React Email\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"React Email","nav":{"global":{"anchors":[{"anchor":"Components","icon":"grid-2-plus","href":"https://react.email/components"},{"anchor":"Templates","icon":"arrow-pointer","href":"https://demo.react.email/preview/Community/notifications/vercel-invite-user"}]},"tabs":[{"tab":"Primitives","icon":"cubes","groups":[{"group":"Overview","pages":[{"title":"React Email","sidebarTitle":"Introduction","icon":"hand-wave","href":"/introduction"},{"title":"Changelog","sidebarTitle":"Changelog","icon":"list-check","href":"/changelog"},{"title":"Roadmap","sidebarTitle":"Roadmap","icon":"map","href":"/roadmap"},{"title":"CLI","sidebarTitle":"CLI","icon":"square-terminal","href":"/cli"},{"title":"Deployment","sidebarTitle":"Deployment","icon":"rocket","href":"/deployment"}]},{"group":"Getting Started","pages":[{"title":"Automatic Setup","sidebarTitle":"Automatic Setup","icon":"download","href":"/getting-started/automatic-setup"},{"title":"Manual Setup","sidebarTitle":"Manual Setup","icon":"hammer","href":"/getting-started/manual-setup"},{"group":"Monorepo Setup","icon":"diagram-project","pages":[{"title":"Setting up for npm workspaces","sidebarTitle":"npm","href":"/getting-started/monorepo-setup/npm"},{"title":"Setting up for pnpm workspaces","sidebarTitle":"pnpm","href":"/getting-started/monorepo-setup/pnpm"},{"title":"Setting up for yarn workspaces","sidebarTitle":"yarn","href":"/getting-started/monorepo-setup/yarn"},{"title":"Setting up for bun workspaces","sidebarTitle":"bun","href":"/getting-started/monorepo-setup/bun"}]},{"title":"Migrating to React Email","sidebarTitle":"Migrating to React Email","icon":"paper-plane","href":"/getting-started/migrating-to-react-email"},{"title":"Updating React Email","sidebarTitle":"Updating React Email","icon":"arrow-up-wide-short","href":"/getting-started/updating-react-email"}]},{"group":"Guides","pages":[{"group":"Internationalization","icon":"earth-americas","pages":[{"title":"next-intl","sidebarTitle":"next-intl","href":"/guides/internationalization/next-intl"},{"title":"react-i18next","sidebarTitle":"react-i18next","href":"/guides/internationalization/react-i18next"},{"title":"React Intl","sidebarTitle":"React Intl","href":"/guides/internationalization/react-intl"}]},{"title":"Custom esbuild plugins","sidebarTitle":"esbuild plugins","icon":"puzzle-piece","href":"/guides/esbuild-plugins"}]},{"group":"Components","pages":[{"title":"HTML","sidebarTitle":"HTML","icon":"file-code","href":"/components/html"},{"title":"Head","sidebarTitle":"Head","icon":"head-side","href":"/components/head"},{"title":"Body","sidebarTitle":"Body","icon":"window-maximize","href":"/components/body"},{"title":"Button","sidebarTitle":"Button","icon":"b","href":"/components/button"},{"title":"Container","sidebarTitle":"Container","icon":"grid","href":"/components/container"},{"title":"Code Block","sidebarTitle":"Code Block","icon":"file-lines","href":"/components/code-block"},{"title":"Code Inline","sidebarTitle":"Code Inline","icon":"code","href":"/components/code-inline"},{"title":"Column","sidebarTitle":"Column","icon":"columns-3","href":"/components/column"},{"title":"Row","sidebarTitle":"Row","icon":"table-rows","href":"/components/row"},{"title":"Font","sidebarTitle":"Font","icon":"book-font","href":"/components/font"},{"title":"Heading","sidebarTitle":"Heading","icon":"h1","href":"/components/heading"},{"title":"Hr","sidebarTitle":"Hr","icon":"horizontal-rule","href":"/components/hr"},{"title":"Image","sidebarTitle":"Image","icon":"image","href":"/components/image"},{"title":"Link","sidebarTitle":"Link","icon":"link","href":"/components/link"},{"title":"Markdown","sidebarTitle":"Markdown","icon":"file-code","href":"/components/markdown"},{"title":"Preview","sidebarTitle":"Preview","icon":"input-text","href":"/components/preview"},{"title":"Section","sidebarTitle":"Section","icon":"rectangles-mixed","href":"/components/section"},{"title":"Tailwind","sidebarTitle":"Tailwind","icon":"wind","href":"/components/tailwind"},{"title":"Text","sidebarTitle":"Text","icon":"text-size","href":"/components/text"}]},{"group":"Utilities","pages":[{"title":"Render","sidebarTitle":"Render","href":"/utilities/render"}]},{"group":"Integrations","pages":[{"title":"Overview","sidebarTitle":"Overview","href":"/integrations/overview"},{"title":"Send email using Resend","sidebarTitle":"Resend","href":"/integrations/resend"},{"title":"Send (\u0026 receive) emails using Inbound","sidebarTitle":"Inbound","href":"/integrations/inbound"},{"title":"Send email using Nodemailer","sidebarTitle":"Nodemailer","href":"/integrations/nodemailer"},{"title":"Send email using Mailgun","sidebarTitle":"Mailgun","href":"/integrations/mailgun"},{"title":"Send email using SendGrid","sidebarTitle":"SendGrid","href":"/integrations/sendgrid"},{"title":"Send email using Postmark","sidebarTitle":"Postmark","href":"/integrations/postmark"},{"title":"Send email using AWS SES","sidebarTitle":"AWS SES","href":"/integrations/aws-ses"},{"title":"Send email using Azure Communication Email","sidebarTitle":"Azure Communication Email","href":"/integrations/azure-communication-email"},{"title":"Send email using MailerSend","sidebarTitle":"MailerSend","href":"/integrations/mailersend"},{"title":"Send email using Scaleway Transactional Email","sidebarTitle":"Scaleway","href":"/integrations/scaleway"},{"title":"Send email using Plunk","sidebarTitle":"Plunk","href":"/integrations/plunk"},{"title":"Send email using Lettermint","sidebarTitle":"Lettermint","href":"/integrations/lettermint"},{"title":"Send email using eusend","sidebarTitle":"eusend","href":"/integrations/eusend"},{"title":"Send email using Brevo","sidebarTitle":"Brevo","href":"/integrations/brevo"},{"title":"Send email using Mailtrap","sidebarTitle":"Mailtrap","href":"/integrations/mailtrap"},{"title":"Send email using ZeptoMail","sidebarTitle":"ZeptoMail","href":"/integrations/zeptomail"},{"title":"Send email using Mailchimp Transactional","sidebarTitle":"Mailchimp Transactional","href":"/integrations/mailchimp-transactional"}]},{"group":"Contributing","pages":[{"title":"Getting Started","sidebarTitle":"Getting Started","icon":"hand-wave","href":"/contributing/introduction"},{"title":"Opening issues","sidebarTitle":"Opening issues","icon":"scroll","href":"/contributing/opening-issues"},{"title":"Opening pull requests","sidebarTitle":"Opening pull requests","icon":"code-pull-request","href":"/contributing/opening-pull-requests"},{"title":"Codebase overview","sidebarTitle":"Codebase overview","icon":"folder-tree","href":"/contributing/codebase-overview"},{"group":"Development workflow","icon":"arrow-progress","pages":[{"title":"Setup","sidebarTitle":"1. Setup","href":"/contributing/development-workflow/1-setup"},{"title":"Running tests","sidebarTitle":"2. Running tests","href":"/contributing/development-workflow/2-running-tests"},{"title":"Linting","sidebarTitle":"3. Linting","href":"/contributing/development-workflow/3-linting"},{"title":"Building","sidebarTitle":"4. Building","href":"/contributing/development-workflow/4-building"},{"title":"Writing docs","sidebarTitle":"5. Writing docs","href":"/contributing/development-workflow/5-writing-docs"},{"title":"Editing the components","sidebarTitle":"6. Editing the components","href":"/contributing/development-workflow/6-editing-the-components"}]}]}]},{"tab":"Editor","icon":"pen-to-square","groups":[{"group":"Overview","pages":[{"title":"Editor","sidebarTitle":"Overview","icon":"pen-nib","href":"/editor/overview"},{"title":"Getting Started","sidebarTitle":"Getting Started","icon":"rocket","href":"/editor/getting-started"}]},{"group":"Features","pages":[{"title":"Bubble Menu","sidebarTitle":"Bubble Menu","icon":"message-lines","href":"/editor/features/bubble-menu"},{"title":"Inspector","sidebarTitle":"Inspector","icon":"sidebar","href":"/editor/features/inspector"},{"title":"Slash Commands","sidebarTitle":"Slash Commands","icon":"slash-forward","href":"/editor/features/slash-commands"},{"title":"Email Theming","sidebarTitle":"Theming","icon":"palette","href":"/editor/features/theming"},{"title":"Styling","sidebarTitle":"Styling","icon":"paintbrush","href":"/editor/features/styling"},{"title":"Buttons","sidebarTitle":"Buttons","icon":"rectangle-wide","href":"/editor/features/buttons"},{"title":"Column Layouts","sidebarTitle":"Column Layouts","icon":"columns-3","href":"/editor/features/column-layouts"},{"title":"Link Editing","sidebarTitle":"Link Editing","icon":"link","href":"/editor/features/link-editing"},{"title":"Email Export","sidebarTitle":"Email Export","icon":"file-export","href":"/editor/features/email-export"},{"title":"Image Upload","sidebarTitle":"Image Upload","icon":"image","href":"/editor/features/image-upload"}]},{"group":"Advanced","pages":[{"title":"Extensions","sidebarTitle":"Extensions","icon":"puzzle-piece","href":"/editor/advanced/extensions"},{"title":"Event Bus","sidebarTitle":"Event Bus","icon":"tower-broadcast","href":"/editor/advanced/event-bus"},{"title":"Custom Extensions","sidebarTitle":"Custom Extensions","icon":"wrench","href":"/editor/advanced/custom-extensions"}]},{"group":"API Reference","pages":[{"title":"EmailEditor","sidebarTitle":"EmailEditor","icon":"window","href":"/editor/api-reference/email-editor"},{"title":"composeReactEmail","sidebarTitle":"composeReactEmail","icon":"file-export","href":"/editor/api-reference/compose-react-email"},{"title":"EmailNode","sidebarTitle":"EmailNode","icon":"cube","href":"/editor/api-reference/email-node"},{"title":"EmailMark","sidebarTitle":"EmailMark","icon":"paintbrush-fine","href":"/editor/api-reference/email-mark"},{"title":"Extensions Reference","sidebarTitle":"Extensions List","icon":"list","href":"/editor/api-reference/extensions-list"},{"title":"Theming API","sidebarTitle":"Theming API","icon":"swatchbook","href":"/editor/api-reference/theming-api"},{"title":"Image Upload API","sidebarTitle":"Image Upload API","icon":"image","href":"/editor/api-reference/image-upload-api"},{"group":"UI Components","icon":"window","pages":[{"title":"BubbleMenu","sidebarTitle":"BubbleMenu","icon":"message-lines","href":"/editor/api-reference/ui/bubble-menu"},{"title":"EditorFocusScope","sidebarTitle":"EditorFocusScope","icon":"crosshairs","href":"/editor/api-reference/ui/editor-focus-scope"},{"title":"Inspector","sidebarTitle":"Inspector","icon":"sidebar","href":"/editor/api-reference/ui/inspector"},{"title":"SlashCommand","sidebarTitle":"SlashCommand","icon":"terminal","href":"/editor/api-reference/ui/slash-command"}]}]}]}]},"title":"Contributing - React Email","buildId":"dpl_AUojGTPodKNPTVaxVPcxnNvkSVqo","deploymentId":"dpl_AUojGTPodKNPTVaxVPcxnNvkSVqo","dynamics":[],"chunks":[]}