AnalyticsProvider
Wraps your app with analytics context. Supports multiple adapters — all adapters receive every event.
import { AnalyticsProvider } from "@allem-sdk/analytics";AnalyticsAdapter interface
interface AnalyticsAdapter {
track: (event: string, properties?: Record<string, unknown>) => void;
page: (name?: string, properties?: Record<string, unknown>) => void;
identify: (userId: string, traits?: Record<string, unknown>) => void;
}Usage
const mixpanelAdapter = {
track: (event, props) => mixpanel.track(event, props),
page: (name, props) => mixpanel.track_pageview({ page: name, ...props }),
identify: (userId) => mixpanel.identify(userId),
};
const posthogAdapter = {
track: (event, props) => posthog.capture(event, props),
page: (name, props) => posthog.capture("$pageview", { page: name, ...props }),
identify: (userId, traits) => posthog.identify(userId, traits),
};
// Dev adapter for logging
const consoleAdapter = {
track: (e, p) => console.log("[analytics] track", e, p),
page: (n, p) => console.log("[analytics] page", n, p),
identify: (id, t) => console.log("[analytics] identify", id, t),
};
<AnalyticsProvider adapters={[mixpanelAdapter, posthogAdapter]}>
<App />
</AnalyticsProvider>