TL;DR

分析タグや広告などの重いサードパーティスクリプトを、メインスレッドから Web Worker に移して実行するライブラリ。メインスレッドを自分のコードのために空けておける。QwikDev がメンテナンスしている。

なぜ必要か

分析、広告、A/B テスト、トラッカーといったサードパーティスクリプトは、チューニングしたサイトのパフォーマンスを台無しにすることがある。ネットワークリクエストが増え、重い JavaScript がメインスレッドを占有し、document.write() のような古い API を使うものもある。async や defer を付けて読み込んでも window.onload をブロックする埋め込みもある。

仕組み

サードパーティスクリプトを Web Worker 上で動かし、メインスレッドは自分のコードだけに使う。Worker 上のスクリプトはサンドボックス化されており、メインスレッドの API へのアクセスを許可・拒否できる。DOM の読み書きはまとめて行われ、レイアウトスラッシングを抑える。

Worker 上のスクリプトはメインスレッドの DOM を同期的に読み書きできる。そのため、サードパーティスクリプトをコードの変更なしにそのまま動かせる。

例

Google Tag Manager、Google Analytics、Facebook Pixel、Mixpanel、HubSpot、Segment、Amplitude など、最初の描画に必要ないスクリプトに向いている。

注意点

すべての場面で動くことが保証されているわけではない。公式ドキュメントも、Worker 側のパフォーマンスよりメインスレッドのパフォーマンスを優先する設計だとしている。アプリケーション全体を Partytown 上で動かすこともできるが、それは主な用途ではない。

関連

出典