ProComponents, templates & AI tooling
HeroUI
27.7k

迁移

将 HeroUI v2 应用迁移到 v3 的完整指南

面向 AI 助手

以下是 AI 助手获取迁移文档的三种方式。我们推荐使用 HeroUI Migration MCP 服务器,并充分利用其 prompt 与工具,不过其它方式也都能为 agent 提供完整的文档。

对比项MCP ServerAgent SkillsAGENTS.md
数据来源远程端点远程端点本地文件
访问方式MCP 工具脚本文件读取本地文件
配置方式MCP 配置安装命令heroui-cli 命令
更新实时实时手动
离线
工具MCP 工具 + prompt脚本
指南MCP Server →Agent Skills →AGENTS.md →

主要变化

  • 依赖项:将 React 升级到 v19+、HeroUI 包升级到 v3、Tailwind CSS 升级到 v4,并移除 Framer Motion
  • 无需 Provider:v3 不再需要 HeroUIProvider
  • 组件 API 更新:许多组件改用 React Aria Components 模式
  • 复合组件:全新的复合组件模式带来了更好的定制能力。详情请参阅各组件的迁移指南。
  • 已移除的 Hooks:v2 中的组件 Hooks(如 useSwitchuseInput)已被移除——请改用复合组件。useDisclosure 已被替换为 useOverlayState。详情请参阅 Hooks 迁移指南
  • 配置变更:从 Tailwind 配置中移除 heroui() 插件,更新 CSS 导入,并删除 hero.ts 文件
  • 条目标识:集合类组件(Dropdown、ListBox、Select、Accordion 等)在 v3 中改用 idtextValue;列表本身仍需保留 React 的 key

条目标识与无障碍(key、id、textValue)

在 v2 中,集合类组件(Dropdown、ListBox、Select、Accordion 等)使用 React 的 key 作为条目标识。同一个值既驱动 React 的列表协调,又承担组件的选中/展开状态。在使用 React Aria Components 的 v3 中,这两种职责被拆分开:

  • id — v3 在每个条目上使用显式的 id 属性来表示选中状态、焦点以及回调(例如 selectedKeysexpandedKeysonSelectionChange)。请使用与你在 v2 中给 key 设置的相同(或等效)的值,这样状态和回调仍能正确指向对应的条目。
  • textValue — 当条目的可见内容不是纯文本时(例如使用了 Label、图标或 Description),v3 需要在条目上提供 textValue。它用于屏幕阅读器播报和键入快速定位(type-ahead)。
  • key继续在列表项上使用 React 的 key。它仍然是 React 列表协调所必需的,且与 id 相互独立。

迁移时:为 v3 的 API 添加 id(必要时再加上 textValue),同时保留供 React 使用的 key

迁移策略

如果不做特殊设置,HeroUI v2 与 v3 不能在同一个项目中共存。你可以选择以下两种迁移方式:

一次性完整迁移

适用场景: 能够集中投入时间、一次性完成迁移的项目。

工作方式:

  • 先迁移所有组件代码(此阶段项目将无法正常运行)
  • 将依赖项切换到 v3
  • 完成样式迁移

优点:

  • 配置更简单——无需复杂的共存配置
  • 切换更干净——同一时间只有一个版本处于激活状态
  • 由 Migration MCP 的 prompt 提供支持

缺点:

  • 项目在迁移期间无法正常运行
  • 必须在切换依赖之前完成所有组件的迁移

开始迁移: 完整迁移指南

渐进式迁移

适用场景: 需要在迁移过程中保持可用的项目、希望分阶段逐步迁移的团队,以及按功能逐个迁移的大型代码库。

工作方式:

  • 通过 pnpm 别名或组件包来设置共存
  • 在保持项目可用的前提下,逐个迁移组件
  • 完成迁移后再移除 v2 依赖项

优点:

  • 项目在迁移期间始终可用
  • 可以分阶段、按需逐步推进
  • 可以将 v3 组件与 v2 并存测试

缺点:

  • 初始配置更为复杂
  • 可能出现样式冲突
  • 需要同时管理两个版本

开始迁移: 渐进式迁移指南

组件迁移参考

可以通过下表快速查找每个组件的迁移指南。点击「迁移指南」列中的链接,即可跳转到对应的详细迁移说明。

组件开发状态:标有 🔄 进行中或 📋 计划中的组件仍在开发中。可以查看路线图了解任务状态。这些组件的迁移指南将在开发完成后提供。

