Tiptap 作为基于 ProseMirror 构建的现代富文本编辑器,在前端富文本场景中拥有广泛的使用者。2025 年,Tiptap 正式推出了 3.0 版本(即 Tiptap V3),本次更新带来了架构、性能、开发体验等方面的全方位升级。
🛠 核心升级与破坏性变化
1. 移除 UMD 构建
Tiptap 3.0 不再支持 UMD 模块格式,仅保留现代前端主流的 ESM 和 CJS 构建方式。这意味着你需要更新构建工具链,确保支持模块导入。
2. React 性能优化:shouldRerenderOnTransaction
React 用户现在可以通过 shouldRerenderOnTransaction
控制 rerender 频率。默认关闭,大幅减少无谓刷新,提高性能。如果你依赖自动刷新,请手动开启该选项。
3. 浮动菜单库切换至 @floating-ui
原先依赖的 tippy.js
被替换为更强大和灵活的 @floating-ui
。开发者需安装 @floating-ui/dom@^1.6.0
并更新配置项名为 options
。
4. 更严格的类型系统
TypeScript 支持显著增强:
getPos()
现在可能返回undefined
,需显式判断- 插件配置与方法参数类型更加规范
5. 旧 API 被移除
editor.getCharacterCount()
→ 替换为editor.storage.characterCount.characters()
placeholder
插件中的considerAnyAsEmpty
配置被删除
6. 扩展包统一整合
多个扩展从独立包迁移至 @tiptap/extensions
,包括:
History
(现为UndoRedo
)Placeholder
CharacterCount
DropCursor
GapCursor
TrailingNode
Focus
Selection
7. 扩展命名调整
CollaborationCursor
改名为CollaborationCaret
History
更名为UndoRedo
,避免与协作历史功能混淆
✅ 新功能与体验优化
编辑 API 显著增强
clearContent
和setContent
现在会触发更新事件,符合预期逻辑insertContent
修复段落拆分问题- 新增实用函数如
delete()
、canInsertNode()
、属性验证器等,提升开发安全性与表达力
编辑器生命周期管理
- 新增
editor.unmount()
方法 替代destroy()
,保留实例状态支持重新挂载,提升页面切换/缓存的灵活性
SSR 与静态渲染支持
- 3.0 原生支持无 DOM 环境初始化
- 引入
@tiptap/static-renderer
,可将编辑内容渲染为 HTML、Markdown、React/Vue 组件,适用于 SSG 场景(如 Next.js/静态博客)
JSX 渲染能力增强
- 在
renderHTML
中可直接书写 JSX,提升表达能力与组件集成能力(React/Vue 均受益)
StarterKit 扩展增强
StarterKit 默认引入更多实用扩展: Link
、Underline
、TrailingNode
、ListKeymap
等,让项目更快启动。
MarkView 支持
全新 MarkView 系统允许为 mark
类型自定义视图,支持框选/高亮/弹窗选择器等富交互特性(React/Vue 渲染)
节点与标记删除事件监听
3.0 增加了对用户删除行为的事件监听能力,方便你进行统计、阻止误删、数据追踪等高级功能。
🧩 扩展包与 UI 工具更新
扩展名 | 更新内容 |
---|---|
HorizontalRule |
判断逻辑更精确,兼容性更好 |
Image |
支持宽高属性设置 |
Link/Mention |
支持 @ 、# 等字符作为触发器 |
TextAlign |
新增 toggleTextAlign 命令 |
TaskList |
增加可选无障碍标签 |
Math |
从 Mark 改为 Node,需迁移数据格式 |
YouTube |
URL 识别更精准 |
Emoji |
增加 alt 辅助文本,更友好屏幕阅读器 |
React / Vue UI 支持
- 所有浮动类菜单统一切换至
@floating-ui
实现,表现更稳定,支持更多生命周期钩子:onShow
、onHide
、onDestroy
等 - React 兼容 React 19 的新 ref 行为,支持 SSR
- Vue 提供一致的菜单钩子支持,保持一致性体验
🔮 未来规划(Tiptap 3.x)
Tiptap 团队正在规划更多强大功能:
- ✅ Markdown 支持 :即将支持
renderMarkdown()
与parseMarkdown()
,双向转换内容 - 🧩 Decorations API:将允许为内容添加"装饰层",不改变原始数据,适合批注/高亮
- 🛠 内容迁移工具:提供 JSON schema 转换器,支持内容结构版本更新迁移
✅ 总结
Tiptap 3.0 是一次极具诚意的更新,为富文本开发者提供了更优的性能、更现代的架构、更强的类型支持和更丰富的渲染能力。 无论你是构建文档型编辑器、协作平台、还是静态博客管理系统,现在都是升级 Tiptap 的最佳时机。