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

相关推荐
zhanghaha13141 分钟前
HTML系列教程:15_标签 全称 + 简写 超详细讲解(新手专用)
前端·html
zhanghaha131413 分钟前
HTML系列教程:14_HTML 表单与输入框 <form>、<input> 零基础详解
java·前端·javascript
IMPYLH14 分钟前
HTML 的 <samp> 元素
前端·网络·html
IMPYLH16 分钟前
HTML 的 <script> 元素
前端·html
weixin_493503675 小时前
Vue3 前端生成 PDF:会员证书与活动签到表的三种打印方案与踩坑记录
前端·pdf·状态模式
李少兄6 小时前
JavaScript 数据类型完全指南
开发语言·javascript·ecmascript
Java陈序员8 小时前
轻量运维面板!一款现代化的服务器控制面板工具!
运维·服务器·python·react.js·github
尾善爱看海8 小时前
前端算法与手写题集
前端·算法
徐小夕8 小时前
JitWord 4.0 万字分享:从协同工具到AI Word操作系统,聊聊3年产品创业史
前端·vue.js·后端
shmily麻瓜小菜鸡9 小时前
JS/TS 易踩坑知识点 — 模块化与工程化类
开发语言·javascript·ecmascript