diff --git a/tracker/tracker/package.json b/tracker/tracker/package.json index 392cdceca..00df991e9 100644 --- a/tracker/tracker/package.json +++ b/tracker/tracker/package.json @@ -1,7 +1,7 @@ { "name": "@openreplay/tracker", "description": "The OpenReplay tracker main package", - "version": "9.0.0", + "version": "9.0.1", "keywords": [ "logging", "replay" diff --git a/tracker/tracker/src/main/modules/Network/index.ts b/tracker/tracker/src/main/modules/Network/index.ts index 60a5e8f6f..ae5f2fe0e 100644 --- a/tracker/tracker/src/main/modules/Network/index.ts +++ b/tracker/tracker/src/main/modules/Network/index.ts @@ -3,6 +3,10 @@ import XHRProxy from './xhrProxy.js' import { RequestResponseData } from './types.js' import { NetworkRequest } from '../../../common/messages.gen.js' +const getWarning = (api: string) => + console.warn(`Openreplay: Can't find ${api} in global context. +If you're using serverside rendering in your app, make sure that tracker is loaded dynamically, otherwise ${api} won't be tracked.`) + export default function setProxy( context: typeof globalThis, ignoredHeaders: boolean | string[], @@ -11,18 +15,26 @@ export default function setProxy( sendMessage: (message: NetworkRequest) => void, isServiceUrl: (url: string) => boolean, ) { - context.XMLHttpRequest = XHRProxy.create( - ignoredHeaders, - setSessionTokenHeader, - sanitize, - sendMessage, - isServiceUrl, - ) - context.fetch = FetchProxy.create( - ignoredHeaders, - setSessionTokenHeader, - sanitize, - sendMessage, - isServiceUrl, - ) + if (context.XMLHttpRequest) { + context.XMLHttpRequest = XHRProxy.create( + ignoredHeaders, + setSessionTokenHeader, + sanitize, + sendMessage, + isServiceUrl, + ) + } else { + getWarning('XMLHttpRequest') + } + if (context.fetch) { + context.fetch = FetchProxy.create( + ignoredHeaders, + setSessionTokenHeader, + sanitize, + sendMessage, + isServiceUrl, + ) + } else { + getWarning('fetch') + } }