CSSバジェットとクリティカルCSS戦略

クリティカルCSS抽出、未使用CSS削除、コンポーネントスコープスタイルでCSSパフォーマンスバジェットを計画。リッチなデザインシステムを維持しながらCSSを60 KB以下に抑える方法を解説。

Category Budget

詳細な説明

CSSバジェットとクリティカルCSS

CSSはデフォルトでレンダーブロッキングです — ブラウザは<head>内のすべてのCSSをダウンロードしてパースするまで何も描画できません。これによりCSSサイズはFirst Contentful Paint(FCP)とLargest Contentful Paint(LCP)に直接影響します。

CSSバジェットガイドライン

サイトの複雑さ CSSバジェット アプローチ
シンプル(ブログ) 15-30 KB 単一スタイルシート、ユーティリティクラス
中程度(EC) 30-60 KB クリティカルCSS + 遅延メインシート
複雑(SPA) 60-100 KB CSS-in-JSまたはCSS Modules、コード分割

クリティカルCSS

クリティカルCSSはファーストビューコンテンツのレンダリングに必要な最小限のCSSです:

  1. <head>にインライン化 — 追加のHTTPリクエストなし
  2. 小さく — 通常10-15 KB非圧縮(3-5 KB gzip)
  3. 自動抽出criticalcritters、またはNext.jsの自動クリティカルCSSなどのツール

未使用CSSの削除

BootstrapやTailwind CSSなどの大規模CSSフレームワークは、単一ページが必要とするよりもはるかに多くのCSSを出荷します。

  • Tailwind CSS — PurgeCSS(組み込み)が未使用ユーティリティを削除、出力を5-15 KBに削減
  • Bootstrap — sassインポートで必要なモジュールのみ含める
  • CSS Modules — コンポーネントごとにスコープ、バンドラーによるツリーシェイキング

ユースケース

CSSバジェット管理は、First Contentful PaintがユーザーエンゲージメントとSEOに重要なサイトに不可欠です。マーケティングサイトは5 KBのクリティカルCSSをインライン化し40 KBのメインスタイルシートを遅延することで、1秒未満のFCPを達成するかもしれません。コンポーネントライブラリチームはコンポーネントごとのCSSバジェット(例:コンポーネントあたり最大2 KB)を設定してデザインシステムの肥大化を防止できます。

試してみる — Performance Budget Calculator

フルツールを開く