Concepts

Supported Markdown and Compatibility

What content the AI can edit, and which frameworks and versions emend supports.

emend sends your text to the AI as Markdown and turns the answer back into editor content. This page lists what survives that trip. Your editor also needs the matching Tiptap extension for each type of content (for example, a table extension for tables).

What content is supported

ContentSupport
Paragraphs and headingsSupported
Bold, italic, combined emphasis, strikethrough, and underlineSupported
Inline code and fenced code blocksSupported
Validated links, including links inside tablesSupported
Nested bullet and ordered listsSupported
Nested task listsSupported
BlockquotesSupported
Hard breaks and horizontal rulesSupported
Basic GFM tablesSupported with the limits below
Arbitrary raw HTMLNot supported
Generated imagesNot supported

Links are checked for safety. javascript:, data:, and vbscript: links are blocked.

Table limits

Tables work when they have a header row, the same number of columns in every row, and one paragraph per cell. Column alignment, | characters inside cells, and line breaks inside cells also work.

These are not supported yet: merged cells, column widths, missing headers, and cells with more than one paragraph or block.

Your own custom content

If you added your own Tiptap nodes or marks, emend does not guess how to handle them. If a suggestion includes content your editor cannot display, emend will not apply it. It never silently drops your content.

Supported setup

LayerSupported baseline
FrameworkNext.js App Router
React^19.0.0
Tiptap3.7.1 or later in Tiptap 3, with all @tiptap/* packages on the same version
Component systemShadcn registry with editable copied source
StylingTailwind CSS 4 and semantic Shadcn tokens
RuntimeNode.js 24.19.0 or later

Next.js with the App Router is the only setup we support and test for now. The AI components are plain React, so they may also work in other React apps, such as one created with Vite, as long as you have a backend endpoint for the server route. The server handler uses standard Request and Response objects, so it is not tied to Next.js either. Guides for other frameworks are coming soon.

If a request is blocked because of your content or versions, see Troubleshooting and Limitations.

On this page