From 41b177e3e3a4d46bc399377f03a9ad97bdb4f7b7 Mon Sep 17 00:00:00 2001 From: Usman Baig Date: Mon, 19 Jan 2026 13:00:46 +0100 Subject: [PATCH] fix: dynamically load rrweb library before starting session replay --- public/script.js | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/public/script.js b/public/script.js index d1ffd72..66da8c9 100644 --- a/public/script.js +++ b/public/script.js @@ -263,9 +263,35 @@ return false; } + // * Load rrweb library dynamically + function loadRrweb() { + return new Promise((resolve, reject) => { + if (typeof window.rrweb !== 'undefined') { + resolve(); + return; + } + + const script = document.createElement('script'); + script.src = 'https://cdn.jsdelivr.net/npm/rrweb@2.0.0-alpha.11/dist/rrweb.min.js'; + script.onload = resolve; + script.onerror = reject; + document.head.appendChild(script); + }); + } + // * Start recording session async function startReplay(isSkeletonMode) { - if (replayEnabled || typeof window.rrweb === 'undefined') return; + if (replayEnabled) return; + + // Load rrweb if not already loaded + try { + await loadRrweb(); + } catch (e) { + console.warn('[Ciphera] Failed to load rrweb library'); + return; + } + + if (typeof window.rrweb === 'undefined') return; // Initialize session on server first const initialized = await initReplaySession(isSkeletonMode);