Tiptap 3.0 正式发布!你必须知道的 20 个重大变化 🚀🚀🚀

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 显著增强

  • clearContentsetContent 现在会触发更新事件,符合预期逻辑
  • 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 默认引入更多实用扩展: LinkUnderlineTrailingNodeListKeymap 等,让项目更快启动。

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 实现,表现更稳定,支持更多生命周期钩子:onShowonHideonDestroy
  • React 兼容 React 19 的新 ref 行为,支持 SSR
  • Vue 提供一致的菜单钩子支持,保持一致性体验

🔮 未来规划(Tiptap 3.x)

Tiptap 团队正在规划更多强大功能:

  • Markdown 支持 :即将支持 renderMarkdown()parseMarkdown(),双向转换内容
  • 🧩 Decorations API:将允许为内容添加"装饰层",不改变原始数据,适合批注/高亮
  • 🛠 内容迁移工具:提供 JSON schema 转换器,支持内容结构版本更新迁移

✅ 总结

Tiptap 3.0 是一次极具诚意的更新,为富文本开发者提供了更优的性能、更现代的架构、更强的类型支持和更丰富的渲染能力。 无论你是构建文档型编辑器、协作平台、还是静态博客管理系统,现在都是升级 Tiptap 的最佳时机。

相关推荐
Justinc.39 分钟前
HTML5新增属性
前端·html·html5
1024小神1 小时前
nextjs项目build导出静态文件
前端·javascript
阿聪_1 小时前
createContext 还是 useSyncExternalStore?一文讲清场景与选型
前端
parade岁月1 小时前
JavaScript 日期的奇妙冒险:当 UTC 遇上 el-date-picker
javascript
Linsk1 小时前
当我把前端条件加载做到极致
前端·前端工程化
_辉1 小时前
大模型构建表单与数据结构
前端
祝鹏1 小时前
动态表单生成
前端
luckyJian1 小时前
React深入浅出理解
前端
是一碗螺丝粉1 小时前
拯救你的app/小程序审核!一套完美避开审核封禁的URL黑名单机制
前端·javascript·微信小程序
littleding1 小时前
Vue3之计算属性
前端·vue.js