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 上で動かすこともできるが、それは主な用途ではない。