Custom Extensions
Umo Editor Mobile is built on Tiptap, so the core approach to custom extensions remains consistent with Tiptap.
You can write extensions in JavaScript, and you can also build Vue-based NodeViews for node extensions.
Recommended Reading
- Official Tiptap extension guide: Custom Extensions
- Tiptap NodeView (Vue): Vue Node Views
- Tiptap NodeView (JavaScript): JavaScript Node Views
Register a Custom Extension
Assume you have already implemented a custom extension called MyCustomExtension. You can append it through extensions:
const options = {
extensions: [MyCustomExtension],
}If you want to disable a built-in extension first and then replace it with your own implementation, you can combine it with disableExtensions:
const options = {
disableExtensions: ['mention'],
extensions: [MyMentionExtension],
}Mobile Development Recommendations
- Prefer reusing native Tiptap extension capabilities to reduce conflicts with the existing mobile interaction system.
- If the extension requires a custom node view, evaluate touch behavior such as tapping, scrolling, focus, and soft keyboard interaction first.
- If the extension needs to expose business operation entry points, first consider whether it can be connected through Slots or existing toolbar entry points, rather than directly copying desktop interactions. Different on Mobile
- If the extension affects saving, preview, or document structure, validate
getHTML(),getJSON(), and read-only rendering together.
Key Differences from Desktop
- The way extensions are written is basically the same, but the UI carrier is different. Different on Mobile
- Mobile does not expose a public component system, so it is not recommended to rely on the documentation siteโs shared component wrappers to carry extension UI. Not Supported
- Whether an extension is truly โusableโ depends not only on its data-layer implementation, but also on whether it fits mobile interaction patterns. Mobile-Only