From d72813da48a346c2725e9cfd14b982fded8edbba Mon Sep 17 00:00:00 2001 From: Jexan Joel Date: Sun, 5 Apr 2026 01:02:33 +0530 Subject: [PATCH 1/4] fix(web): remove unload event listener to fix Chrome 146+ deprecation --- packages/web/src/db/PowerSyncDatabase.ts | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/packages/web/src/db/PowerSyncDatabase.ts b/packages/web/src/db/PowerSyncDatabase.ts index 9f97221e4..955f3c6a3 100644 --- a/packages/web/src/db/PowerSyncDatabase.ts +++ b/packages/web/src/db/PowerSyncDatabase.ts @@ -71,13 +71,13 @@ export interface WebEncryptionOptions { type WithWebEncryptionOptions = Base & WebEncryptionOptions; -export type WebPowerSyncDatabaseOptionsWithAdapter = WithWebSyncOptions< +export type WebPowerSyncDatabaseOptionsWithAdapter = WithWebSyncOptions WithWebFlags >; -export type WebPowerSyncDatabaseOptionsWithOpenFactory = WithWebSyncOptions< +export type WebPowerSyncDatabaseOptionsWithOpenFactory = WithWebSyncOptions WithWebFlags >; -export type WebPowerSyncDatabaseOptionsWithSettings = WithWebSyncOptions< +export type WebPowerSyncDatabaseOptionsWithSettings = WithWebSyncOptions WithWebFlags> >; @@ -127,7 +127,6 @@ function assertValidDatabaseOptions(options: WebPowerSyncDatabaseOptions): void export class PowerSyncDatabase extends AbstractPowerSyncDatabase { static SHARED_MUTEX = new Mutex(); - protected unloadListener?: () => Promise; protected resolvedFlags: WebPowerSyncFlags; constructor(options: WebPowerSyncDatabaseOptionsWithAdapter); @@ -140,11 +139,6 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase { assertValidDatabaseOptions(options); this.resolvedFlags = resolveWebPowerSyncFlags(options.flags); - - if (this.resolvedFlags.enableMultiTabs && !this.resolvedFlags.externallyUnload) { - this.unloadListener = () => this.close({ disconnect: false }); - window.addEventListener('unload', this.unloadListener); - } } async _initialize(): Promise { @@ -190,9 +184,6 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase { * multiple tabs are not enabled. */ close(options?: PowerSyncCloseOptions): Promise { - if (this.unloadListener) { - window.removeEventListener('unload', this.unloadListener); - } return super.close({ // Don't disconnect by default if multiple tabs are enabled disconnect: options?.disconnect ?? !this.resolvedFlags.enableMultiTabs @@ -263,4 +254,4 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase { return new WebStreamingSyncImplementation(syncOptions); } } -} +} \ No newline at end of file From eef2bbb1c7428ba5bea554fe7d081afb22db4f23 Mon Sep 17 00:00:00 2001 From: Jexan Joel Date: Tue, 7 Apr 2026 15:12:45 +0530 Subject: [PATCH 2/4] fix: remove unloadListener, deprecate externallyUnload flag, run prettier --- packages/web/src/db/PowerSyncDatabase.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/web/src/db/PowerSyncDatabase.ts b/packages/web/src/db/PowerSyncDatabase.ts index 955f3c6a3..716ee1d7a 100644 --- a/packages/web/src/db/PowerSyncDatabase.ts +++ b/packages/web/src/db/PowerSyncDatabase.ts @@ -38,6 +38,7 @@ import { AsyncDbAdapter } from './adapters/AsyncWebAdapter.js'; export interface WebPowerSyncFlags extends WebSQLFlags { /** + * @deprecated This flag is no longer used. Navigator locks now handle tab detection automatically. * Externally unload open PowerSync database instances when the window closes. * Setting this to `true` requires calling `close` on all open PowerSyncDatabase * instances before the window unloads From 61c6d28e299a7c26111146403b2b78da176a8009 Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Tue, 21 Apr 2026 10:10:16 +0200 Subject: [PATCH 3/4] Fix syntax errors --- packages/web/src/db/PowerSyncDatabase.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/web/src/db/PowerSyncDatabase.ts b/packages/web/src/db/PowerSyncDatabase.ts index 716ee1d7a..d0a3a5724 100644 --- a/packages/web/src/db/PowerSyncDatabase.ts +++ b/packages/web/src/db/PowerSyncDatabase.ts @@ -72,13 +72,13 @@ export interface WebEncryptionOptions { type WithWebEncryptionOptions = Base & WebEncryptionOptions; -export type WebPowerSyncDatabaseOptionsWithAdapter = WithWebSyncOptions +export type WebPowerSyncDatabaseOptionsWithAdapter = WithWebSyncOptions< WithWebFlags >; -export type WebPowerSyncDatabaseOptionsWithOpenFactory = WithWebSyncOptions +export type WebPowerSyncDatabaseOptionsWithOpenFactory = WithWebSyncOptions< WithWebFlags >; -export type WebPowerSyncDatabaseOptionsWithSettings = WithWebSyncOptions +export type WebPowerSyncDatabaseOptionsWithSettings = WithWebSyncOptions< WithWebFlags> >; @@ -255,4 +255,4 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase { return new WebStreamingSyncImplementation(syncOptions); } } -} \ No newline at end of file +} From a0eba9cb89643cdd567b807ad597b46b52fdaf86 Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Tue, 21 Apr 2026 17:35:11 +0200 Subject: [PATCH 4/4] Add changeset --- .changeset/grumpy-monkeys-laugh.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/grumpy-monkeys-laugh.md diff --git a/.changeset/grumpy-monkeys-laugh.md b/.changeset/grumpy-monkeys-laugh.md new file mode 100644 index 000000000..ac1889c04 --- /dev/null +++ b/.changeset/grumpy-monkeys-laugh.md @@ -0,0 +1,5 @@ +--- +'@powersync/web': patch +--- + +Remove deprecated `unload` listener.