JavaScript SDK - SDK の初期化
インストール
Section titled インストール次のコマンドを実行すると、トラッカーとその SDK がインストールされ、トラッカーのすべての機能を利用できるようになります。
npm i @openreplay/tracker
OpenReplay のトラッカーをインスタンス化する際に、録画や録画体験のさまざまな側面をカスタマイズするための設定オプションを複数指定できます。
コンストラクターでは、projectKey オプションを必ず設定する必要があります。この値は、OpenReplay のダッシュボードの ‘Preferences > Projects’ から取得できます。
シングルページアプリケーション(SPA)
Section titled シングルページアプリケーション(SPA)ウェブサイトが シングルページアプリケーション(SPA) の場合は、トラッカーをシングルトンとして使用できます:
import { tracker } from '@openreplay/tracker'
tracker.configure({
projectKey: PROJECT_KEY,
ingestPoint: "https://openreplay.mydomain.com/ingest", // when dealing with the self-hosted version of OpenReplay
})
tracker.start() // returns a promise with session info (sessionID, sessionHash, userUUID)
または、新しいクラスインスタンスを作成することもできます:
import OpenReplay from '@openreplay/tracker';
//...
const tracker = new OpenReplay({
projectKey: PROJECT_KEY
});
tracker.start(); // returns a promise with session info (sessionID, sessionHash, userUUID)
サーバーサイドレンダリング(SSR)
Section titled サーバーサイドレンダリング(SSR)一方、ウェブアプリが サーバーサイドレンダリング(SSR) の場合(NextJS、NuxtJS など)は、以下のスニペットを使用してください。
アプリの起動後に tracker.start() が呼び出されるようにしてください(useEffect または componentDidMount 内)。
import OpenReplay from '@openreplay/tracker/cjs';
//...
const tracker = new OpenReplay({
projectKey: PROJECT_KEY,
ingestPoint: "https://openreplay.mydomain.com/ingest", // when dealing with the self-hosted version of OpenReplay
});
//...
function MyApp() {
useEffect(() => { // use componentDidMount in case of React Class Component
tracker.start(); // returns a promise with session info (sessionID, sessionHash, userUUID)
}, [])
}
import OpenReplay from '@openreplay/tracker/cjs';
//...
const tracker = new OpenReplay({
projectKey: PROJECT_KEY,
ingestPoint: "https://openreplay.mydomain.com/ingest", // when dealing with the self-hosted version of OpenReplay
capturePerformance: true,
__DISABLE_SECURE_MODE: true // for local testing
});
初期化オプション
Section titled 初期化オプションコンストラクターに渡せるオプションがいくつかあります。必須なのは projectKey のみです。
projectKey: stringトラッキング対象のプロジェクトの ID。sessionHash?: string初期セッションのハッシュ。ウェブアプリ内でセッションが異なるサブドメインをまたぐものの、それらを 1 つの録画としてつなぎ合わせたい場合に便利です。セッションを継続できない場合(存在しない、または終了している場合)、トラッカーは自動的に新しいセッションを開始します。この値はstop()でも返されます。詳細はこちらをご覧ください。ingestPoint?: string例えば https://openreplay.mydomain.com/ingest のような、トラッカーがイベントの送信先とする OpenReplay のドメイン。OpenReplay Cloud ユーザーの場合は省略可能です。デフォルト:https://api.openreplay.com/ingest(OpenReplay Cloud を指します)。revID?: stringウェブアプリのリビジョン ID。特定のリリースバージョンで発生している問題を検索する際に便利です。resourceBaseHref?: stringOpenReplay がアセット(スタイル、フォント、アイコン)を取得できる、公開アクセス可能なドメインを指します。これらはセッションリプレイを正しく再生するために必要なため、サイト(およびアセット)がプライベートドメインでホストされているという制限を回避するのに役立つオプションです。例:https://mypublicsite.com/assets/。captureIFrames?: booleanウェブアプリ内の同一ドメインの iFrame をすべてキャプチャします。特定の iFrame のみをトラッキングしたい場合は、代わりに<iframe>タグにdata-openreplay-captureHTML 属性を追加するだけです。デフォルト:true。disableClickmaps?: booleanCSS セレクターの計算(クリックマップで使用)を無効にします。デフォルト:false。__debug__: numberデバッグログを有効にします。デフォルト:0(無効)。2: エラー。3: エラーと警告。4: エラー、警告、ログ。5: 詳細出力。
autoResetOnWindowOpen?: booleanこのオプションを有効にすると、アプリケーションから新しいタブを開いたときに sessionID がリセットされます。ブラウザーのタブ間でセッションストレージが共有されることによる sessionID の重複を避けるため、window.openメソッドを上書きします。デフォルト:false。forceSingleTab: boolean複数のタブにまたがって行われたユーザーセッションを 1 つのリプレイにつなぎ合わせる、マルチタブ録画機能を無効にします。このオプションを有効にすると、代わりに、異なるブラウザータブでキャプチャされたセッションは別々の録画として記録されます。デフォルト:false。disableStringDict: boolean録画における文字列ディクショナリのロジック(ストレージの最適化用)を無効にします。デフォルト:false。fixedCanvasScaling: booleanキャンバス画像を、devicePixelRatio ではなくピクセル密度 1 でレンダリングするよう強制します(画質が低下する可能性がある代わりに、最終的なサイズが小さくなります)。デフォルト:false。disableCanvas?: booleancanvas 要素の録画を無効にします。デフォルト:false。assistSocketHost?: stringAssist プラグインの接続先として特定のホストを設定するために使用できます。デフォルトはingestPointの値です。analytics?: { active: boolean, ingestPoint?: string }Analytics SDK を有効にします。これにより、tracker.analytics(イベント、スーパープロパティ、ユーザープロファイル)と、トップレベルのtracker.track()ショートハンドが利用できるようになります。activeがtrueでない限り、SDK はインスタンス化されません。それまでtracker.analyticsはnullのままです。ingestPointを使用すると、セルフホストのデプロイで、リプレイのインジェスト先とは別のエンドポイントにアナリティクスを送信できます。OpenReplay Cloud では無視されます。デフォルト:{ active: false }。nodes?: { maintainer: MaintainerOptions }新しいnodes.maintainerオプションは、メモリの管理と、使用されなくなった DOM ノードのクリーンアップに役立ちます。次のパラメーターがあります:interval: number: クリーンアップの実行間隔(ミリ秒)。デフォルト:30 * 1000(30 秒)。batchSize: number: 各クリーンアップ実行時にチェックするノード数。デフォルト:2500。enabled: boolean: ノードメンテナーの有効/無効を切り替えます。デフォルト:true。
スタイルシート
Section titled スタイルシートinlineCss: number: リモートスタイルシートをバックエンドにキャッシュするのではなく、通常のメッセージとして記録して送信するようトラッカーに強制します。CSS ファイルがプライベートで、OpenReplay のバックエンドでキャッシュできない場合に便利です。指定できる値は次のとおりです:0: CSS ファイルはバックエンドにキャッシュされます。デフォルトの動作です。1: リンクされた CSS ファイルを AdoptedStyleSheet オブジェクトとして記録しようとします。2: ファイルを取得し、リプレイ用に AdoptedStyleSheets の動作をシミュレートします。3: ファイルを取得し、<style>ノード内にプレーンな CSS として保存します。CSS ファイルにショートハンドプロパティが多数ある場合に使用してください(CSSOM 仕様のバグに対応)。
css: CssRulesOptions: emotion-js ライブラリで構築されたアプリケーション(MUI コンポーネントなど)へのサポートを強化します。次のパラメーターがあります:scanInMemoryCSS: boolean: emotionjs で作成されたスタイルに問題がある場合は、これを有効にしてください。デフォルト:false。checkCssInterval: number: ルールが空のトラッキング対象スタイルシートを、どのくらいの頻度でスキャンするか。デフォルト:200(ms)。checkLimit: number: ミューテーションの数が限られている場合や、初回レンダリング後にクライアント側でスタイルシートがハイドレートされる場合に便利です。各スタイルシートに個別に適用されます。値は X/checkCssInterval とし、X は監視期間(ミリ秒)です。デフォルト:0(無効)。
プライバシー
Section titled プライバシーrespectDoNotTrack?: booleanユーザーのブラウザーで do-not-track フラグが有効になっている場合、トラッカーを開始しません。デフォルト:false。obscureTextEmails?: booleanテキスト要素内のメールアドレスをマスクします。メールアドレスは、ランダムな長さのアスタリスクの文字列に変換されます。デフォルト:true。obscureTextNumbers?: booleanテキスト要素内の数値をマスクします。数値は、ランダムな長さのアスタリスクの文字列に変換されます。デフォルト:false。obscureInputEmails?: boolean入力フィールド内のメールアドレスをマスクします。メールアドレスの値は、ランダムな長さのアスタリスクの文字列に変換されます。デフォルト:true。obscureInputNumbers?: boolean入力フィールド内の数値をマスクします。数値は、ランダムな長さのアスタリスクの文字列に変換されます。無効にする場合は、郵便番号やクレジットカード情報などの機密データを含む可能性がある入力フィールドをサニタイズしてください。デフォルト:true。obscureInputDates?: boolean入力フィールド内の日付をマスクします。日付の値は、ランダムな長さのアスタリスクの文字列に変換されます。デフォルト:false。defaultInputMode?: 0 | 1 | 2入力値のデフォルトのキャプチャモード。それぞれ、プレーン、マスク、無視を表します。デフォルト:2(無視)。urls: 次のオプションで、ページのロケーションイベントの記録方法をカスタマイズできます:urlSanitizer?: (url: string) => stringページの URL をサニタイズできます(たとえば、使用トークンの除去など)。titleSanitizer?: (title: string) => stringページのタイトルをサニタイズできます。
resourceNameSanitizer?: (url: string) => string記録されるネットワークリソースの URL をサニタイズできます。
除外されたデータは、OpenReplay のサーバーに送信される前にマスクまたは抑制されることに注意してください。上記のオプションに加えた変更はさかのぼって適用できず、新たに収集されたデータにのみ適用されます。詳細については、データのサニタイズを参照してください。
コンソール
Section titled コンソールconsoleMethods?: Array<'log' | 'info' | 'warn' | 'error' 'debug' | 'assert'> | nullキャプチャするコンソールメソッドのリストを指定します。デフォルト:['log', 'info', 'warn', 'error', 'debug', 'assert']consoleThrottling?: number1 秒あたりにキャプチャされるコンソールエントリーの最大数。デフォルト:30。
captureExceptions?: booleanJavaScript の例外とスタックトレースをキャプチャします。デフォルト:true。
タイミング
Section titled タイミングcaptureResourceTimings?: booleanリソースタイミングを記録します。デフォルト:true。capturePageLoadTimings?: booleanページ読み込みタイミングを記録します。デフォルト:true。capturePageRenderTimings?: booleanSpeed Index、Visually Complete、Time To Interactive などのページレンダリングメトリクスを計算します。captureResourceTimings = trueが必要です。デフォルト:true。
パフォーマンス
Section titled パフォーマンスcapturePerformance?: booleanフレームレート、CPU 使用率、メモリ消費量などのパフォーマンスメトリクスをキャプチャします。デフォルト:true。longTasks?: booleanlong-animation-frame イベントをキャプチャします。デフォルト:false。
ネットワーク
Section titled ネットワークnetwork オプションは、fetch と XHR のネットワークリクエストとペイロードのキャプチャに関するものです。
network?: {
failuresOnly: boolean;
sessionTokenHeader: string;
ignoreHeaders: Array<string> | boolean;
capturePayload: boolean; // make sure you sanitize your data before enabling it
sanitizer: (RequestResponseData) => RequestResponseData | null;
captureInIframes: boolean;
axiosInstances: AxiosInstance[];
useProxy?: boolean;
tokenUrlMatcher?: (url: string) => boolean;
}
機密データを編集(リダクト)する方法の例や詳細については、ネットワークオプションを参照してください。
Canvas
Section titled Canvascanvas オプションは、canvas/WebGL 要素のキャプチャに関するものです:
canvas?: {
disableCanvas?: boolean
fixedCanvasScaling?: boolean
useAnimationFrame?: boolean
fileExt?: 'webp' | 'png' | 'jpeg' | 'avif'
}
この機能を有効にする方法と、利用可能なオプションの詳細については、Canvas と WebGL を参照してください。
クロスドメイン iFrame
Section titled クロスドメイン iFramecrossdomain オプションは、異なるドメインの iFrame のキャプチャに関するものです。captureIFrames オプションと組み合わせて使用し、そちらを true に設定する必要があります。
crossdomain?: {
/**
* Enable cross-domain tracking
* @default false
* */
enabled?: boolean
/**
* Used to specify the parent domain, will be '*' by default
* (Check your CSP settings)
* @default '*'
* */
parentDomain?: string
}
トラッカーのバージョン 14.0.10 以降、クロスドメイン iFrame を扱う場合、HTML 要素に data-domain 属性は不要になりました。
異なるドメインの iFrame をキャプチャする方法の詳細については、クロスドメイン iFrame トラッキングを参照してください。
マウスポインター
Section titled マウスポインターmouse オプションは、クリックマップを作成するために、クリックのセレクターをキャプチャすることに関するものです。
mouse?:
{
disableClickmaps?: boolean
minSelectorDepth?: number
nthThreshold?: number
maxOptimiseTries?: number
}
disableClickmaps?: booleanセレクターの計算を完全に無効にします。デフォルト:false。minSelectorDepth?: number最適化されたセレクターの最小の長さ(デフォルトは 2)。例:body > div > div > p => body > pnthThreshold?: numbernth-child セレクターにフォールバックするまでのセレクターの試行回数。これは負荷の高い処理であり、大きなオーバーヘッドが発生する可能性があるため、2000 より大きい値に設定しないでください。デフォルト:1000。maxOptimiseTries?: numberセレクターを最適化して短縮する試行回数。デフォルト:10 000。
connAttemptCount?: numberトラッカーの HTTP リクエストがバックエンドに到達できない場合の最大リトライ回数。デフォルト:10。connAttemptGap?: number各リトライ間の間隔(ミリ秒)。デフォルト:8000。
セキュリティ
Section titled セキュリティ__DISABLE_SECURE_MODE?: booleanSSL を使用していないサイトで、トラッカーとバックエンド間の安全でない接続を許可します。開発目的でのみ使用してください。デフォルト:false。