v2 组件v3 组件状态迁移指南
AccordionAccordion✅ 可用查看指南 →
AlertAlert✅ 可用查看指南 →
AutocompleteComboBox✅ 已重命名查看指南 →
AvatarAvatar✅ 可用查看指南 →
BadgeBadge✅ 可用查看指南 →
BreadcrumbsBreadcrumbs✅ 可用查看指南 →
ButtonButton✅ 可用查看指南 →
ButtonGroupButtonGroup✅ 可用查看指南 →
CalendarCalendar✅ 可用查看指南 →
CardCard✅ 可用查看指南 →
CheckboxCheckbox✅ 可用查看指南 →
CheckboxGroupCheckboxGroup✅ 可用查看指南 →
ChipChip✅ 可用查看指南 →
Code❌ 已移除查看指南 →
DateInputDateField✅ 已重命名查看指南 →
DatePickerDatePicker✅ 可用查看指南 →
DateRangePickerDateRangePicker✅ 可用查看指南 →
TimeInputTimeField✅ 已重命名查看指南 →
DividerSeparator✅ 已重命名查看指南 →
DrawerDrawer✅ 可用查看指南 →
DropdownDropdown✅ 可用查看指南 →
FormForm✅ 可用查看指南 →
Image❌ 已移除查看指南 →
InputTextField、Input、InputGroup✅ 可用查看指南 →
InputOTPInputOTP✅ 可用查看指南 →
KbdKbd✅ 可用查看指南 →
LinkLink✅ 可用查看指南 →
ListboxListBox✅ 可用查看指南 →
ModalModal✅ 可用查看指南 →
Navbar❌ 已移除查看指南 →
NumberInputNumberField✅ 已重命名查看指南 →
PaginationPagination✅ 可用查看指南 →
PopoverPopover✅ 可用查看指南 →
ProgressProgressBar✅ 已重命名查看指南 →
CircularProgressProgressCircle✅ 已重命名查看指南 →
RadioRadio✅ 可用查看指南 →
RadioGroupRadioGroup✅ 可用查看指南 →
RangeCalendarRangeCalendar✅ 可用查看指南 →
Ripple❌ 已移除参见 Button 的水波纹效果 →
ScrollShadowScrollShadow✅ 可用查看指南 →
SelectSelect✅ 可用查看指南 →
SkeletonSkeleton✅ 可用查看指南 →
SliderSlider✅ 可用查看指南 →
Snippet❌ 已移除查看指南 →
Spacer❌ 已移除查看指南 →
SpinnerSpinner✅ 可用查看指南 →
SwitchSwitch✅ 可用查看指南 →
TableTable✅ 可用查看指南 →
TabsTabs✅ 可用查看指南 →
ToastToast✅ 可用查看指南 →
TooltipTooltip✅ 可用查看指南 →
User❌ 已移除查看指南 →

v3 中新增的组件

v3 引入了一系列 v2 中尚未提供的全新组件:

组件用途文档
TextField增强型文本输入框,支持 label 与 description查看文档 →
TextArea多行文本输入组件查看文档 →
AlertDialog用于确认与提醒的模态对话框查看文档 →
Label无障碍的表单标签组件查看文档 →
Description表单字段的辅助说明文本查看文档 →
FieldError表单字段的错误信息显示查看文档 →
Fieldset对相关表单字段进行分组查看文档 →
InputGroup将多个输入框组合在一起查看文档 →
Surface带有层级样式的容器组件查看文档 →
Disclosure可展开 / 可折叠的内容区域查看文档 →
DisclosureGroup用于管理多个 Disclosure 区域的复合组件查看文档 →
SearchField带清除按钮与可选加载状态的搜索输入框查看文档 →
DateField配合日历选择器的日期输入框查看文档 →
TimeField时间输入组件查看文档 →
Tag、TagGroup用于选择或展示的 Tag 与 TagGroup查看文档 →
ColorPicker颜色选择(ColorArea、ColorField、ColorSlider、ColorSwatch、ColorSwatchPicker)查看文档 →
CloseButton用于关闭或解除浮层的触发按钮查看文档 →
ErrorMessage表单字段错误信息展示(基于 React Aria 集成)查看文档 →

其他迁移指南

获取帮助

如果你在迁移过程中遇到问题:

  1. 查看 v3 文档
  2. 查阅具体组件的迁移指南
  3. GitHub Discussions 中查找或提问
  4. 加入 Discord 社区

本页目录