From 3769785900f4d73fd182851d80fee756c5144021 Mon Sep 17 00:00:00 2001 From: Timur Olzhabayev Date: Wed, 6 May 2026 16:21:43 +0200 Subject: [PATCH] fix(website): prevent duplicate startTracking causing rudderQueue error Guard startTracking with a module-level initialized flag so route changes and React strict-mode double-effects do not append a second rudderstack script, whose onload would iterate an already-drained (undefined) queue. --- docusaurus/website/src/theme/tracking/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docusaurus/website/src/theme/tracking/index.ts b/docusaurus/website/src/theme/tracking/index.ts index e9bfe044c5..891693ccbd 100644 --- a/docusaurus/website/src/theme/tracking/index.ts +++ b/docusaurus/website/src/theme/tracking/index.ts @@ -23,6 +23,7 @@ export const isFaroSetup = (config: FaroConfig) => // Enqueue all rudderstack requests until it is loaded and consent is granted let rudderstack: Partial = {}; let rudderQueue = []; +let trackingInitialized = false; const rudderMethods = ['page', 'track', 'identify', 'reset']; for (const method of rudderMethods) { rudderstack[method] = (...args) => { @@ -49,9 +50,10 @@ export function startTracking( faroConfig: FaroConfig, shouldTrack: boolean ) { - if (!shouldTrack) { + if (!shouldTrack || trackingInitialized) { return; } + trackingInitialized = true; if (isRudderstackSetup(rudderStackConfig)) { const { writeKey, url, configUrl } = rudderStackConfig;