コンテンツにスキップ
svelte-vitals
日本語
Esc
移動開く⌘Jプレビュー
このページの内容

performance/lcp-image · LCP 画像の遅延読み込み

LCP になりそうな最初の画像は、遅延読み込みにしないでください。

重大度: warning

チェック内容

ルートのマークアップで最初に現れる <img>loading="lazy" が付いている場合に検出します。静的解析では、文書順で最初の画像を Largest Contentful Paint(LCP)画像とみなします。

なぜ重要か

LCP(ファーストビュー)の画像を遅延読み込みすると、最大コンテンツの描画が遅れ、Core Web Vitals を損ないます。静的解析では最初の画像が LCP 候補の最も確かな手がかりなので、即時読み込みにしておくべきです。

修正方法

LCP となる最初の画像から loading="lazy" を外し、あわせて fetchpriority="high" の指定も検討してください。

<img src="/hero.jpg" width="1200" height="630" fetchpriority="high" alt="…" />

モードによる違い

ソース解析(CLI、ダッシュボードの静的ベースライン)は、ルート自身のテンプレート、つまりページとレイアウトチェーンにある <img> を読みます。子コンポーネントが描画する <img> は見えません。loading="lazy" はリテラルの属性だけで判定し、動的な loading={…} やスプレッド({...rest})は決して検出しません。レンダリング解析(Vite プラグインのビルド、ダッシュボードで訪問したルート)は出荷される本文のすべての <img> を読みます。ビルドが対象にするのはプリレンダリングされたルートだけで、その検出は HTML ファイルに紐づきソース行を持たないため、インラインの svelte-vitals-disable-next-line が届くのはソース解析の検出だけです。両者が食い違うときは、レンダリング解析の結果を信じてください。

無効化

既存の検出は suppressions ファイルに記録して抑制できます(npx svelte-vitals --update-suppressions)。overrides でルートやパス単位に絞るか、ルールごと無効化するには、次のように設定します。

export default {
  rules: {
    'performance/lcp-image': 'off'
  }
};