Skip to content

Migrating from TOAST UI Editor

tui.editor has had no maintainer activity since August 2024. Inkroom is its spiritual successor β€” modern ProseMirror core, same batteries-included philosophy β€” and ships a compatibility layer so migration is one line for most codebases.

Fast path

Terminal window
npx inkroom-migrate-toast ./src # dry-run: prints every edit + a manual-work report
npx inkroom-migrate-toast ./src --write # applies

or by hand:

import Editor from "@toast-ui/editor";
import "@toast-ui/editor/dist/toastui-editor.css";
import Editor from "@inkroom/toast-compat";
import "@inkroom/editor/style.css";

Your existing constructor options, event wiring and addImageBlobHook keep working. Dark theme: delete the second CSS import β€” dark mode is built in (theme: "dark" or "auto").

Compatibility matrix

🟒 works unchanged Β· 🟑 accepted with changed behavior (one-line console notice, never silent) Β· πŸ”΄ needs a code change

tui.editor APIStatusNotes
new Editor({ el, height, minHeight, initialValue, placeholder, autofocus })🟒
initialEditType: "markdown" | "wysiwyg"🟒
events: load / change / caretChange / focus / blur / keydown / keyup🟒same signatures
hooks.addImageBlobHook(blob, cb)🟒drives Inkroom’s upload pipeline
getMarkdown / setMarkdown / getHTML / insertText / getSelectedText / reset🟒
changeMode / isMarkdownMode / isWysiwygMode🟒
exec("bold" | "italic" | "strike" | "heading" | "ul" | "ol" | "task" | "quote" | "codeblock" | "hr" | "indent" | "outdent" | "undo" | "redo" | "addTable" | "addImage")🟒
toolbarItems (string names)🟒indent/outdent/scrollSync have no toolbar slot (commands still work)
Editor.setLanguage(code, data) / language: "ko-KR"🟒10 languages built in
Viewer (viewer: true, Editor.factory)🟒read-only mode, chrome hidden
hide / show / setHeight / getHeight / moveCursorToStart/End🟒
setHTML🟑converts through sanitized HTML parsing (async)
previewStyle: "vertical" | "tab"🟑Inkroom’s markdown mode is a real editor with highlighting, not a preview split
usageStatistics🟑nothing to disable β€” Inkroom never collects statistics
theme: "dark"🟒plus "auto"
tui plugin functions (chart, uml, …)πŸ”΄use @inkroom/plugin-code, @inkroom/plugin-math, @inkroom/plugin-mermaid; chart/UML on the roadmap
@toast-ui/react-editor / vue-editorπŸ”΄switch to @inkroom/react / @inkroom/vue (better APIs; codemod flags each site)
Custom toolbar item objectsπŸ”΄use the Inkroom toolbar API
CSS hooks .toastui-editor-*πŸ”΄new names under .ink-*; tokens via CSS custom properties

What you gain immediately

  • Maintained dependency, CVE response commitment (SECURITY.md)
  • Lossless round-trip with a published contract (round-trip.md)
  • ~2Γ— smaller download (size.md) β€” tui’s CSS alone is 31Γ— ours
  • Slash menu, bubble menu, footnotes, front matter, real Vue 3 support
  • A Pro path (collab, comments, track changes, DOCX/PDF) that is self-hosted and flat-priced instead of nonexistent

Getting help

Open a GitHub Discussion with the migration tag β€” first response within 24h during the launch window. Real-world migration case studies live in docs/case-studies/.