メインコンテンツへスキップ
Auth0 Universal Components は現在 Early Access です。これを使用すると、Okta’s Master Subscription Agreement に記載された該当する Free Trial 条項に同意したものとみなされます。詳細については、Product Release Stages を参照してください。
Auth0ComponentProvider は、Auth0 Universal Components のオーケストレーション層です。Auth0 SDK がセッションとトークンを管理し、Auth0ComponentProvider がそのアイデンティティの状態を、機能しブランドに沿った UI コンテキストへと反映します。Auth0ComponentProvider は、MFA の登録などのコンポーネントで必要な権限、キャッシュ済みデータ、スタイル設定を利用できるようにします。

利点

Auth0ComponentProvider は、すべての Auth0 Universal Components で必要となるルートラッパーです。このラッパーを使用する利点は次のとおりです。
  • Identity Alignment: Auth0 SDKsMy Account API の間を橋渡しし、リクエストがユーザースコープのトークンで署名されるようにします。
  • Performance Optimization: ID ワークフロー向けに最適化された共有 TanStack Query キャッシュを実装し、不要な API 呼び出しやレイアウトシフトを防ぎます。
  • Design System Consistency: Tailwind CSS の変数と Shadcn 互換のテーマをコンポーネントツリー全体に適用します。
  • Global Feedback: セキュリティアラートやワークフローの状態を通知する、統一されたトースト通知システムを管理します。

統合アーキテクチャ

認証プロバイダー (Auth0Provider) の内側に Auth0ComponentProvider をネストします。この構成により、Auth0 API の呼び出しに必要な認証状態とトークン取得メソッドにアクセスできるようになります。

Auth0ComponentProvider を設定する

App.tsx
import { Auth0Provider } from "@auth0/auth0-react";
import { Auth0ComponentProvider } from "@auth0/universal-components-react/spa";

function App() {
  return (
    <Auth0Provider
      domain="your-tenant.auth0.com"
      clientId="YOUR_CLIENT_ID"
      authorizationParams={{ redirect_uri: window.location.origin }}
      interactiveErrorHandler='popup' // Universal Login ポップアップ経由でステップアップ認証チャレンジを処理するために必要
    >
      <Auth0ComponentProvider domain="your-tenant.auth0.com">
        {/* Auth0 Universal Components を使用するアプリ */}
      </Auth0ComponentProvider>
    </Auth0Provider>
  );
}

プロパティ

プロパティ必須説明
domainstringはいAuth0 テナントのドメイン (“YOUR_AUTH0_TENANT.auth0.com”) 。
previewModebooleanいいえtrue の場合、API クライアントの初期化をスキップします。ドキュメントのプレビューやデモで使用します。
i18nI18nOptionsいいえcurrentLanguage や fallbackLanguage などを含む国際化設定です。
themeSettingsThemeSettingsいいえmode (light/dark) 、テーマバリアント (default/minimal/rounded) 、CSS 変数などを含むテーマ設定です。
toastSettingsToastSettingsいいえプロバイダーの選択 (sonner/custom) 、表示位置、表示時間、カスタム toast メソッドなどを含むトースト通知の設定です。
cacheConfigQueryCacheConfigいいえTanStack Query のキャッシュを制御します (デフォルトでは stale は 2 分、GC は 5 分) 。常に最新のデータを取得するには、enabled: false を設定します。
loaderReact.ReactNodeいいえ認証の初期化中に表示するカスタムのローディングコンポーネントです。

ユーザーエクスペリエンス


i18n以下のプロパティを使用して、Universal Components をアプリケーションのデザインシステムやロケールに合わせて調整します。
プロパティ必須デフォルト説明
currentLanguagestringはい-現在の言語コード (例: “en”、“es”、“fr”)
fallbackLanguagestringいいえ”en”翻訳がない場合に使用するフォールバック言語コード

themeSettings
プロパティデフォルト説明
mode”light” | “dark""light”テーマのカラーモード
theme”default” | “minimal” | “rounded""default”スタイルが異なるテーマバリアント
variablesStylingVariables共通、ライト、ダークテーマ用のCSSカスタムプロパティ
共通 (すべてのテーマに適用) :タイポグラフィ:
  • --font-size-page-header
  • --font-size-page-description
  • --font-size-heading
  • --font-size-title
  • --font-size-subtitle
  • --font-size-body
  • --font-size-paragraph
  • --font-size-label
