From 86af43e370cb157cfef22e48ad2e99f9004619bc Mon Sep 17 00:00:00 2001 From: Athira M Date: Fri, 17 Oct 2025 18:41:02 +0530 Subject: [PATCH 1/5] Bug fixes --- packages/remote-config/src/abt/experiment.ts | 8 +++----- packages/remote-config/test/abt/experiment.test.ts | 5 +++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/remote-config/src/abt/experiment.ts b/packages/remote-config/src/abt/experiment.ts index 326f05a87cf..eec23913d77 100644 --- a/packages/remote-config/src/abt/experiment.ts +++ b/packages/remote-config/src/abt/experiment.ts @@ -39,7 +39,7 @@ export class Experiment { const currentActiveExperiments = (await this.storage.getActiveExperiments()) || new Set(); const experimentInfoMap = this.createExperimentInfoMap(latestExperiments); - this.addActiveExperiments(currentActiveExperiments, experimentInfoMap); + this.addActiveExperiments(experimentInfoMap); this.removeInactiveExperiments(currentActiveExperiments, experimentInfoMap); return this.storage.setActiveExperiments(new Set(experimentInfoMap.keys())); } @@ -55,14 +55,11 @@ export class Experiment { } private addActiveExperiments( - currentActiveExperiments: Set, experimentInfoMap: Map ): void { const customProperty: Record = {}; for (const [experimentId, experimentInfo] of experimentInfoMap.entries()) { - if (!currentActiveExperiments.has(experimentId)) { - customProperty[experimentId] = experimentInfo.variantId; - } + customProperty[experimentId] = experimentInfo.variantId; } this.addExperimentToAnalytics(customProperty); } @@ -90,6 +87,7 @@ export class Experiment { const analytics = this.analyticsProvider.getImmediate({ optional: true }); if (analytics) { analytics.setUserProperties({ properties: customProperty }); + analytics.logEvent(`Received ABT experiment update`); } else { this.logger.warn(`Analytics import failed`); } diff --git a/packages/remote-config/test/abt/experiment.test.ts b/packages/remote-config/test/abt/experiment.test.ts index 8e0b0cb5f13..0d614bb7bac 100644 --- a/packages/remote-config/test/abt/experiment.test.ts +++ b/packages/remote-config/test/abt/experiment.test.ts @@ -41,7 +41,8 @@ describe('Experiment', () => { storage.getActiveExperiments = sinon.stub(); storage.setActiveExperiments = sinon.stub(); analyticsProvider.getImmediate = sinon.stub().returns({ - setUserProperties: sinon.stub() + setUserProperties: sinon.stub(), + logEvent: sinon.stub(), }); }); @@ -81,7 +82,7 @@ describe('Experiment', () => { expectedStoredExperiments ); expect(analytics.setUserProperties).to.have.been.calledWith({ - properties: { '_exp_3': '1' } + properties: { '_exp_3': '1', '_exp_1': '2', '_exp_2': '1' } }); }); From 8128ae914902a4b2f10b55f19be20fad319ecf90 Mon Sep 17 00:00:00 2001 From: Athira M Date: Fri, 17 Oct 2025 18:55:48 +0530 Subject: [PATCH 2/5] yarn format fail --- packages/remote-config/test/abt/experiment.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/remote-config/test/abt/experiment.test.ts b/packages/remote-config/test/abt/experiment.test.ts index 0d614bb7bac..81654b4fa01 100644 --- a/packages/remote-config/test/abt/experiment.test.ts +++ b/packages/remote-config/test/abt/experiment.test.ts @@ -42,7 +42,7 @@ describe('Experiment', () => { storage.setActiveExperiments = sinon.stub(); analyticsProvider.getImmediate = sinon.stub().returns({ setUserProperties: sinon.stub(), - logEvent: sinon.stub(), + logEvent: sinon.stub() }); }); From 00eb10b13492383c9fb3f9cff525289b2856ba18 Mon Sep 17 00:00:00 2001 From: Athira M Date: Sat, 18 Oct 2025 08:55:12 +0530 Subject: [PATCH 3/5] update event name --- packages/remote-config/src/abt/experiment.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/remote-config/src/abt/experiment.ts b/packages/remote-config/src/abt/experiment.ts index eec23913d77..722442b2784 100644 --- a/packages/remote-config/src/abt/experiment.ts +++ b/packages/remote-config/src/abt/experiment.ts @@ -87,7 +87,7 @@ export class Experiment { const analytics = this.analyticsProvider.getImmediate({ optional: true }); if (analytics) { analytics.setUserProperties({ properties: customProperty }); - analytics.logEvent(`Received ABT experiment update`); + analytics.logEvent(`set_firebase_experiment_state`); } else { this.logger.warn(`Analytics import failed`); } From 78977a6150fc44c4e6baf6329dbd1a8bcb2ebcf8 Mon Sep 17 00:00:00 2001 From: Athira M Date: Tue, 21 Oct 2025 23:56:36 +0530 Subject: [PATCH 4/5] Ensure user property is parsed --- packages/remote-config/src/abt/experiment.ts | 2 +- packages/remote-config/test/abt/experiment.test.ts | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/remote-config/src/abt/experiment.ts b/packages/remote-config/src/abt/experiment.ts index 722442b2784..01f4141ace2 100644 --- a/packages/remote-config/src/abt/experiment.ts +++ b/packages/remote-config/src/abt/experiment.ts @@ -86,7 +86,7 @@ export class Experiment { try { const analytics = this.analyticsProvider.getImmediate({ optional: true }); if (analytics) { - analytics.setUserProperties({ properties: customProperty }); + analytics.setUserProperties(customProperty); analytics.logEvent(`set_firebase_experiment_state`); } else { this.logger.warn(`Analytics import failed`); diff --git a/packages/remote-config/test/abt/experiment.test.ts b/packages/remote-config/test/abt/experiment.test.ts index 81654b4fa01..a2ae564da96 100644 --- a/packages/remote-config/test/abt/experiment.test.ts +++ b/packages/remote-config/test/abt/experiment.test.ts @@ -82,7 +82,9 @@ describe('Experiment', () => { expectedStoredExperiments ); expect(analytics.setUserProperties).to.have.been.calledWith({ - properties: { '_exp_3': '1', '_exp_1': '2', '_exp_2': '1' } + '_exp_3': '1', + '_exp_1': '2', + '_exp_2': '1' }); }); @@ -108,7 +110,7 @@ describe('Experiment', () => { expectedStoredExperiments ); expect(analytics.setUserProperties).to.have.been.calledWith({ - properties: { '_exp_2': null } + '_exp_2': null }); }); }); From 88d0a1cb8bdcadbd8886c0063b8a03c1561aa3e5 Mon Sep 17 00:00:00 2001 From: Athira M Date: Wed, 22 Oct 2025 07:44:58 +0530 Subject: [PATCH 5/5] Add firebase prefix to exp --- packages/remote-config/src/abt/experiment.ts | 4 ++-- packages/remote-config/test/abt/experiment.test.ts | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/remote-config/src/abt/experiment.ts b/packages/remote-config/src/abt/experiment.ts index 01f4141ace2..5b197cde486 100644 --- a/packages/remote-config/src/abt/experiment.ts +++ b/packages/remote-config/src/abt/experiment.ts @@ -59,7 +59,7 @@ export class Experiment { ): void { const customProperty: Record = {}; for (const [experimentId, experimentInfo] of experimentInfoMap.entries()) { - customProperty[experimentId] = experimentInfo.variantId; + customProperty[`firebase${experimentId}`] = experimentInfo.variantId; } this.addExperimentToAnalytics(customProperty); } @@ -71,7 +71,7 @@ export class Experiment { const customProperty: Record = {}; for (const experimentId of currentActiveExperiments) { if (!experimentInfoMap.has(experimentId)) { - customProperty[experimentId] = null; + customProperty[`firebase${experimentId}`] = null; } } this.addExperimentToAnalytics(customProperty); diff --git a/packages/remote-config/test/abt/experiment.test.ts b/packages/remote-config/test/abt/experiment.test.ts index a2ae564da96..43365d31f06 100644 --- a/packages/remote-config/test/abt/experiment.test.ts +++ b/packages/remote-config/test/abt/experiment.test.ts @@ -82,9 +82,9 @@ describe('Experiment', () => { expectedStoredExperiments ); expect(analytics.setUserProperties).to.have.been.calledWith({ - '_exp_3': '1', - '_exp_1': '2', - '_exp_2': '1' + 'firebase_exp_3': '1', + 'firebase_exp_1': '2', + 'firebase_exp_2': '1' }); }); @@ -110,7 +110,7 @@ describe('Experiment', () => { expectedStoredExperiments ); expect(analytics.setUserProperties).to.have.been.calledWith({ - '_exp_2': null + 'firebase_exp_2': null }); }); });