Migrating to v1
Upgrade from Echo Editor 0.x (Tiptap 2) to 1.x (Tiptap 3).
Version 1.0 moves Echo Editor to Tiptap 3 and modernises the build. Most apps only need to bump the package; custom extensions and deep integrations may need the changes below.
TL;DR
- Your
<EchoEditor>usage, props,v-modeland built-in extensions keep working. - If you wrote custom Tiptap extensions, follow the Tiptap v2 → v3 upgrade guide.
- The default UI language is now English — call
locale.setLang('zhHans')for Chinese.
Breaking changes
Tiptap 3
All @tiptap/* packages are now v3. The most common changes for custom code:
Echo Editor re-exports TableRow, TableCell, TableHeader and TableCellBackground for convenience.
tippy.js → Floating UI
tippy.js was removed. Every popup (bubble menus, slash menu, drag handle) now uses Floating UI.
If you imported the internal DragHandlePlugin, rename tippyOptions to computePositionConfig:
Build output
| 0.x | 1.x |
|---|---|
lib/echo-editor.es.js | lib/echo-editor.js |
lib/echo-editor.umd.js | lib/echo-editor.cjs (UMD removed, like Tiptap 3) |
| Tiptap bundled inside | Tiptap installed as a dependency and shared with your app |
Imports through the package name (import … from 'vue-echo-editor') are unaffected.
Default language
The default language changed from zhHans to en, and locale.setLang() is now async because additional languages are lazy-loaded:
Per-editor UI state
Fullscreen, preview, source-code, AI-menu and other UI state used to be global, so two editors on one page affected each other. It is now per editor. If you called useTiptapStore() outside a component, pass the editor:
History
History is now built on Tiptap's UndoRedo extension (still named history, also exported as UndoRedo). The default depth increased from 10 to 100.
Icons
Icons moved from lucide-vue-next to its successor @lucide/vue. This only matters if you passed Lucide components to custom buttons.
Fixed in 1.0
These worked incorrectly in 0.x and may change behaviour you relied on:
@enternever fired — it now does (Shift+Enter still inserts a new line).- Ordered list styles (roman, latin …) were lost when loading HTML.
- Popover toolbar buttons rendered a
<button>inside a<button>. - The AI prompt form reloaded the page on submit.
New in 1.0
- Markdown
v-modelandeditor.getMarkdown() - Export to PDF, Markdown, HTML, RTF, text and JSON
- Collaboration via
vue-echo-editor/collaboration - Plugins with
definePlugin() - 9 new languages and RTL support
useEditorState()for building fast custom UI- New props
label,autofocus,editorPropsand eventscreate,focus,blur