Skip to main content
Blog
Next.jsPerformanceEngineering

たった一行のディレクティブと223キロバイト

状態もエフェクトもハンドラもないマーケティングページが、自分自身をJavaScriptとしてブラウザへ送っていました。直し方は一行消すことでした。

ToolGo Team
2026年9月15日
4 min read
シェア:
たった一行のディレクティブと223キロバイト

まず数字から

PageSpeed のモバイル性能は71でした。これは診断ではなくスコアなので、本番ビルドを走らせてルート表を読みました。トップページだけが First Load JS 315 kB。サイトの他は90前後でした。

中身

ページのファイルは "use client" で始まっていました。この一行でReactツリーはクライアントコンポーネントになり、importしたものすべてが一緒に送られます。六百行のレイアウト、ページ上のすべての文字、すべてのイラスト。

ブラウザが本当に必要な理由を調べました。useStateなし。useEffectなし。イベントハンドラも一つもなし。国際化のフックを二つ呼ぶためだけにクライアントコンポーネントでした。そのフックにはサーバー版が別名で存在します。

置き換え

14個のコンポーネントがクライアントのフックからサーバーのフックに移り、asyncになりました。ディレクティブは消えました。タイピングする見出しとFAQの行は、もともと独立したクライアントコンポーネントで、そのままです。

315 kB -> 91.8 kB

覚えておく価値があること

"use client" を不注意に書いた人はいません。ページが本当にフックを必要とした初期に追加され、その理由がリファクタで消えた後も残ります。ときどきルート表を開いて、見た目より重いページはどれかと問う価値があります。

ToolGo Team

プロダクト & エンジニアリング

私たちは実用的なSaaSツールを構築し、製品の意思決定から技術的な詳細まで、学んだことを共有しています。