- 手风琴 (Accordion)
- 警示框 (Alert)
- 对话框 (Alert Dialog)
- 宽高比 (Aspect Ratio)
- 头像 (Avatar)
- 徽章 (Badge)
- 面包屑 (Breadcrumb)
- 按钮 (Button)
- 按钮组 (Button Group)
- 日历 (Calendar)
- 卡片 (Card)
- 轮播 (Carousel)
- 图表 (Chart)
- 复选框 (Checkbox)
- 折叠面板 (Collapsible)
- 组合框 (Combobox)
- 命令栏 (Command)
- 上下文菜单 (Context Menu)
- 数据表格 (Data Table)
- 日期选择器 (Date Picker)
- 对话框 (Dialog)
- 方向 (Direction)
- 抽屉 (Drawer)
- 下拉菜单 (Dropdown Menu)
- 空状态 (Empty)
- 字段 (Field)
- 悬浮卡片 (Hover Card)
- 输入框 (Input)
- 输入框组 (Input Group)
- OTP 输入框 (Input OTP)
- 项目 (Item)
- 快捷键 (Kbd)
- 标签 (Label)
- 菜单栏 (Menubar)
- 原生选择框 (Native Select)
- 导航菜单 (Navigation Menu)
- 分页 (Pagination)
- 气泡卡片 (Popover)
- 进度条 (Progress)
- 单选组 (Radio Group)
- 可调节大小 (Resizable)
- 滚动区域 (Scroll Area)
- 选择框 (Select)
- 分隔线 (Separator)
- 侧边栏 (Sheet)
- 导航侧边栏 (Sidebar)
- 骨架屏 (Skeleton)
- 滑块 (Slider)
- Sonner (吐司通知)
- 加载器 (Spinner)
- 开关 (Switch)
- 表格 (Table)
- 标签页 (Tabs)
- 文本域 (Textarea)
- 吐司 (Toast)
- 切换按钮 (Toggle)
- 切换组 (Toggle Group)
- 文字提示 (Tooltip)
- 排版 (Typography)
更新: 我们已在 latest 版本中添加了对 React 19 和 Tailwind v4 的全面支持。本指南可能已过时,请谨慎参考。
简要说明
如果你正在使用 npm,可以通过标志位安装 shadcn/ui 依赖项。shadcn CLI 在运行会提示你选择一个标志位。使用 pnpm、bun 或 yarn 则无需标志位。
请参阅 升级状态 以了解各包对 React 19 的支持情况。
发生了什么?
React 19 现已进入 候选发布版本 (rc),并且在最新的 Next.js 15 版本中 已得到测试和支持。
为了支持 React 19,包维护者需要测试并更新他们的包,以将 React 19 包含在对等依赖(peer dependency)中。这一工作 已经 在 进行中。
"peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0"
},你可以通过运行 npm info <package> peerDependencies 来检查某个包是否将 React 19 列为对等依赖。
在此期间,如果你安装的包 没有 将 React 19 列为对等依赖,你将看到类似以下的错误信息
npm error code ERESOLVE
npm error ERESOLVE unable to resolve dependency tree
npm error
npm error While resolving: my-app@0.1.0
npm error Found: react@19.0.0-rc-69d4b800-20241021
npm error node_modules/react
npm error react@"19.0.0-rc-69d4b800-20241021" from the root project注意: 这仅限于 npm。PNPM 和 Bun 只会显示静默警告。
如何解决
方案 1: 使用 --force 或 --legacy-peer-deps
你可以使用 --force 或 --legacy-peer-deps 标志位强制安装包。
npm i <package> --force
npm i <package> --legacy-peer-deps这将安装该包并忽略对等依赖警告。
方案 2: 使用 React 18
你可以将 react 和 react-dom 降级到 18 版本,该版本与你正在安装的包兼容,并在依赖项更新后再升级。
npm i react@18 react-dom@18无论你选择哪种方案,请务必彻底测试你的应用,确保没有回归问题。
在 Next.js 15 上使用 shadcn/ui
使用 pnpm、bun 或 yarn
按照 安装指南 中的说明安装 shadcn/ui。无需使用任何标志位。
使用 npm
当你运行 npx shadcn@latest init -d 时,系统会提示你选择一个选项来解决对等依赖问题。
It looks like you are using React 19.
Some packages may fail to install due to peer dependency issues (see https://ui.shadcn.org.cn/react-19).
? How would you like to proceed? › - Use arrow-keys. Return to submit.
❯ Use --force
Use --legacy-peer-deps然后,你可以使用你选择的标志位运行该命令。
添加组件
添加组件的过程与上述相同。请选择一个标志位来解决对等依赖问题。
安装新依赖后,请务必始终测试你的应用。
升级状态
为了让你方便跟踪升级进度,我在下方创建了一个表格,列出了 shadcn/ui 依赖项对 React 19 的支持状态。
- ✅ - 在 npm、pnpm 和 bun 下可与 React 19 一起使用。
- 🚧 - 在 pnpm 和 bun 下可与 React 19 一起使用。npm 需要标志位。PR 正在进行中。
| 包名称 | 状态 | 备注 |
|---|---|---|
| radix-ui | ✅ | |
| lucide-react | ✅ | |
| class-variance-authority | ✅ | 未将 React 19 列为对等依赖。 |
| tailwindcss-animate | ✅ | 未将 React 19 列为对等依赖。 |
| embla-carousel-react | ✅ | |
| recharts | ✅ | 参阅下方 说明 |
| react-hook-form | ✅ | |
| react-resizable-panels | ✅ | |
| sonner | ✅ | |
| react-day-picker | ✅ | 在 npm 下使用标志位即可工作。升级至 v9 的工作正在进行中。 |
| input-otp | ✅ | |
| vaul | ✅ | |
| @radix-ui/react-icons | ✅ | 参阅 PR #194 |
| cmdk | ✅ |
如果你有任何疑问,请在 GitHub 上 开启一个 issue。
Recharts
要在 React 19 中使用 recharts,你需要覆盖 react-is 依赖项。
将以下内容添加到你的 package.json 中
"overrides": {
"react-is": "^19.0.0-rc-69d4b800-20241021"
}注意:react-is 版本需要与你使用的 React 19 版本匹配。以上仅为示例。