seo/ssr-disabled · SSR の無効化
export const ssr = false にすると、JS を実行しないクローラーからコンテンツが見えなくなり、初回描画も遅くなります。
重大度: warning · カテゴリ: seo
チェック内容
export const ssr = false でサーバーサイドレンダリングを無効化している SvelteKit のルートファイルを検出します(satisfies/as 形式や同一ファイル内のエイリアス export も対象)。ルートの +layout で無効化するとアプリ全体が SPA になるため、その場合はより強い、アプリ全体を対象としたメッセージを出します。
検出対象外: csr = false(サーバー専用レンダリングであり、SEO にはむしろ良い)、export const ssr = dev のような非リテラル値(静的に評価不能)、export されていない const ssr = false(SvelteKit では効果がない)。
なぜ重要か
SvelteKit 公式の SEO ガイダンスによれば、サーバーレンダリングされたコンテンツはより頻繁に、そして確実にインデックスされます。正当な理由がない限り SSR は有効のままにすべきです。インデックスへのリスクに加えて、SPA モードは空のページを配信し、JavaScript を取得して実行するまで何も描画しないため、最初の描画までにネットワークラウンドトリップが 1 回増えます。
prerender = true を併用してもこの問題は解消されません。ssr = false では事前レンダリングの出力も空のシェルになります。
修正方法
ssr = false は、SEO が本当に不要なルートに限定します。
export const ssr = false; // これが意図的なら suppression するかルールを off に
意図して完全な SPA にしている場合は、config でルールを無効化します。
export default {
rules: {
'seo/ssr-disabled': 'off'
}
};
または宣言の直前に // svelte-vitals-disable-next-line seo/ssr-disabled を書いてください。
モードによる違い
ありません。このルールが読むのは同じ .svelte / .ts のソースファイルなので、CLI、Vite プラグインのビルド、ライブダッシュボードの静的ベースラインのいずれでも結果は同一で、レンダリング済み HTML の解析で再評価されることもありません。--route で実行範囲を絞ると、このルールは動きません。コンポーネントスコープのルールには、検出を紐づけるルートが無いためです。
無効化
個別に抑制するには、対象行の直前に <!-- svelte-vitals-disable-next-line seo/ssr-disabled --> を置きます。ルールごと無効化するには、次のように設定します。
export default {
rules: {
'seo/ssr-disabled': 'off'
}
};