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 的最佳时机。

相关推荐
ai小鬼头6 分钟前
创业心态崩了?熊哥教你用缺德哲学活得更爽
前端·后端·算法
拾光拾趣录19 分钟前
算法 | 下一个更大的排列
前端·算法
仰望星空的凡人22 分钟前
【JS逆向基础】数据库之mysql
javascript·数据库·python·mysql
小屁孩大帅-杨一凡1 小时前
如何使用Python将HTML格式的文本转换为Markdown格式?
开发语言·前端·python·html
于慨1 小时前
uniapp云打包安卓
前端·uni-app
米粒宝的爸爸1 小时前
【uniapp】使用uviewplus来实现图片上传和图片预览功能
java·前端·uni-app
LaoZhangAI1 小时前
2025年虚拟信用卡订阅ChatGPT Plus完整教程(含WildCard停运后最新方案)
前端·后端
雪碧聊技术1 小时前
Uniapp 纯前端台球计分器开发指南:能否上架微信小程序 & 打包成APP?
前端·微信小程序·uni-app·台球计分器
清风细雨_林木木1 小时前
Vuex 的语法“...mapActions([‘login‘]) ”是用于在组件中映射 Vuex 的 actions 方法
前端·javascript·vue.js
会功夫的李白1 小时前
Uniapp之自定义图片预览
前端·javascript·uni-app·图片预览