From 1dc0f02c8385418227181989e11af1fcd4029988 Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa AKSAM Date: Tue, 9 Jun 2026 15:42:34 +0300 Subject: [PATCH 1/2] fix(analytics): change method return types from void to Promise The Analytics interface declared track(), page(), identify(), and setEnabled() as returning void. The background implementation returns Promise (async functions), which is assignable to void. But users calling await analytics.track() get TS80007 since the declared type is void. Changed the interface return types to Promise and updated the MethodForwarder type and implementation accordingly. --- packages/analytics/modules/analytics/client.ts | 3 ++- packages/analytics/modules/analytics/types.ts | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/analytics/modules/analytics/client.ts b/packages/analytics/modules/analytics/client.ts index 3c25cc6bd..49bbb0251 100644 --- a/packages/analytics/modules/analytics/client.ts +++ b/packages/analytics/modules/analytics/client.ts @@ -25,7 +25,7 @@ type AnalyticsMethod = type MethodForwarder = ( fn: K, -) => (...args: Parameters) => void; +) => (...args: Parameters) => Promise; const ANALYTICS_PORT = '@wxt-dev/analytics'; @@ -238,6 +238,7 @@ function createFrontendAnalytics(): Analytics { (fn) => (...args) => { port.postMessage({ fn, args: [...args, getFrontendMetadata()] }); + return Promise.resolve(); }; const analytics: Analytics = { diff --git a/packages/analytics/modules/analytics/types.ts b/packages/analytics/modules/analytics/types.ts index 6f3caae4b..06a03c2fa 100644 --- a/packages/analytics/modules/analytics/types.ts +++ b/packages/analytics/modules/analytics/types.ts @@ -1,20 +1,20 @@ export interface Analytics { /** Report a page change. */ - page: (url: string) => void; + page: (url: string) => Promise; /** Report a custom event. */ track: ( eventName: string, eventProperties?: Record, - ) => void; + ) => Promise; /** Save information about the user. */ - identify: (userId: string, userProperties?: Record) => void; + identify: (userId: string, userProperties?: Record) => Promise; /** * Automatically setup and track user interactions, returning a function to * remove any listeners that were setup. */ autoTrack: (root: Document | ShadowRoot | Element) => () => void; /** Calls `config.enabled.setValue`. */ - setEnabled: (enabled: boolean) => void; + setEnabled: (enabled: boolean) => Promise; } export interface AnalyticsConfig { From e08b549c02f5bf3e781404027cc236fc7b861f68 Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa AKSAM Date: Fri, 19 Jun 2026 09:26:46 +0300 Subject: [PATCH 2/2] refactor: reformat identify function signature for improved readability --- packages/analytics/modules/analytics/types.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/analytics/modules/analytics/types.ts b/packages/analytics/modules/analytics/types.ts index 06a03c2fa..affb8122d 100644 --- a/packages/analytics/modules/analytics/types.ts +++ b/packages/analytics/modules/analytics/types.ts @@ -7,7 +7,10 @@ export interface Analytics { eventProperties?: Record, ) => Promise; /** Save information about the user. */ - identify: (userId: string, userProperties?: Record) => Promise; + identify: ( + userId: string, + userProperties?: Record, + ) => Promise; /** * Automatically setup and track user interactions, returning a function to * remove any listeners that were setup.