- Accordion
- Alert
- Alert Dialog
- Aspect Ratio
- Attachment
- Avatar
- Badge
- Breadcrumb
- Bubble
- 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
- Marker
- Menubar
- Message
- Message Scroller
- Native Select
- Navigation Menu
- Pagination
- Popover
- Progress
- Questionnaire
- Radio Group
- Resizable
- Scroll Area
- Select
- Separator
- Sheet
- Sidebar
- Skeleton
- Slider
- Spinner
- Switch
- Table
- Tabs
- Textarea
- Toast
- Toggle
- Toggle Group
- Tooltip
- Typography
2026 年 9 月 - cn
コンポーネントは cn パッケージから cn をインポートするようになりました。依存関係は 2 つではなく 1 つになり、維持するローカル ヘルパーは必要ありません。
すべての shadcn コンポーネントは、cn パッケージから cn をインポートするようになりました。
何年もの間、すべての shadcn プロジェクトは lib/utils.ts の同じ 5 行から始まっていました。clsx をインポートし、twMerge をインポートし、一方をもう一方でラップして cn としてエクスポートする、というものです。それでも動作はしましたが、2 つの依存関係とヘルパー関数を、すべてのプロジェクトとレジストリにコピーする必要があるということでもありました。
そこでこれをパッケージに切り出しました。cn は twMerge(clsx(...)) のドロップイン代替品です。より小さく、より高速で、同じ API のまま提供されるため、呼び出し側のコードは何も変更する必要がありません。
import { cn } from "cn"
;<div className={cn("flex items-center", className)} />何が変わったのか#
- レジストリ コンポーネント、ブロック、例では、
@/lib/utilsの代わりにcnパッケージからcnをインポートするようになりました。 npx shadcn initは、cnをインストールし、一行のlib/utils.tsを生成します。cnを使用するすべてのレジストリ アイテムは、これを依存関係として宣言しています。この変更より前に作成されたプロジェクトでも、npx shadcn addを実行すればインストールされます。
lib/utils.ts#
utils レジストリ アイテムは今も存在します。これからは cn を再エクスポートするだけになるので、独自のコードはそのまま動作し続け、プロジェクト固有のヘルパーを置く場所も 1 か所にまとまります。
export { cn } from "cn"既存のプロジェクト#
何も壊れません。lib/utils.ts はそのまま動作し続け、新しくインストールするコンポーネントはその隣に cn をインストールします。プロジェクトの残りの部分も移行したい場合は、clsx と tailwind-merge を削除して、マイグレーションを実行してください。
pnpm dlx shadcn@latest migrate cn
インポートを書き換え、twMerge(clsx(...)) の呼び出しを置き換え、古いパッケージを参照するコードがなくなれば、それらのパッケージも削除します。詳細については、CLI ドキュメント を参照してください。