$ |
TailwindCSS vs vanilla-extract、どっちが正解かガチで検証した結論
$ █
CSS-in-JS戦争、2026年の最終回答
TailwindCSS vs vanilla-extract。この比較、ネット上に山ほど記事があるけど、ほとんどが「どっちもいいよね」で終わってる。甘い。僕は3つのプロダクトで両方使った上で、明確に結論を出す。
TailwindCSSの本当の強さ
Tailwindの強さは「デザインシステムをCSSフレームワークに内包してる」こと。spacing、color、typographyの一貫性が、クラス名を書くだけで担保される。
<!-- Tailwind -->
<div class="flex items-center gap-4 p-6 bg-white rounded-lg shadow-sm
hover:shadow-md transition-shadow">
<h2 class="text-lg font-semibold text-gray-900">タイトル</h2>
<p class="text-sm text-gray-500">説明文</p>
</div>
「HTMLが汚い」という批判は分かるけど、開発速度とデザインの一貫性を天秤にかけたら、Tailwindが圧勝する場面が多い。
vanilla-extractの型安全という武器
vanilla-extractの最大の武器はTypeScriptとの完全統合。スタイルが型安全。存在しないトークンを参照したらコンパイルエラーになる。
// styles.css.ts
import { style } from '@vanilla-extract/css';
import { vars } from './theme.css';
export const card = style({
display: 'flex',
alignItems: 'center',
gap: vars.space.md,
padding: vars.space.lg,
backgroundColor: vars.color.surface,
borderRadius: vars.radius.lg,
':hover': {
boxShadow: vars.shadow.md,
},
});
ゼロランタイム。ビルド時にCSSファイルが生成される。パフォーマンスは最強クラス。
実際に使い分けた結果
結論。チームの規模とプロダクトの性質で決まる。小〜中規模、速度重視ならTailwind。大規模、型安全重視ならvanilla-extract。具体的には:5人以下のチームでスタートアップ→Tailwind。10人以上でデザインシステムをガチで運用する→vanilla-extract。
僕の最終的な選択
個人開発と小規模チームではTailwind一択。大規模プロダクトではvanilla-extract。「どっちもいいよね」って言いたくなる気持ちは分かるけど、選択基準は明確にすべき。迷ったらTailwind。理由は「迷うレベルの規模ならTailwindで十分」だから。身も蓋もないけど、これが現実。












>_ コメント