diff --git a/.changeset/witty-chicken-mate.md b/.changeset/witty-chicken-mate.md new file mode 100644 index 00000000000..5b667170355 --- /dev/null +++ b/.changeset/witty-chicken-mate.md @@ -0,0 +1,5 @@ +--- +"@firebase/firestore": patch +--- + +Fixed a regression that prevented the garbage collector from running if multi-tab was disabled. diff --git a/packages/firestore/src/core/component_provider.ts b/packages/firestore/src/core/component_provider.ts index 0c5340318f3..2bf13fc33e0 100644 --- a/packages/firestore/src/core/component_provider.ts +++ b/packages/firestore/src/core/component_provider.ts @@ -182,6 +182,15 @@ export class IndexedDbOfflineComponentProvider extends MemoryOfflineComponentPro this.onlineComponentProvider.syncEngine ); await fillWritePipeline(this.onlineComponentProvider.remoteStore); + + // NOTE: This will immediately call the listener, so we make sure to + // set it after localStore / remoteStore are started. + await this.persistence.setPrimaryStateListener(() => { + if (this.gcScheduler && !this.gcScheduler.started) { + this.gcScheduler.start(this.localStore); + } + return Promise.resolve(); + }); } createLocalStore(cfg: ComponentConfiguration): LocalStore {