Shadcn/UI now defaults to Base UI instead of Radix
TL;DR · AI 摘要
shadcn/ui现默认使用Base UI替代Radix,因其稳定性、社区支持及团队实践验证,迁移非强制但提供渐进工具。
核心要点
- Base UI稳定版本达1.6.0,周下载量超600万,成为默认选择
- 迁移非强制,Radix仍受支持且继续更新
- 迁移工具支持渐进式组件迁移,可随时暂停恢复
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- shadcn/ui迁移至Base UI
- 变更内容
- 新项目默认Base UI
- 文档调整
- 初始化工具变更
- 迁移策略
- 非强制迁移
- 渐进式迁移工具
- Radix持续支持
- 动因分析
- Base UI稳定性
- 社区使用率
- 团队实践验证
金句 / Highlights
值得收藏与分享的关键句。
Base UI周下载量达600万,稳定性经生产环境验证
迁移工具支持暂停恢复,保持项目持续可交付
社区新项目选择Base UI比例为Radix的2倍
更新日志 - 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 用于新项目?只需添加一个标志:
pnpm
npm
yarn
bun
pnpm dlx shadcn init -b radix如果您的脚本或 CI 在非交互模式下运行 shadcn init 并期望使用 Radix,请添加 -b radix 保持路径一致性。
正在构建注册表?如果需要固定特定库,请添加 registry:base 配置。未指定库的项目将默认使用 Base UI。
要开始新项目?我们推荐使用 Base UI。
准备迁移时 #
您无需迁移。但如果您想迁移,我们为此开发了专门工具:
pnpm
npm
yarn
bun
pnpm dlx skills add shadcn/ui然后向您的编码助手提问:
migrate accordion to base-ui默认采用渐进式迁移:一次迁移一个组件及其用法,同时保持项目可构建。两个库可以共存。中途停止也没关系,稍后可继续。您也可以一次性迁移整个项目。
为什么使用技能而非代码模版? #
因为代码属于您。您可能添加了变体、修改了类名、添加了新属性。代码模版会处理您从未触碰过的组件,却可能在您修改过的组件上出错。
因此我们提供了知识库:每个重命名、每个属性变更、每个行为差异,都经过双库人工核对。您的助手会读取这些信息,分析您的修改,并将这些修改应用到目标库。
机械问题在任何地方都能得到修复(asChild 现在是 render)。行为变更会被标记,而非静默修复。由你决定。
迁移会产生什么 #
每次运行会留下三样东西:
- 可正常运行的代码。在报告成功之前,代码会经过类型检查并构建完成。
- 项目根目录下 .migration/ 文件夹中每个组件的报告:变更内容、未处理的部分,以及需要手动验证的简要检查清单。
- 清晰的 Git 历史记录。每个组件对应一个提交,位于独立分支上。回滚只需删除分支。
以下是报告的示例:
.migration/accordion.md
Copy
# accordion
<!-- 日期、使用策略和一句话结论 -->
## 已修改
<!-- 每个被修改的文件,包含变更内容及原因 -->
## 未处理
<!-- 看起来相关但故意未处理的文件 -->
## 行为变更
<!-- 虽然能编译但行为不同的差异。已被标记,未进行修复 -->
## 需手动验证
<!-- 简短检查清单:打开、点击、Tab 键遍历。只需一分钟 -->无隐藏状态。进度保存在你的文件和 Git 历史中,因此任何代理、任何会话、任何时间都能从上次停止的地方继续。
它兼容 Claude Code、Cursor 或任何支持技能的代理。我们在真实项目中进行了测试:60+ 个组件,其中 36 个使用了 Radix。完整迁移在约每个组件 10k tokens 的情况下耗时约 25 分钟。构建干净,自定义功能完整保留。