next/script
thrid-partyのjs読み込みの最適化
https://nextjs.org/blog/next-11#script-optimization
まだ正式なdocsページがないmrsekut.icon
例として挙げてる例がなんのことかわからない
strategy
beforeInteractive
pageがinteractiveになる前にfetchして実行する
ボットの検出やconsent managemenなど
consent managemenってなに #??
SSRで生成するHTMLのheadにscriptタグを挿入する
client側では読み込まれない
self bundleされたJSの実行よりも前に読み込まれる
普通に自分で書いたReactコードなどのことか #??
afterInteractive
default
pageがinteractiveになったあとにfetchして実行
client側で、hydration後に実行される
通常のscriptタグと同じタイミング #??
実装
タグマネージャーや分析など
tag managerってなに #??
lazyOnload
実装
window.requestIdleCallbackを使ってる
idle時間中にloadを待機する
Document.readyStateがcompleteになっていたら発火
dynamic importsみたいに「必要になったタイミングで読み込む」とはまた違うのねmrsekut.icon
チャットサポートやソーシャルメディアウィジェットなど
onload
そのscriptの読み込み後に実行するcallback
#??
具体的な実装としてどう違うのか
OGPの読み込みとかはどれ?
例
code:js
import Script from 'next/script';
<Script
src={url} // consent mangagement
strategy="beforeInteractive"
onLoad={() => {
// If loaded successfully, then you can load other scripts in sequence
}}
/>
実装箇所
next.js/script.tsx at b4e0eb0bc48b9cc23a82f23dc553eeeae1a9b7f9 · vercel/next.js
NextScriptとは別もの
https://nextjs.org/docs/advanced-features/custom-document
特殊ケースだが、dangerouslySetInnerHTML属性を指定すると動かなかったmrsekut.icon
参考
【Next.js 11】next/script には JavaScript の基本がつまっていた