diff options
author | dan <dan.abramov@gmail.com> | 2024-03-21 17:01:55 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-21 17:01:55 +0000 |
commit | 55fb81867be16d9eade44727e34a17c68f7b506b (patch) | |
tree | 74a6a04760713b5d5276e2cea4d69a19eca3dddf /src | |
parent | 7503d83eaa5ac35b06c7223ff6395f9dadc63c0f (diff) | |
download | voidsky-55fb81867be16d9eade44727e34a17c68f7b506b.tar.zst |
[Statsig] Protect against early logEvent call crashing (#3315)
* [Statsig] Check if initialized * Never interrupt the caller
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/statsig/statsig.tsx | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/lib/statsig/statsig.tsx b/src/lib/statsig/statsig.tsx index 9bccedc6e..a9d69fda7 100644 --- a/src/lib/statsig/statsig.tsx +++ b/src/lib/statsig/statsig.tsx @@ -46,11 +46,21 @@ export function logEvent<E extends keyof LogEvents>( eventName: E & string, rawMetadata: LogEvents[E] & FlatJSONRecord, ) { - const fullMetadata = { - ...rawMetadata, - } as Record<string, string> // Statsig typings are unnecessarily strict here. - fullMetadata.routeName = getCurrentRouteName() ?? '(Uninitialized)' - Statsig.logEvent(eventName, null, fullMetadata) + try { + const fullMetadata = { + ...rawMetadata, + } as Record<string, string> // Statsig typings are unnecessarily strict here. + fullMetadata.routeName = getCurrentRouteName() ?? '(Uninitialized)' + if (Statsig.initializeCalled()) { + Statsig.logEvent(eventName, null, fullMetadata) + } + } catch (e) { + // A log should never interrupt the calling code, whatever happens. + // Rethrow on a clean stack. + setTimeout(() => { + throw e + }) + } } export function useGate(gateName: string) { |