shadcn/ui が Base UI をデフォルトに変更 — Radix との違いと既存プロジェクトへの影響
2026年7月、shadcn/ui の npx init がデフォルトで Base UI を選択するようになった。Radix は廃止されず、-b radix フラグで継続利用できる。移行は AI スキルベースで段階的に行える。
npx shadcn init を何も考えずに叩いたら、いつの間にか Base UI が入ってた——という経験をした人がいるかもしれない。
2026 年 7 月、shadcn/ui がデフォルトを Radix UI から Base UI に切り替えた。「また依存ライブラリが変わった……」と思った人も多いはずだ。でも今回は、移行を急ぐ必要はない。
なぜデフォルトが変わったのか
shadcn/ui チームは昨年から npx shadcn create で両ライブラリを選べるようにしていた。ユーザーが自分で選べるようにして、どっちが選ばれるか見ていた。
結果は明快だった。新規プロジェクトの約 2/3 が Base UI を選択した。Base UI v1.6.0 は週間 600 万ダウンロードに達し、shadcn/ui チーム自身も新規プロジェクトで Base UI を使い始めた。データで答えが出たので、デフォルトを変えた。それだけの話。
Radix と Base UI、何が違う?
Base UI は Radix の開発チームが「次に作ったライブラリ」だ。同じ人たちが作ったので思想は近いが、設計が整理されている。
一番わかりやすい違いはパッケージ構成。Radix はコンポーネントごとにパッケージが分かれていて、@radix-ui/react-dialog、@radix-ui/react-dropdown-menu ……と使うたびに package.json が膨らんでいく。Base UI は @base-ui-components/react の 1 パッケージに全部入っている。
API も変わった。Radix の asChild パターンが Base UI では render prop になった。
// Radix
<Dialog.Trigger asChild>
<Button>開く</Button>
</Dialog.Trigger>
// Base UI
<Dialog.Trigger render={<Button />}>
開く
</Dialog.Trigger>
書き方は変わるが、やっていることは同じ。アクセシビリティ対応の品質も両者とも高い。
既存プロジェクト、どうすれば?
何もしなくていい。 Radix は廃止されない。
shadcn/ui チームは「Radix は今日も本番で使っており、移行していない」と明言している。既存の Radix ベースのプロジェクトはそのまま動き続ける。
ただし、CI やスクリプトで shadcn init を自動実行している場合は要注意。何も指定しないとデフォルトが変わっている。Radix を使い続けたいなら明示が必要になった。
# Base UI(新しいデフォルト)
npx shadcn init
# 今まで通り Radix を使いたい場合
npx shadcn init -b radix
CI スクリプトに -b radix を追加するだけで今まで通り動く。1 行の変更。
移行するなら AI に任せていい
Base UI に切り替えたい場合、shadcn/ui はコードモッドではなく AI スキルで対応している。
pnpm dlx skills add shadcn/ui
インストール後、エージェントに migrate accordion to base-ui と指示するだけ。カスタマイズしたクラスやバリアントを引き継ぎながらコンポーネント単位で移行してくれる。60 以上のコンポーネントを約 25 分で移行できたという報告もある。
コードモッドと違って型チェックが通り、git 履歴もきれいに保たれる。急いで全部移行する必要はない。気になるコンポーネントから 1 本ずつやってみるのが現実的だ。
今回追加されたコンポーネント
チャット UI 向けが充実した。
| コンポーネント | 用途 |
|---|---|
MessageScroller | スクロール動作とメッセージ管理 |
Message / Bubble | 会話 UI の基本要素 |
Attachment / Marker | ファイル添付・既読マーカー |
CSS ユーティリティとして scroll-fade(スクロール端のフェード)と shimmer(ストリーミング表示)も追加。AI チャット UI を作っているなら抑えておきたい。
GitHub Registry にも対応した。任意の GitHub リポジトリを registry.json で shadcn/ui 互換コンポーネントとして配布できる。社内デザインシステムを npm に上げずに配布できる——地味に、かなり便利だと思う。
デフォルトが変わっただけで、Radix は消えない。CI スクリプトに 1 行足せば何も変わらない。
新規で始めるなら Base UI を素直に選ぶといい。パッケージが 1 つにまとまっていて、API が整理されていて、移行も AI でやってくれる。「Radix にするか Base UI にするか」で悩む時間は、もう要らない。