ドキュメントを見るNext.js と SSR

live2d-web ドキュメント

Next.js と SSR

Next.js の Server Component と Client Component での使い分けを説明します。

ブラウザで動く処理は Client Component に置く

基本 API と live2d-web/inspect は SSR 中に読み込んでも安全です。モデルの描画と /react は Client Component で使用してください。Server Component からはモデルの URL だけをデータとして渡します。

'use client'
 
import { Live2DCanvas, Live2DModel } from 'live2d-web/react'
 
export function Avatar() {
  return (
    <Live2DCanvas coreUrl="/live2dcubismcore.min.js">
      <Live2DModel src="/models/model.model3.json" />
    </Live2DCanvas>
  )
}

Core とモデルは静的アセットとして配信

Core と書き出したモデルを public/ に置くか、同一オリジンの絶対 URL を渡します。moc3 やテクスチャを Server Component に import せず、Client Component にはシリアライズ可能な URL と設定だけを渡してください。

初期化をクライアント画面に限定

基本パッケージと live2d-web/inspect は SSR で評価できますが、Canvas の生成はブラウザーで行います。controller をモジュール変数に保存せず、unmount 時に解放します。

production build で確認

next build 後に、周囲の UI がサーバーレンダリングされ、window エラーがないことを確認します。最終的な base path と CSP で Core、model3、参照アセットを読み込めるかも確認してください。