仮想DOMを介さないVue 3.6のVapor Mode

仮想DOMを介さないVue 3.6のVapor Mode

作成日:
読了:4
更新日:

Vueはこれまで、テンプレートを仮想DOMに変換し、再描画のたびに新旧のツリーを比較して差分だけをDOMへ反映してきました。この比較と反映の層を取り除くのが、Vue 3.6で実用段階に入ったVapor Modeです。

Vapor Modeが仮想DOMを置き換える

Vapor Mode:テンプレートをコンパイル時に直接DOM操作のコードへ変換し、仮想DOMの差分計算を介さずに描画する方式。

仮想DOMモードは、状態が変わると新しいツリーを作って前回と比べ、変わった箇所を見つけてからDOMを書き換えます。Vapor Modeはこの中間表現を持たず、どの状態がどのDOMに対応するかをコンパイル時に確定させ、変化した値が対応する箇所を直接更新します。差分計算のためのランタイムを積まない分、配信するコードが小さくなり、@vue/reactivityの処理速度とメモリ使用量も改善します。Vueの公式リリースノートは、サードパーティのベンチマークでSolidやSvelte 5と同水準の性能を示したと記しています。

既存モードとの機能差はSuspenseだけ

新しい描画方式が、すぐ全機能で使えるとは限りません。Vue 3.6のリリースノートは、Vapor Modeが仮想DOMモードの安定機能と機能パリティに達したと述べています。例外はSuspenseで、Vapor単体では使えません。ただし仮想DOM側のSuspenseの内側にVaporコンポーネントを置くことはできるため、機能を捨てる必要はありません。

なお<Transition><KeepAlive>はベータ期間中も修正が続いており、Vaporのみの構成で全面的に頼れると公式が明言したわけではありません。対応が進行中の項目とみておくのが安全です。

コンポーネント単位で有効にする

Vapor Modeは、アプリ全体を一度に切り替えるのではなく、コンポーネントごとに選びます。<script setup>vaporを付けたコンポーネントだけがVaporとしてコンパイルされます。

Vaporを有効にする
<script setup vapor>
// Composition API のコードはそのまま使える
</script>

対象はComposition APIに限られ、Options APIは現時点で対応しません。仮想DOMのコンポーネントとVaporのコンポーネントは混在でき、相互に呼び出せます。この設計のおかげで、既存のアプリを一気に書き換えず、負荷の高い画面から段階的に移せます。

リアクティビティ基盤も入れ替わった

Vue 3.6は描画方式だけでなく、状態追跡の土台も置き換えました。リアクティビティをalien-signalsベースに作り直し、@vue/reactivityの性能とメモリ効率を引き上げています。Vaporを使わない通常のコンポーネントも、この基盤刷新の恩恵を受けます。

正式版はまだ先

ここまでの内容は、安定版ではなくベータでの状況にもとづきます。2026年6月時点の最新はv3.6.0-beta.16で、正式版はまだ出ていません。ベータの間はAPIや挙動が動く余地があり、<Transition>周りのように修正が続いている部分もあります。

本番のコードベースに今すぐ全面採用するのは時期尚早で、検証環境で重い画面に限って試し、ベンチマークで効果を測る使い方が現実的です。具体的な高速化やバンドル削減の数値は解説記事ごとにばらつきがあり、公式が明言しているのは「Solid・Svelte 5と同水準」という表現にとどまります。数字を引くときは出典を確かめておきたいところです。

レンダリング戦略の比較という観点では、当ブログのSvelte / SvelteKit 入門Reactコンパイラの実践も参考になります。

参考

WebSocket・SSE・ポーリングの使い分け - リアルタイム通信の選び方

WebSocket・SSE・ポーリングの使い分け - リアルタイム通信の選び方

10

Webでリアルタイムにデータを届ける3つの方法 — ポーリング(short / long polling)、Server-Sent Events(SSE / EventSource)、WebSocket を実務目線で比較します。通信方向・プロトコル・自動再接続・バイナリ対応の違い、コード例、SSE の HTTP/1.1 接続数上限やプロキシのバッファリング、WebSocket のスケールと認証(カスタムヘッダが使えない)といった落とし穴、そして用途別の選び方まで、MDN・RFC 6455 / 6202 を一次ソースにまとめます。

Astro 6 の新機能 - 開発と本番の差を埋める新 astro dev、Fonts API、移行の注意点

Astro 6 の新機能 - 開発と本番の差を埋める新 astro dev、Fonts API、移行の注意点

9

Astro 6 の新機能と移行ポイントを公式リリースノートをもとに整理します。Vite の Environment API を使い本番ランタイムを開発時に走らせる新しい astro dev、組み込み Fonts API、Live Content Collections と CSP の安定化、実験的な Rust コンパイラ。さらに 6.1 の変更と、Node 22.12 必須・Vite 7・レガシー Content Collections 廃止・ViewTransitions から ClientRouter への置き換えといった 5.x からの破壊的変更まで、Astro 6.0/6.1 を一次ソースでまとめます。