Back

Tailwind CSS v4 移行ガイド:変更点とアップグレード方法完全解説(2026年版)

Tailwind v4、マイナーアップデートじゃないです。完全に作り直しました。Rustで新しいエンジン作って、設定方式も変えて、PostCSSプラグインもなくなりました。アップグレード延期していた方向けに、何が変わったか、どう移行するか解説していきます。

本番アプリ3つアップグレードしてみた感想:苦労する価値あります。ビルド時間3-10倍速くなって、CSSサイズも減って、新しい設定方式も慣れたら使いやすいです。

何が変わったのか、各部分をどう移行するのか見ていきましょう。

何が変わった?

移行手順の前に、大きな変更点を押さえておきましょう:

1. Rustで書かれた新エンジン(Oxide)

Tailwind v3はJavaScriptベースのエンジンでした。v4はOxideという、Rustで書かれた新しい高性能エンジンを使用します。単なる書き直しではなく、根本的に高速です:

指標v3v4改善
初回ビルド~800ms~100ms8倍高速
インクリメンタルリビルド~200ms~5ms40倍高速
CSS出力サイズ24KB18KB25%削減

Rustエンジンにより、より良い並列化と低メモリ使用量も実現しています。開発中のHMR(Hot Module Replacement)が今は本当に瞬時に感じられます。

2. 設定がCSSに移動

これが一番大きな変化です。v3ではtailwind.config.jsで全部設定してましたよね:

// v3: tailwind.config.js module.exports = { theme: { extend: { colors: { primary: '#3b82f6', secondary: '#10b981', }, fontFamily: { sans: ['Inter', 'sans-serif'], }, }, }, }

v4では@themeを使ってCSSファイルの中で設定します:

