Hacker News Best

Shadcn/UI now defaults to Base UI instead of Radix

8.5内容质量

TL;DR · AI 摘要

shadcn/ui现默认使用Base UI替代Radix,因其稳定性、社区支持及团队实践验证,迁移非强制但提供渐进工具。

核心要点

  • Base UI稳定版本达1.6.0,周下载量超600万,成为默认选择
  • 迁移非强制,Radix仍受支持且继续更新
  • 迁移工具支持渐进式组件迁移,可随时暂停恢复

结构提纲

按章节快速跳转。

  1. 宣布shadcn/uiRadix迁移至Base UI作为默认组件库

  2. 2023年shadcn/ui基于Radix构建,现Base UI由原Radix团队开发

  3. Base UI稳定性、社区使用率(新项目2:1)及团队实践验证

  4. 新项目默认Base UI,文档与初始化工具调整

  5. Radix不弃用,迁移非强制,提供渐进迁移工具

  6. 通过skills系统实现组件级渐进迁移

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • shadcn/ui迁移至Base UI
    • 变更内容
      • 新项目默认Base UI
      • 文档调整
      • 初始化工具变更
    • 迁移策略
      • 非强制迁移
      • 渐进式迁移工具
      • Radix持续支持
    • 动因分析
      • Base UI稳定性
      • 社区使用率
      • 团队实践验证

金句 / Highlights

值得收藏与分享的关键句。

#React#前端#shadcn/ui#Base UI#Radix
打开原文

更新日志 - shadcn/ui

2026 年 7 月 - Base UI 成为默认库

从今天起,Base UI 成为 shadcn/ui 的默认组件库。

先简单回顾一下历史。2023 年 1 月 shadcn/ui 发布时,它基于 Radix 构建。当时没有其他库能与之媲美。无样式的核心组件、优秀的 API、出色的可访问性,以及在数百万应用中经过验证的稳定性。

几年后,Radix 的原班人马开始打造新的项目:Base UI。他们已经成功做过一次,现在带着首次积累的所有经验再次出发。

去年 Base UI 发布了 beta 版本,许多人询问我们是否会用它取代 Radix。我当时的回答是:"对生产环境应用来说,切换组件库是最糟糕的选择。"这个观点依然成立。因此我们采取了 shadcn 的方式:为 Base UI 重写所有组件,保持相同的抽象层,并让开发者自行选择。12 月我们发布了支持双库的 npx shadcn create,1 月推出了完整的 Base UI 文档。

随后我们观察了大家的使用情况。

为什么现在 #

  • Base UI 已趋于稳定。当前版本为 1.6.0,每周下载量超过 600 万次。
  • 它持续改进。团队定期发布新组件和实用功能。
  • 我们自己在使用。所有新项目都基于 Base UI 构建。
  • 你们也在使用。通过 shadcn/create 创建的项目中,有 2:1 的比例选择 Base UI 而非 Radix。

社区已经做出选择,现在我们正式确认这一决定。

变更内容 #

  • 新项目默认使用 Base UI。运行 npx shadcn init 时,Base UI 成为默认选项。
  • shadcn/create 首先展示 Base UI。
  • 文档默认使用 Base UI。组件页面默认在 Base UI 标签页打开,Radix 文档只需一次点击即可访问。

对您意味着什么 #

Radix 并未被弃用。我们仍然支持它,所有更新和新组件都会同时发布到两个库(除非某个组件仅存在于 Base UI)。

您无需迁移。Radix 是一个成熟且经过验证的库,我们仍在生产环境中使用它,且不会迁移。如果您的应用运行正常,请继续开发。

仍偏爱 Radix 用于新项目?只需添加一个标志:

bash
pnpm
npm
yarn
bun
pnpm dlx shadcn init -b radix

如果您的脚本或 CI 在非交互模式下运行 shadcn init 并期望使用 Radix,请添加 -b radix 保持路径一致性。

正在构建注册表?如果需要固定特定库,请添加 registry:base 配置。未指定库的项目将默认使用 Base UI。

要开始新项目?我们推荐使用 Base UI。

准备迁移时 #

您无需迁移。但如果您想迁移,我们为此开发了专门工具:

bash
pnpm
npm
yarn
bun
pnpm dlx skills add shadcn/ui

然后向您的编码助手提问:

bash
migrate accordion to base-ui

默认采用渐进式迁移:一次迁移一个组件及其用法,同时保持项目可构建。两个库可以共存。中途停止也没关系,稍后可继续。您也可以一次性迁移整个项目。

为什么使用技能而非代码模版? #

因为代码属于您。您可能添加了变体、修改了类名、添加了新属性。代码模版会处理您从未触碰过的组件,却可能在您修改过的组件上出错。

因此我们提供了知识库:每个重命名、每个属性变更、每个行为差异,都经过双库人工核对。您的助手会读取这些信息,分析您的修改,并将这些修改应用到目标库。

机械问题在任何地方都能得到修复(asChild 现在是 render)。行为变更会被标记,而非静默修复。由你决定。

迁移会产生什么 #

每次运行会留下三样东西:

  • 可正常运行的代码。在报告成功之前,代码会经过类型检查并构建完成。
  • 项目根目录下 .migration/ 文件夹中每个组件的报告:变更内容、未处理的部分,以及需要手动验证的简要检查清单。
  • 清晰的 Git 历史记录。每个组件对应一个提交,位于独立分支上。回滚只需删除分支。

以下是报告的示例:

.migration/accordion.md

code
Copy
# accordion
<!-- 日期、使用策略和一句话结论 -->
## 已修改
<!-- 每个被修改的文件,包含变更内容及原因 -->
## 未处理
<!-- 看起来相关但故意未处理的文件 -->
## 行为变更
<!-- 虽然能编译但行为不同的差异。已被标记,未进行修复 -->
## 需手动验证
<!-- 简短检查清单:打开、点击、Tab 键遍历。只需一分钟 -->

无隐藏状态。进度保存在你的文件和 Git 历史中,因此任何代理、任何会话、任何时间都能从上次停止的地方继续。

它兼容 Claude Code、Cursor 或任何支持技能的代理。我们在真实项目中进行了测试:60+ 个组件,其中 36 个使用了 Radix。完整迁移在约每个组件 10k tokens 的情况下耗时约 25 分钟。构建干净,自定义功能完整保留。