本文へスキップ
OrbZガイドSSR とハイドレーション

SSR とハイドレーション

Orbz は、サーバーで安全に使える定義と、実行環境を確認するブラウザー登録処理を分離しています。モジュールのスコープで HTMLElement のサブクラスを評価することはありません。

エントリーポイントの動作

インポート用途サーバーでの動作
@neongate-ai/orbz型、定数、アダプター、ヘルパー、明示的な登録自動登録しない
@neongate-ai/orbz/browserすべてのフレームワーク向けのブラウザーエントリーCustom Elements レジストリがなければ何もしない
@neongate-ai/orbz/standalone自己完結したブラウザー/CDN ビルド実行環境を確認するブラウザー登録経路を使う

サーバーで生成するマークアップ

サーバーはこのタグを通常の HTML として出力できます。

<div role="status" aria-live="polite"> <orb-z state="idle"></orb-z> <span>Assistant is idle</span> </div>

安定したクライアントモジュールからブラウザー用エントリーをインポートします。登録が実行されると、既存の要素がその場でアップグレードされます。

import "@neongate-ai/orbz/browser";

明示的に登録することもできます。

import { defineOrbz } from "@neongate-ai/orbz"; defineOrbz();

React と Next.js

クライアント境界は登録と対話的な状態のためにだけ使い、ネイティブタグを直接表示します。

"use client"; import "@neongate-ai/orbz/browser"; export function AssistantPresence() { return <orb-z state="idle" size="300px" />; }

サーバーとクライアントの初回描画で属性を確定的に保ってください。オンライン状態など、ブラウザーにしか存在しない状態はハイドレーションの後で読み取ります。

マイクロフロントエンド

Custom Elements レジストリはページ全体で共有されます。最初に orb-z を定義した実装が使われるため、defineOrbz() の重複呼び出しが保護されていても、同じページを共有するアプリケーション間では Orbz のバージョンを統一する必要があります。

確認項目

  • どのフレームワークでも <orb-z> を直接表示する。
  • クライアントコードから /browser を一度インポートするか、defineOrbz() を明示的に呼び出す。
  • サーバーとクライアントで初期属性を同一にする。
  • 意味のある状態テキストを視覚要素の外に置く。
  • 閉じた Shadow DOM の内部を調べない。
最終更新日: