From 159947e6f2824895118c45aeec6d9a102c015a44 Mon Sep 17 00:00:00 2001 From: Tim Yiu <137842098+tyiuhc@users.noreply.github.com> Date: Tue, 14 Nov 2023 19:55:43 -0800 Subject: [PATCH] fix: Handle localStorage errors from iframe (#92) --- .../src/experimentClient.ts | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/packages/experiment-browser/src/experimentClient.ts b/packages/experiment-browser/src/experimentClient.ts index 753addcf..9fe45390 100644 --- a/packages/experiment-browser/src/experimentClient.ts +++ b/packages/experiment-browser/src/experimentClient.ts @@ -149,8 +149,12 @@ export class ExperimentClient implements Client { storage, ); this.flags = getFlagStorage(this.apiKey, this.config.instanceName, storage); - this.flags.load(); - this.variants.load(); + try { + this.flags.load(); + this.variants.load(); + } catch (e) { + console.warn('Failed to load flags and variants from localStorage', e); + } } /** @@ -322,7 +326,11 @@ export class ExperimentClient implements Client { */ public clear(): void { this.variants.clear(); - void this.variants.store(); + try { + void this.variants.store(); + } catch (e) { + console.warn('Failed to store variants in localStorage', e); + } } /** @@ -664,7 +672,11 @@ export class ExperimentClient implements Client { }); this.flags.clear(); this.flags.putAll(flags); - this.flags.store(); + try { + this.flags.store(); + } catch (e) { + console.warn('Failed to store flags in localStorage', e); + } } private async storeVariants( @@ -683,7 +695,11 @@ export class ExperimentClient implements Client { for (const key in failedFlagKeys) { this.variants.remove(key); } - this.variants.store(); + try { + this.variants.store(); + } catch (e) { + console.warn('Failed to store variants in localStorage', e); + } this.debug('[Experiment] Stored variants: ', variants); }