v1.0.11
组件 CSS 迁移至 components 层叠层,支持 Expo SDK 58 与 React Native 0.88,对等依赖兼容 Gesture Handler 3,Slider 消除浮点精度误差,ScrollShadow 在启用「减弱动态效果」时仍随滚动变化,并修复 BottomSheet 受控模式下重新打开的显示问题
HeroUI Native v1.0.11 将组件 CSS 包裹在 Tailwind 的 components 层叠层中,使用户的工具类可以覆盖组件默认样式;新增 Expo SDK 58 / React Native 0.88 / Gesture Handler 3 支持;修复 Slider 使用小数步长时的浮点精度误差;让 ScrollShadow 在启用「减弱动态效果」时仍随滚动位置变化;并解决了 Android 上的多个浮层与输入组件问题。
安装
升级到最新版本:
npm i heroui-nativepnpm add heroui-nativeyarn add heroui-nativebun add heroui-native使用 AI 助手? 直接提示「Hey Cursor,把 HeroUI Native 升级到最新版本」,助手会自动比对版本并完成必要修改。了解更多请参见 HeroUI Native MCP 服务器。
真机体验
⚠️ 破坏性变更
要求使用 Uniwind 1.13.0
组件 CSS 现在包裹在 @layer components 中,需要 Uniwind 1.13.0 才能正确应用层叠层。使用旧版 Uniwind 的应用可能会遇到组件样式优先级不正确的问题。
变更前:
"uniwind": "1.12.x"变更后:
"uniwind": "1.13.0"迁移方式: 将项目中的 Uniwind 升级至 1.13.0。这是此项变更唯一需要执行的操作,组件样式本身保持不变。
相关 PR: #529
自定义颜色需要 :root 包裹
@layer theme 中的自定义颜色覆盖现在必须嵌套在 :root 内,Tailwind CSS v4 才能正确识别。已有未使用 :root 包裹的覆盖规则可能会静默失效。
变更前:
@layer theme {
@variant light {
--accent: oklch(0.65 0.25 270);
}
}变更后:
@layer theme {
:root {
@variant light {
--accent: oklch(0.65 0.25 270);
}
}
}迁移方式: 在 @layer theme 内,使用 :root 包裹 @variant light 和 @variant dark 代码块。参见更新后的颜色文档。
相关 PR: #503
新增功能
支持 Expo SDK 58 与 React Native 0.88
组件库现在支持 Expo SDK 58、React Native 0.88、React 19.3 与 Reanimated 4.7。组件 ref 使用兼容 React Native Strict TypeScript API 的 ComponentRef 接口。react-native-gesture-handler 的对等依赖范围已放宽,同时接受 v2(^2.28.0)与 v3(^3.0.0),因此使用 Gesture Handler 2 的现有应用无需升级。(#528)
组件 CSS 迁移至 components 层
所有组件样式现在都位于 Tailwind 的 @layer components 中,HeroText 的默认字体也迁移至 @layer base 中的类。这意味着用户的工具类(例如 font-medium、颜色覆盖)现在可以正确覆盖组件默认样式,与 Tailwind 的标准层叠顺序一致。(#529)
问题修复
本版本包含以下问题的修复:
- Issue #525:Slider 使用小数步长(例如
step={0.1})时会产生0.30000000000000004之类的浮点精度误差。snapToStep工具函数现在会根据step和minValue的精度进行舍入,使onChange与Slider.Output接收到0.3这样的准确值。(#526) - Issue #521:启用「减弱动态效果」(iOS)或设置
animation="disable-all"时,ScrollShadow 的两侧阴影会始终显示。阴影现在始终通过interpolate随滚动位置变化,禁用动画的状态仅影响退出过渡。(#522) - Issue #509:受控 BottomSheet 重新打开后,可能因
isDismissed仍为true而以opacity: 0渲染。关闭后的容器样式现在仅在底部弹层也处于关闭状态(!isOpen)时应用。(#511) - Issue #488:Input 的 primary 变体在 Android 上未显示投影。Android 现在使用
elevation: 1替代shadow-sm,恢复预期的阴影效果。(#515) - Issue #520:Popover、Menu 或 Select 内容中的
ScrollView在 Android 上无法滚动,因为动画包装层没有尺寸。包装层现在使用absoluteFill与pointerEvents="box-none",使 Android 能将原生触摸事件分发给可滚动内容。后续提交还为contentWrapper样式添加了transformOrigin: 'top',使自定义关键帧动画以正确的原点变换。(#530) - Issue #497:在 React Native 0.87+ 上,已发布的 1.0.10 类型声明中的 Input、TextArea、SearchField 与 InputGroup ref 仍无法通过类型检查。共享的
TextInputComponent类型现在会在这四个组件中保留原生 ref 别名。(#504) - InputGroup 在禁用的
TextField内未继承禁用状态。未显式传入属性时,根组件现在会从外层表单字段上下文读取isDisabled。(#508) - Issue #502:自定义颜色的文档示例在
@layer theme内缺少必需的:root包裹,可能导致覆盖规则不生效。(#503)
相关 PR:
依赖
- Uniwind 升级至
1.13.0(此前为1.12.0)。此版本新增层叠层支持,是@layer components变更的必要依赖。同时移除了 Uniwind 1.12.2 的 Yarn 补丁。(#529) - react-native-gesture-handler 对等依赖现在接受
^2.28.0 || ^3.0.0(此前为^2.28.0)。(#528)
更新的文档
以下文档页面已更新,以反映本版本的变更:
- 颜色 — 自定义颜色示例现在包含必需的
:root包裹 - 快速开始 —
react-native-gesture-handler的对等依赖更新为^2.28.0 || ^3.0.0 - Slider — 修复:小数步长的值不再出现浮点精度误差
- ScrollShadow — 修复:启用「减弱动态效果」时阴影仍随滚动变化
- BottomSheet — 修复:受控模式下重新打开时内容不可见的问题
- Input — 修复:恢复 Android 阴影,并保留 ref 类型
- InputGroup — 修复:继承父级 TextField 的禁用状态
- Popover — 修复:Android 上内容区域的原生滚动
- Menu — 修复:Android 上内容区域的原生滚动
- Select — 修复:Android 上内容区域的原生滚动
链接
贡献者
感谢所有为本版本做出贡献的朋友!