#雑記
iOS や macOS のプレビュー版 Safari で View Transition API が使えるようになった。
Next.js で異なる document を跨ぐ View Transition API を実現するためのディスカッションが行われている
Next.js App Router で検証された実装例がいくつか上がっている。
View Transition API を Next.js の世界に持ってくるためのボトルネックは、Next.js のレンダリング (DOM 更新) とネットワークリクエスト処理の混在が原因であるという指摘がある
一方、React における MPA の View Transition API のボトルネックは、React の Suspense にあるという指摘がある。
これは Next.js だけでなく React Suspense を実装する際は HTTP レスポンスが Streaming になるため、レスポンスの途中にあるはずの Suspense を埋め込んだ document の受信を完了したことが document.startViewTransition 呼び出し側で判断できないため、と理解した。この判断ができなければ、確かに遷移前の画面から document.startViewTransition を呼び出すタイミングは図れないし、これは Next.js だけでなく React 側の都合であるとも考える事もできそうだ。
Next.js のメンテナ (Vercel 所属) の方が提供されているライブラリがある。まあこれも「ハックである」と上記コメントの方が指摘しているが。
popstate イベントなどを見て startViewTransition を実行する感じに見えるが、前後で細かい制御を入れているようだ。後ほど細かく見ていきたい