Zod Codecs で 'use client' を介した Server-Client 間データ転送を強化する
DRANK
!2025/09/26 内容を大幅に修正しています。変更前は Zod Codec の encode / decode をテレコにして扱ってしまい、「Underlying に brand スキーマを使っても効果がない」問題がありました。変更後は正しい順番に戻して、名前の違和感を隠蔽するために wrap / unwrap という別名を付けました。加えて、Underlying には brand スキーマを設定して型チェックを強化しました。diff は次の折りたたみの中にあります。!利用した主なパッケージのバージョン"next": 15.5.3 (App Router を利用)"react": 19.x 系 (Next.js の事情があるので、具体的なバージョンは敢えて伏せる)"temporal-polyfill": 0.3.0"zod": 4.1.9'use client' は、サーバーからクライアントへと、描画用データを送信する境界を表すマーカーである ということは、広く知られています。 'use client' は「素の JSON」よりも多種多様なデータの転送に対応しています。RSC が「サーバー側 / ブラウザ側 のコードをシームレスに繋ぎ合わせる」技術であることが良くわかりますね。サーバコンポーネントからクライアントコンポーネントに渡される props の値は、シリアライズ可能 (serializable) である必要があります…