- 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
- 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
它来了!Tailwind v4 和 React 19。现在就可以开始试用。你今天就能用上它。
有什么新变化
- CLI 现在可以用 Tailwind v4 初始化项目。
- 完整支持新的
@theme指令和@theme inline选项。 - 所有组件都已更新以适配 Tailwind v4 和 React 19。
- 我们移除了
forwardRef并调整了类型。 - 每个 primitive 现在都有一个用于样式化的
data-slot属性。 - 我们修复并整理了组件样式。
- 我们正在弃用
toast组件,改用sonner。 - 按钮现在使用默认光标。
- 我们正在弃用
default样式。新项目将使用new-york。 - HSL 颜色现在会转换为 OKLCH。
注意:这是非破坏性更新。你现有的 Tailwind v3 和 React 18 应用仍然可以正常工作。即使你添加新组件,在升级之前它们也仍然会保持在 v3 和 React 18。只有新项目才会默认使用 Tailwind v4 和 React 19。
试试看
你今天就可以开始使用 Tailwind v4 + React 19。请查看下面各框架的专用指南,了解如何开始。
升级你的项目
重要: 在升级之前,请阅读 Tailwind v4 兼容性文档,并确认你的项目已经准备好升级。Tailwind v4 使用前沿的浏览器特性,专为现代浏览器设计。
使用 shadcn/ui 的一个主要优势是,最终得到的代码和你自己手写的一模一样,没有隐藏的抽象层。
这意味着当某个依赖发布新版本时,你只需要按官方升级路径操作即可。
下面是升级现有项目的方法(完整文档即将补上):
1. 按照 Tailwind v4 升级指南操作
- 按照官方升级指南升级到 Tailwind v4:https://tailwindcss.com/docs/upgrade-guide
- 使用
@tailwindcss/upgrade@nextcodemod 删除已弃用的工具类并更新 tailwind 配置。
2. 更新你的 CSS 变量
codemod 会把你的 CSS 变量作为引用迁移到 @theme 指令下。
@layer base {
:root {
--background: 0 0% 100%;
--foreground: 0 0% 3.9%;
}
}
@theme {
--color-background: hsl(var(--background));
--color-foreground: hsl(var(--foreground));
}这样可以工作。但为了让颜色和其他变量更易于使用,我们需要移除 hsl 包装并改用 @theme inline。
具体做法如下:
- 将
:root和.dark移出@layerbase。 - 用
hsl()包裹颜色值。 - 给
@theme添加inline选项,也就是@theme inline。 - 从
@theme中移除hsl()包装。
:root {
--background: hsl(0 0% 100%); // <-- Wrap in hsl
--foreground: hsl(0 0% 3.9%);
}
.dark {
--background: hsl(0 0% 3.9%); // <-- Wrap in hsl
--foreground: hsl(0 0% 98%);
}
@theme inline {
--color-background: var(--background); // <-- Remove hsl
--color-foreground: var(--foreground);
}这样一来,无论是在工具类中还是在 CSS 之外访问主题变量都更简单,例如在 JavaScript 中使用颜色值。
3. 更新图表颜色
既然主题颜色现在已经带有 hsl(),你就可以在 chartConfig 中移除外层包装:
const chartConfig = {
desktop: {
label: "桌面端",
- color: "hsl(var(--chart-1))",
+ color: "var(--chart-1)",
},
mobile: {
label: "移动端",
- color: "hsl(var(--chart-2))",
+ color: "var(--chart-2)",
},
} satisfies ChartConfig4. 使用新的 size-* 工具类
新的 size-* 工具类(Tailwind v3.4 中新增)现在已经被 tailwind-merge 完整支持。你可以用新的 size-* 工具类替换 w-* h-*:
- w-4 h-4
+ size-45. 更新依赖
pnpm up "@radix-ui/*" cmdk lucide-react recharts tailwind-merge clsx --latest6. 移除 forwardRef
你可以使用 remove-forward-ref codemod 将你的 forwardRef 迁移为 props,或者手动更新这些 primitives。
有关该 codemod,请参见 https://github.com/reactjs/react-codemod#remove-forward-ref。
如果你想手动处理,可以按以下步骤进行:
- 用
React.ComponentProps<...>替换React.forwardRef<...>。 - 从组件中移除
ref={ref}。 - 添加
data-slot属性。这在使用 Tailwind 进行样式化时会很有用。 - 你也可以选择转换为具名函数并移除
displayName。
迁移前
const AccordionItem = React.forwardRef<
React.ElementRef<typeof AccordionPrimitive.Item>,
React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>
>(({ className, ...props }, ref) => (
<AccordionPrimitive.Item
ref={ref}
className={cn("border-b last:border-b-0", className)}
{...props}
/>
))
AccordionItem.displayName = "AccordionItem"迁移后
function AccordionItem({
className,
...props
}: React.ComponentProps<typeof AccordionPrimitive.Item>) {
return (
<AccordionPrimitive.Item
data-slot="accordion-item"
className={cn("border-b last:border-b-0", className)}
{...props}
/>
)
}更新日志
2025 年 3 月 19 日 - 弃用 tailwindcss-animate
我们已弃用 tailwindcss-animate,改用 tw-animate-css。
新项目会默认安装 tw-animate-css。
对于现有项目,请按照以下步骤迁移。
- 从依赖中移除
tailwindcss-animate。 - 从你的 globals.css 文件中移除
@plugin 'tailwindcss-animate'。 - 将
tw-animate-css作为开发依赖安装。 - 在你的 globals.css 文件中添加
@import "tw-animate-css"。
- @plugin 'tailwindcss-animate';
+ @import "tw-animate-css";2025 年 3 月 12 日 - 新的深色模式颜色
我们重新审视了深色模式颜色,并将它们更新得更易访问。
如果你正在运行一个现有的 Tailwind v4 项目(不是升级得到的项目1),你可以通过使用 CLI 重新添加组件2,让组件改用新的深色模式颜色。
提交任何更改
CLI 会覆盖你现有的组件。 我们建议在运行 CLI 之前先提交你对组件所做的任何更改。
git add .
git commit -m "..."更新组件
pnpm dlx shadcn@latest add --all --overwrite
更新颜色
将 globals.css 文件中的深色模式颜色更新为新的 OKLCH 颜色。有关颜色列表,请参阅 Base Colors 参考。
检查更改
检查并重新应用你对组件所做的任何更改。