執筆時点では、Next.js v15(15.5.9)において、opengraph-image.tsx から CSS(SCSS を含む)を import すると、本番ビルド後の環境で CSS が script として扱われ、SyntaxError が発生し、スタイルが適用されないことがあります。
Next.js v16(16.1.0)では、この問題は解消されています。
v15 を使い続ける場合は、opengraph-image.tsx から CSS を直接・間接的に読み込まないようにしましょう。
関連 Issue
https://github.com/vercel/next.js/issues/72480
再現リポジトリ(Next.js v15)
https://github.com/silverbirder/nextjs-15-opengraph-image-scss
Next.js v15.5.9 を使用したアプリケーションにおいて、本番ビルド後に一部のスタイルが適用されなくなる問題に遭遇しました。
この問題には、次のような特徴がありました。
next dev では再現しないnext build → next start した本番環境でのみ発生するそのため、原因の特定が難しく、調査にかなり時間がかかりました。
調査当初は、挙動からブラウザキャッシュや CDN キャッシュの問題を疑いましたが、いずれも原因ではありませんでした。
また、Next.js のページ数が多い状態では再現性が著しく低く、不安定になります。一方で、発生している 1 ページのみに絞って検証すると、再現性が格段に高まることが分かりました。
切り分けを進めた結果、opengraph-image.tsx から CSS(SCSS)を読み込んでいることが原因であると判明しました。
本記事では、その調査過程と原因、再現方法、そして回避策についてまとめます。
本番環境(next build && next start)において、次のような問題が発生しました。
Uncaught SyntaxError: Unexpected token '.' という JavaScript エラーが発生する一方で、next dev では問題なく表示されるため、開発中には気づきにくい点が特徴でした。
切り分けを進める中で、次の Next.js の Issue とほぼ同じ事象であることが分かりました。
この Issue でも、opengraph-image.tsx から SCSS ファイルを import している場合に問題が発生することが報告されています。
opengraph-image.tsx から CSS(SCSS)を読み込むと、ビルド後の挙動が不正になります。
具体的には、CSS ファイルが JavaScript の script として扱われ、次のような script タグが出力されます。
<script src="/_next/static/css/f2515c4387c9bb9d.css" async=""></script>
その結果、CSS ファイルが JavaScript として解釈され、Uncaught SyntaxError: Unexpected token '.' が発生します。
ビルド後に生成される build-manifest.json を確認すると、rootMainFiles に本来含まれるべきでない CSS ファイルが含まれていることが分かります。
このプロパティの正確な用途は把握できていませんが、正常に動作している場合は JavaScript ファイルのみが含まれている、というのがこれまでの経験則です。
この状態になると、今回のスタイル未適用の問題が発生しやすくなります。
そのため、CI などで build-manifest.json を確認し、rootMainFiles に CSS ファイルが含まれていないかを検査する方法も有効です。
最小構成で再現するリポジトリを用意しています。
以下を実行すると、CSS のスタイルが適用されない状態になります。
npm run buildnpm run start同じ構成でも、Next.js v16 では問題が発生しませんでした。
可能であれば、Next.js v16 にアップデートするのが最もシンプルな解決策です。
今回の問題は、v16 では再現しませんでした。
Next.js v15 を継続して使う場合は、次の点に注意する必要があります。
opengraph-image.tsx から CSS / SCSS を import しない特に、Nx や Turborepo などのモノレポ構成では、CSS を読み込むコンポーネントを export しているライブラリを import しただけで、問題が発生するケースがあります。
opengraph-image.tsx からの CSS import に注意が必要ですbuild-manifest.json の rootMainFiles に CSS が含まれていた場合は注意が必要です同じように、本番環境のみで CSS が適用されない問題に遭遇した場合の参考になれば幸いです。
タグ「フロントエンド」の記事
最近、ヒューマンインターフェース ガイドライン(HIG)という言葉を知りました。 「ヒューマンインターフェイスガイドライン」には、どのAppleプラットフォームでも優れた体験を設計できるようにするためのガイドとベストプラクティスが含まれてい
2026-01-24
主にWeb関連の個人開発をしている際に心がけていることを書きます。 月末に近づくにつれ、AIの利用上限に達してしまうことがあります。 その状況になった時、以下のいずれかの選択肢が私の中では残っています。 課金して利用上限を増やす 無料モデル
個人サイトをリニューアルをしています。 ノート風のデザインを目指して、スタイルを調整していました。 ノートの見た目は、現実にあるノートを再現しようとCSSを書いていました。 現在、以下の画像のようなノートになっています。 ノート風デザインの
2026-01-20