角丸:
  • --radius-xs--radius-9xl
Light & Dark (テーマ固有の色とシャドウ) :色:
  • --background, --foreground
  • --card, --card-foreground
  • --primary, --primary-foreground
  • --secondary, --secondary-foreground
  • --accent, --accent-foreground
  • --muted, --muted-foreground
  • --destructive, --destructive-foreground
  • --popover, --popover-foreground
  • --input, --border, --ring
  • --color-page
  • --color-info, --color-info-foreground
  • --color-success, --color-success-foreground
  • --color-warning, --color-warning-foreground
  • --color-destructive-border
  • --color-popover-border
  • --color-input-foreground
  • --color-input-muted
シャドウ:
  • --shadow-bevel-* (xs, sm, md, lg, xl, 2xl)
  • --shadow-button-* (resting, hover, focus)
  • --shadow-button-destructive-*
  • --shadow-button-outlined-*
  • --shadow-input-* (resting, hover, focus)
  • --shadow-input-destructive-*
  • --shadow-checkbox-* (resting, hover)
  • --shadow-switch-* (resting, hover, focus, thumb, thumb-dark)
詳細なスタイリング例やカスタマイズ パターンについては、Universal Components を使用したスタイルと テーマのカスタマイズを参照してください。

toastSettingsToast設定では、Sonner (デフォルト) とカスタムの2種類のプロバイダータイプをサポートしています。各プロバイダーには、型安全性を高めるための独自の設定構造があります。
PropertyTypeDefaultDescription
provider"sonner""sonner"組み込みの Sonner トーストライブラリを使用します
settings.positionToastPosition"top-right"トーストの表示位置: “top-left”、“top-right”、“bottom-left”、“bottom-right”、“top-center”、“bottom-center”
settings.durationnumber4000トーストが自動で閉じるまでの時間 (ミリ秒) (Sonner のデフォルト)
settings.maxToastsnumber-同時に表示できるトーストの最大数
settings.dismissiblebooleantrueユーザー操作でトーストを手動で閉じられるかどうか (Sonner のデフォルト)
settings.closeButtonbooleantrueトーストに閉じるボタンを表示するかどうか
Sonner Provider Example
const toastSettings = {
  provider: 'sonner', // 省略可能。デフォルト値です
  settings: {
    position: 'top-center',
    duration: 6000,
    maxToasts: 5,
    dismissible: true,
    closeButton: true
  }
};

stateとパフォーマンス

すべての Auth0 コンポーネントに対して TanStack Query のキャッシュを細かく調整します。デフォルトでは、データを 2 分間フレッシュな状態に保ち、5 分後にガベージコレクションを実行し、ウィンドウフォーカス時の再フェッチをスキップします。
プロパティデフォルト説明
enabledbooleantrueキャッシュ機能全体の有効 / 無効を切り替えます。false に設定すると、古いデータの利用が無効になり、キャッシュされたエントリは速やかにクリアされます。
staleTimenumber120000データが古い状態になるまでのミリ秒数です。デフォルトは 2 分です。Dashboard では長めにし、重要なワークフローでは短めにしてください。
gcTimenumber300000非アクティブなクエリがガベージコレクションの対象になるまでのミリ秒数です。デフォルトは 5 分です。
refetchOnWindowFocusboolean | “always”falseブラウザーが再びフォーカスされたときにクエリを再フェッチするかどうかを制御します。厳密に最新状態を保つには “always” を使用します。
キャッシュを無効にする: { enabled: false } を渡します。これにより staleTime は自動的に 0 に設定され、ガベージコレクションまでの時間も 5 秒に短縮されるため、レンダリングのたびに常に最新のデータを取得します。プロのヒント: キャッシュは有効のままにしておき、ほぼリアルタイムの更新が必要な管理パネルと連携する場合は staleTime を短くしてください。
<Auth0ComponentProvider
  domain="your-tenant.auth0.com"
  cacheConfig={{
    staleTime: 10 * 60 * 1000,
    gcTime: 15 * 60 * 1000,
    refetchOnWindowFocus: true,
  }}
>
  <App />
</Auth0ComponentProvider>