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 にするか」で悩む時間は、もう要らない。

元ネタ: https://ui.shadcn.com/docs/changelog