/* v4: app.css */ @import "tailwindcss"; @theme { --color-primary: #3b82f6; --color-secondary: #10b981; --font-sans: "Inter", sans-serif; }

何がいいか:

  • 設定とスタイルが一緒にある
  • IDEの補完が効きやすい
  • DevToolsで直接確認できる
  • 別のJS設定ファイル不要

3. PostCSSプラグインなし

v3では、TailwindはPostCSSプラグインでした:

// v3: postcss.config.js module.exports = { plugins: { tailwindcss: {}, autoprefixer: {}, }, }

v4では、TailwindはスタンドアロンCLIまたはViteプラグインです。互換性のためにPostCSSもサポートされていますが、デフォルトではありません:

// v4: vite.config.ts(推奨) import tailwindcss from '@tailwindcss/vite' export default { plugins: [tailwindcss()], }
# v4: CLI代替 npx @tailwindcss/cli -i input.css -o output.css --watch

4. 自動コンテンツ検出

v3でcontentパスを設定したのを覚えていますか?

// v3: tailwind.config.js module.exports = { content: [ './src/**/*.{js,ts,jsx,tsx,mdx}', './components/**/*.{js,ts,jsx,tsx}', ], }

v4では、Tailwindはプロジェクトを分析してTailwindクラスを使用しているファイルを自動検出します。ほとんどのプロジェクトで設定不要です。カスタマイズが必要な場合:

/* v4: 自動検出のオーバーライド */ @import "tailwindcss"; @source "../node_modules/some-ui-library";

5. ネイティブCSSカスケードレイヤー

v4は(Tailwindのカスタム実装ではなく)ネイティブのCSS @layerを使用します:

/* v4が生成する本物のCSSレイヤー */ @layer theme, base, components, utilities; @layer utilities { .text-primary { color: var(--color-primary); } }

これにより適切なカスケード制御と他のCSSとのより良い統合が得られます。

実際に移行してみる

では実際にやってみましょう。React/Next.jsプロジェクトを例に手順を紹介します。

ステップ1:依存関係の更新

古いTailwindパッケージを削除してv4をインストール:

# v3パッケージを削除 npm uninstall tailwindcss postcss autoprefixer # v4をインストール npm install tailwindcss@latest # Viteを使っている場合、プラグインを追加 npm install @tailwindcss/vite # Next.jsを使っている場合、PostCSS互換パッケージを追加 npm install @tailwindcss/postcss

ステップ2:ビルド設定の更新

Viteプロジェクトの場合:

// vite.config.ts import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import tailwindcss from '@tailwindcss/vite' export default defineConfig({ plugins: [ react(), tailwindcss(), ], })

Next.jsプロジェクトの場合:

Next.js 15+はTailwind v4をネイティブサポートしています。古いバージョンの場合:

// postcss.config.js(Next.js互換) module.exports = { plugins: { '@tailwindcss/postcss': {}, }, }

スタンドアロンCLIの場合:

# package.jsonのscriptsに追加 "scripts": { "css:build": "npx @tailwindcss/cli -i src/input.css -o dist/output.css", "css:watch": "npx @tailwindcss/cli -i src/input.css -o dist/output.css --watch" }

ステップ3:CSSエントリーポイントの変換

ここで大部分の作業が発生します。メインCSSファイルを書き直す必要があります。

Before(v3):

/* globals.css */ @tailwind base; @tailwind components; @tailwind utilities; /* カスタムスタイルは以下 */ .btn-primary { @apply bg-blue-500 text-white px-4 py-2 rounded; }

After(v4):

/* globals.css */ @import "tailwindcss"; /* カスタムスタイル - @layerを適切に使用 */ @layer components { .btn-primary { @apply bg-blue-500 text-white px-4 py-2 rounded; } }

主な変更点:

  • @tailwind base/components/utilities@import "tailwindcss"
  • カスタムコンポーネントクラスは@layer componentsでラップ
  • ユーティリティオーバーライドは@layer utilities

ステップ4:tailwind.config.jsを@themeに移行

ここが一番手間がかかるところです。JavaScript設定をCSSカスタムプロパティに書き換えます。

Before(v3設定):

// tailwind.config.js module.exports = { theme: { extend: { colors: { primary: { 50: '#eff6ff', 100: '#dbeafe', 500: '#3b82f6', 600: '#2563eb', 700: '#1d4ed8', }, accent: '#f59e0b', }, spacing: { '18': '4.5rem', '88': '22rem', }, fontSize: { 'xxs': '0.625rem', }, borderRadius: { '4xl': '2rem', }, fontFamily: { sans: ['Inter', 'system-ui', 'sans-serif'], mono: ['JetBrains Mono', 'monospace'], }, screens: { 'xs': '475px', '3xl': '1920px', }, }, }, }

After(v4 @theme):

/* globals.css */ @import "tailwindcss"; @theme { /* 色は--color-*プレフィックス */ --color-primary-50: #eff6ff; --color-primary-100: #dbeafe; --color-primary-500: #3b82f6; --color-primary-600: #2563eb; --color-primary-700: #1d4ed8; --color-accent: #f59e0b; /* スペーシングは--spacing-*プレフィックス */ --spacing-18: 4.5rem; --spacing-88: 22rem; /* フォントサイズは--text-*プレフィックス */ --text-xxs: 0.625rem; /* ボーダー半径は--radius-*プレフィックス */ --radius-4xl: 2rem; /* フォントファミリーは--font-*プレフィックス */ --font-sans: "Inter", system-ui, sans-serif; --font-mono: "JetBrains Mono", monospace; /* ブレークポイントは--breakpoint-*プレフィックス */ --breakpoint-xs: 475px; --breakpoint-3xl: 1920px; }

変数命名チートシート

v3設定キーv4 CSS変数プレフィックス
colors--color-*--color-primary-500
spacing--spacing-*--spacing-18
fontSize--text-*--text-xxs
fontFamily--font-*--font-sans
fontWeight--font-weight-*--font-weight-medium
lineHeight--leading-*--leading-relaxed
letterSpacing--tracking-*--tracking-wide
borderRadius--radius-*--radius-4xl
borderWidth--border-*--border-3
boxShadow--shadow-*--shadow-soft
screens--breakpoint-*--breakpoint-xs
zIndex--z-*--z-dropdown
opacity--opacity-*--opacity-15

ステップ5:プラグインの処理

ほとんどのv3プラグインは更新が必要か、コアに吸収されました。

Typographyプラグイン:

npm install @tailwindcss/typography@latest
/* v4: CSSでプラグインをインポート */ @import "tailwindcss"; @plugin "@tailwindcss/typography";

Formsプラグイン:

npm install @tailwindcss/forms@latest
@import "tailwindcss"; @plugin "@tailwindcss/forms";

Container Queriesプラグイン:

コアに組み込まれました!プラグイン不要:

<!-- v4でネイティブに動作 --> <div class="@container"> <div class="@md:grid-cols-2">...</div> </div>

ステップ6:非推奨ユーティリティの更新

一部のユーティリティは名前変更または変更されました:

v3クラスv4クラス備考
bg-opacity-50bg-blue-500/50不透明度修飾子構文
text-opacity-75text-gray-900/75同じパターン
decoration-slicebox-decoration-slice名前変更
decoration-clonebox-decoration-clone名前変更
overflow-ellipsistext-ellipsis名前変更
flex-grow-0grow-0簡略化
flex-shrinkshrink簡略化

不透明度修飾子が標準になりました:

<!-- v3 --> <div class="bg-blue-500 bg-opacity-50">...</div> <!-- v4 --> <div class="bg-blue-500/50">...</div>

ステップ7:ダークモードの更新

ダークモードは同じように動作しますが、設定が移動しました:

/* v4: クラスベースのダークモードを有効化 */ @import "tailwindcss"; @variant dark (&:where(.dark, .dark *));

またはデフォルト(prefers-color-scheme)を使用:

/* これがデフォルト - 設定不要 */ @import "tailwindcss";

よくある移行問題と解決策

複数のプロジェクトを移行した後、おそらく遭遇する問題です:

問題1:「Unknown at-rule @tailwind」

エディタ/リンターがまだv3構文を期待しています。

解決策: CSSファイルを@import "tailwindcss"を使うように更新してください。

問題2:カスタムカラーが機能しない

症状: 移行後にbg-primary-500が機能しない。

解決策: カラー変数が正確な命名規則を使用しているか確認:

/* 間違い */ --primary-500: #3b82f6; /* 正解 */ --color-primary-500: #3b82f6;

問題3:Next.jsでPostCSSエラー

症状: PostCSS関連のエラーでビルドが失敗。

解決策: 互換パッケージを使用しているか確認:

npm install @tailwindcss/postcss
// postcss.config.js module.exports = { plugins: { '@tailwindcss/postcss': {}, }, }

問題4:プラグインが読み込まれない

症状: typographyやformsプラグインのクラスが機能しない。

解決策: プラグインはconfigではなくCSS経由で読み込みます:

@import "tailwindcss"; @plugin "@tailwindcss/typography"; @plugin "@tailwindcss/forms";

問題5:コンテンツ検出でファイルが漏れる

症状: 特定のファイルのクラスがCSSを生成しない。

解決策: @sourceでパスを明示的に含める:

@import "tailwindcss"; @source "../node_modules/@your-company/ui-kit/src"; @source "./content/**/*.mdx";

問題6:IDEが新しい構文を認識しない

解決策: VS CodeのTailwind CSS IntelliSense拡張機能を最新バージョンに更新してください。@theme@pluginを含むv4構文を完全にサポートしています。

パフォーマンス比較:実際の数字

本番のNext.jsアプリ(500以上のコンポーネント)で測定した結果:

指標v3.4v4.0変化
コールドビルド12.3秒1.8秒85%高速化
開発サーバー起動4.2秒0.8秒81%高速化
HMR更新340ms12ms96%高速化
本番CSS48KB31KB35%削減
メモリ使用量180MB45MB75%減少

Oxideエンジン、本当にこれだけ速いです。大きめのプロジェクトなら、パフォーマンスだけで移行する価値あります。

移行チェックリスト

移行にはこのチェックリストを使ってください:

  • 依存関係を更新(tailwindcss@latest、古いパッケージを削除)
  • 統合方法を選択:Viteプラグイン、PostCSS、またはCLI
  • @tailwindディレクティブを@import "tailwindcss"に変換
  • tailwind.config.jsのテーマをCSSの@themeに移動
  • プラグインを@plugin構文に更新
  • 不透明度クラスを修飾子構文に変換(/50
  • 名前変更されたユーティリティを更新
  • クラス戦略を使う場合はダークモードを設定
  • 非標準コンテンツパスに@sourceを追加
  • 全ページ/コンポーネントで視覚的リグレッションをテスト
  • VS Code拡張機能を更新
  • 全て動作確認後、古い設定ファイルを削除

アップグレードすべきか?

今すぐアップグレード:

  • ビルド時間が辛い場合(v4は5-10倍速い)
  • より小さなCSSバンドルが欲しい場合
  • 新しいプロジェクトを始める場合
  • CSS優先設定アプローチが好みの場合

待つべき場合:

  • まだ更新されていないプラグインに大きく依存している場合
  • 重要なリリースの途中の場合
  • tailwind.config.jsに複雑なプログラマティックロジックがある場合

ほとんどのプロジェクトで、アップグレードは設定の複雑さに応じて1-4時間かかります。パフォーマンス向上は本物です—Tailwind v4はここ数年で最もスムーズなCSSフレームワークアップグレードでした。

まとめ

Tailwind v4、結構大きなアップグレードです。新エンジン、新しい設定方式、新しいデフォルト。@themeを使うCSS優先アプローチ、最初は違和感ありますが使っていくと理にかなってきます。DevToolsで設定確認できるし、IDE補完も効くし、CSSファイルがsingle source of truthになります。

Oxideエンジンの速さ、マーケティングじゃないです。ホットリロード本当に瞬時。コールドビルド本当に5-10倍速い。大きめのプロジェクトなら、これだけで移行する価値あります。

最初はシンプルなプロジェクトで新しい構文に慣れて、それからメインのコードベースに取り組むのがおすすめです。複雑じゃないです、ただ違うだけ。

楽しいスタイリングを。

tailwind-csscssfrontendweb-developmentmigrationcss-framework

関連ツールを見る

Pockitの無料開発者ツールを試してみましょう