Skip to content
3 changes: 2 additions & 1 deletion packages/analytics/modules/analytics/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ type AnalyticsMethod =

type MethodForwarder = <K extends keyof Analytics>(
fn: K,
) => (...args: Parameters<Analytics[K]>) => void;
) => (...args: Parameters<Analytics[K]>) => Promise<void>;

const ANALYTICS_PORT = '@wxt-dev/analytics';

Expand Down Expand Up @@ -238,6 +238,7 @@ function createFrontendAnalytics(): Analytics {
(fn) =>
(...args) => {
port.postMessage({ fn, args: [...args, getFrontendMetadata()] });
return Promise.resolve();
};

const analytics: Analytics = {
Expand Down
11 changes: 7 additions & 4 deletions packages/analytics/modules/analytics/types.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
export interface Analytics {
/** Report a page change. */
page: (url: string) => void;
page: (url: string) => Promise<void>;
/** Report a custom event. */
track: (
eventName: string,
eventProperties?: Record<string, string | undefined>,
) => void;
) => Promise<void>;
/** Save information about the user. */
identify: (userId: string, userProperties?: Record<string, string>) => void;
identify: (
userId: string,
userProperties?: Record<string, string>,
) => Promise<void>;
/**
* 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<void>;
}

export interface AnalyticsConfig {
Expand Down