第3回
React Bitsでアニメ付きUIを最短実装する
アニメ付きUIコンポーネント集 React Bits を実際に試す。jsrepoでの導入からBlurTextの設置までを、このサイトと同じVite+Tailwind環境で動かしながら解説する。
制作・運営:React Guide 運営者
教材の範囲:以下は別プロジェクトで試す手順とコード例です。記事内の見本は静的な説明用表示です。導入先のフレームワーク・外部サービスまでの実行確認は含めていません。
「React最新ラボ」第3回。今回は見た目の話。話題のUIコンポーネント集 React Bits を、このサイトと同じ Vite + TypeScript + Tailwind 構成に入れて動かす。
React Bits の考え方:インストールではなく「取り込む」
React Bits はshadcn CLIやjsrepo、手動コピーで、選んだコンポーネントのソースを自分の src/ にコピーする。提供形態は4つの組み合わせがあり、プロジェクトに合わせて選ぶ。
| 組み合わせ | 内容 |
|---|---|
| JS-CSS | JavaScript+素のCSS |
| JS-Tailwind | JavaScript+Tailwind |
| TS-CSS | TypeScript+素のCSS |
| TS-Tailwind | TypeScript+Tailwind(この教材で選ぶ構成) |
導入する
このサイトと同じ TypeScript + Tailwind 構成に追加してみる。各コンポーネントの公式ページに、その構成用の 導入コマンドが表示されるので、それをコピーするのが基本だ。
たとえば文字アニメの BlurText を TS-Tailwind で入れるなら、こうなる。
npx shadcn@latest add @react-bits/BlurText-TS-TWBlurText-TS-TW が「コンポーネント名-言語-スタイル」を表す。初回はプロジェクト用の設定ファイルを作るか聞かれるので、プロジェクト直下で実行する。実行すると src/ 配下にコンポーネントのソースが入る。
文字をふわっと出す:BlurText
取り込んだ BlurText を使ってみる。ぼやけた状態から、語ごと・文字ごとにくっきり浮かび上がるテキストアニメだ。
// 取り込んだパスに合わせて import する
import BlurText from './components/BlurText/BlurText'
export function Hero() {
return (
<BlurText
text="現場で役立つReact Guide"
animateBy="words"
direction="top"
delay={150}
stepDuration={0.35}
className="text-3xl font-bold"
/>
)
}主なprops。
| prop | 意味 | 既定 |
|---|---|---|
text |
表示する文字列 | '' |
animateBy |
'words'(語ごと)/ 'letters'(文字ごと) |
'words' |
direction |
'top' / 'bottom'(ぼかしが消える向き) |
'top' |
delay |
1要素ずつずらす遅延(ms) | 200 |
stepDuration |
1ステップのアニメ長(秒) | 0.35 |
現場で役立つReact Guide
現場で役立つReact Guide
スクロールで滑り込ませる:AnimatedContent
AnimatedContent は、要素が画面に入ってきたタイミングで下からスッと現れるラッパー。中身を包むだけで使える。
import AnimatedContent from './components/AnimatedContent/AnimatedContent'
export function Section() {
return (
<AnimatedContent distance={100} direction="vertical" duration={0.8} delay={0.1}>
<h2>スクロールで現れる見出し</h2>
</AnimatedContent>
)
}distance(移動量px)・direction('vertical' / 'horizontal')・duration(秒)・delay(秒)あたりを調整する。これに加えて、背景系の Aurora や DotGrid、数字を回す CountUp など、装飾用のコンポーネントが一通り揃っている。
取り込み方式の利点と注意
- 利点:取り込んだ後は自分のコード。手元で調整できる(ライセンス条件に従う)
- 注意:本家の更新は自動で来ない(手動で取り直し)。
motion/gsapなど依存が増える。必要な分だけ入れる - パフォーマンス:背景の常時アニメ(
Auroraなど)は描画コストが高め。多用しない
どこまで使う? Base UI との使い分け
最後に「どんなUIライブラリを選ぶか」の地図を一つ。React Bits と、よく比較される Base UI(MUIチームのheadlessライブラリ)は、役割が違う。
| React Bits | Base UI | |
|---|---|---|
| 担当 | 見た目・動き(装飾) | 振る舞い・アクセシビリティ(土台) |
| 例 | BlurText / Aurora / CountUp | Menu / Dialog / Tooltip |
| 見た目 | 付いてくる | 自前で当てる(headless) |
| 向く場面 | 動きで魅せたいLP・ヒーロー | 堅牢で操作可能なUI部品 |
まとめ
- React Bits は
jsrepoでソースを取り込むアニメUI集。TS-Tailwind 構成にそのまま入る BlurText/AnimatedContentなどをコピーして、自分のコードとして調整できる- 取り込み方式ゆえ更新は手動。依存とパフォーマンスに注意して、必要な分だけ使う
- 飾りは React Bits、操作とa11yの土台は Base UI、と役割で使い分ける
これで「React最新ラボ」第1弾の3回が一区切り。View Transitions・Waku・React Bits と触ってきたが、最新技術は「まだ実験段階/alpha」も多い。それでも実際に手を動かすと、「何が便利で、何が時期尚早か」が自分の感覚で分かる。一次情報(公式ドキュメント)で確かめながら試す――それが新技術と付き合う一番の近道だ。
次回からの第2弾では、React Compiler 1.0、React 19.2の <Activity> / useEffectEvent、そして話題のフレームワーク TanStack Start を順に試していく。
確認してみる
日本語をwordsとlettersで比べる。空白がない日本語ではwordsで1つになる場合がある。取り込んだライセンスと更新元を記録する。
同じテーマの教材
<ViewTransition>でアニメーション遷移を実際に試す
React 19.3で安定版になったViewTransitionコンポーネントを実際に試す。リストの並び替えや要素の出入りにアニメーションを付ける方法を、Vite環境で動かしながら解説する。
useState・useRef・useReducerの型定義:TypeScriptで正しく型をつける
TypeScriptでuseState・useRef・useReducerに型をつける方法を解説。型推論が効くケースと明示が必要なケース、useRefのnull初期値問題まで実例付きで説明します。
Reactイベントハンドラーの型定義:onClick・onChange・onSubmit
TypeScriptでReactのイベントハンドラーを正しく型定義する方法を解説。onClick・onChange・onSubmit・フォーム要素ごとの型からpropsでの受け渡しまで実例付きで説明します。