> ## Documentation Index
> Fetch the complete documentation index at: https://react.email/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Extensions Reference

> Complete reference of all built-in editor extensions.

All extensions are available from `@react-email/editor/extensions` and are included
in `StarterKit` by default. Each can be configured via `StarterKit.configure()` or
imported individually.

<AccordionGroup>
  <Accordion title="Block Nodes">
    ### Body

    Email body wrapper element.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the body element.
    </ResponseField>

    ***

    ### Section

    Content section container.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the section element.
    </ResponseField>

    ***

    ### Container

    Primary email content wrapper. In `StarterKit`, top-level blocks are wrapped in a
    `container` node so the document exports through React Email's
    [`<Container>`](https://react.email/docs/components/container) component.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the editor wrapper for the container node.
    </ResponseField>

    When HTML is pasted or imported, this extension also recognizes React Email-style
    container tables: a presentation table with a `max-width` and a single row/cell is
    parsed back into a `container` node.

    ***

    ### Div

    Generic div container.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the div element.
    </ResponseField>

    ***

    ### Paragraph

    Text paragraph.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the paragraph element.
    </ResponseField>

    ***

    ### Heading

    Heading levels 1–6.

    <ResponseField name="levels" type="number[]" default="[1, 2, 3, 4, 5, 6]">
      Which heading levels to enable.
    </ResponseField>

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the heading element.
    </ResponseField>

    ***

    ### Blockquote

    Block quote element.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the blockquote element.
    </ResponseField>

    ***

    ### CodeBlockPrism

    Code block with Prism.js syntax highlighting.

    <ResponseField name="defaultLanguage" type="string | null">
      Default language for syntax highlighting.
    </ResponseField>

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the code block element.
    </ResponseField>

    ***

    ### Divider

    Horizontal rule / separator.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the hr element.
    </ResponseField>

    ***

    ### Button

    Email button (styled anchor element).

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the button element.
    </ResponseField>

    ***

    ### PreviewText

    Email preview text (shown in inbox list views).
  </Accordion>

  <Accordion title="Lists">
    ### BulletList

    Unordered list.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the ul element.
    </ResponseField>

    ***

    ### OrderedList

    Ordered (numbered) list.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the ol element.
    </ResponseField>

    ***

    ### ListItem

    Individual list item.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the li element.
    </ResponseField>
  </Accordion>

  <Accordion title="Layout">
    ### TwoColumns

    Two column layout container. Inserts two `ColumnsColumn` children.

    ***

    ### ThreeColumns

    Three column layout container. Inserts three `ColumnsColumn` children.

    ***

    ### FourColumns

    Four column layout container. Inserts four `ColumnsColumn` children.

    ***

    ### ColumnsColumn

    Individual column within a column layout. Automatically created by column insertion commands.
  </Accordion>

  <Accordion title="Tables">
    ### Table

    Table container.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the table element.
    </ResponseField>

    ***

    ### TableRow

    Table row.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the tr element.
    </ResponseField>

    ***

    ### TableCell

    Table cell.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the td element.
    </ResponseField>

    ***

    ### TableHeader

    Table header cell.
  </Accordion>

  <Accordion title="Inline Marks">
    ### Bold

    Bold text formatting.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the strong element.
    </ResponseField>

    ***

    ### Italic

    Italic text formatting.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the em element.
    </ResponseField>

    ***

    ### Strike

    Strikethrough text formatting.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the s element.
    </ResponseField>

    ***

    ### Underline

    Underline text formatting.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the u element.
    </ResponseField>

    ***

    ### Code

    Inline code formatting.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the code element.
    </ResponseField>

    ***

    ### Sup

    Superscript text.

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the sup element.
    </ResponseField>

    ***

    ### Uppercase

    Uppercase text transform.

    ***

    ### Link

    Hyperlink with extended email attributes.

    <ResponseField name="openOnClick" type="boolean" default="false">
      Whether clicking a link navigates to the URL. Disabled by default in the editor.
    </ResponseField>

    <ResponseField name="HTMLAttributes" type="Record<string, any>">
      Extra HTML attributes applied to the a element.
    </ResponseField>

    ***

    ### Text

    Base text node. Required for any text content.
  </Accordion>

  <Accordion title="Attributes">
    ### AlignmentAttribute

    Adds text alignment support (left, center, right) to block nodes.

    <ResponseField name="types" type="string[]">
      Node types that support alignment.
    </ResponseField>

    ***

    ### StyleAttribute

    Adds inline CSS style support to nodes.

    ***

    ### ClassAttribute

    Adds CSS class name support to nodes.
  </Accordion>

  <Accordion title="Utility">
    ***

    ### TrailingNode

    Keeps an empty block at the end of the target node so the caret can move below the
    last block and users can continue typing. In `StarterKit`, it is configured to append
    an empty paragraph inside each `container`, `section`, and `columnsColumn`.

    <ResponseField name="node" type="string" default="schema default block (typically 'paragraph')">
      Node type to insert when a trailing block is needed.
    </ResponseField>

    <ResponseField name="appendTo" type="string | string[]" default="'doc'">
      Node type (or array of node types) that receives the trailing block. When an array is
      provided, a trailing node is appended inside every matching node type. `StarterKit`
      overrides this to `['container', 'section', 'columnsColumn']`.
    </ResponseField>

    <ResponseField name="notAfter" type="string | string[]" default="[]">
      Node types after which no trailing block should be inserted. The inserted node type
      is always treated as disallowed automatically, so a trailing paragraph will not be
      added after another paragraph.
    </ResponseField>

    ***

    ### PreservedStyle

    Preserves inline formatting when unlinking text.

    ***

    ### GlobalContent

    Stores metadata (like custom CSS) that persists in the document but isn't visible.
    Used by the serializer to inject global styles.

    ***

    ### MaxNesting

    Enforces a maximum nesting depth for the document.

    <ResponseField name="maxDepth" type="number">
      Maximum allowed nesting depth.
    </ResponseField>

    <ResponseField name="nodeTypes" type="string[]">
      Node types to enforce the nesting limit on.
    </ResponseField>

    ***

    ### HardBreak

    Line break within a block (Shift+Enter).
  </Accordion>
</AccordionGroup>
