UNPKG

better-analytics

Version:

Zero-dependency micro-analytics JavaScript SDK < 3KB gzipped with React/Next.js/Expo support

56 lines (53 loc) 2.02 kB
import React from 'react'; import { A as AnalyticsConfig } from './types-DzHHnKL8.mjs'; export { a as MobileDeviceInfo, M as MobileEventData } from './types-DzHHnKL8.mjs'; interface ExpoAnalyticsConfig extends Omit<AnalyticsConfig, 'endpoint'> { /** API endpoint to send analytics data to */ endpoint?: string; /** Enable debug mode to log events to console */ debug?: boolean; /** Custom user agent override */ userAgent?: string; /** Custom app version */ appVersion?: string; /** Track navigation events automatically using Expo Router (default: true) */ trackNavigation?: boolean; } interface AnalyticsProviderProps extends ExpoAnalyticsConfig { children: React.ReactNode; } /** * Initialize Expo analytics */ declare function init(config: ExpoAnalyticsConfig): void; /** * Track event in Expo */ declare function track(event: string, props?: Record<string, unknown>): Promise<void>; /** * Track screen view */ declare function trackScreen(screenName: string, params?: Record<string, unknown>): Promise<void>; /** * Process and send events stored in the queue */ declare function processEventQueue(): Promise<void>; /** * Hook for automatic navigation tracking with Expo Router. * This hook should be used inside an Expo Router app layout. */ declare function useExpoRouterTracking(): void; /** * React Context Provider for Expo Analytics with automatic navigation tracking * Similar to Next.js Analytics component - just add to your app root */ declare function AnalyticsProvider({ children, ...config }: AnalyticsProviderProps): React.ReactElement; /** * Hook for using analytics in Expo components */ declare function useAnalytics(): { track: typeof track; trackScreen: typeof trackScreen; identify: (userId: string, traits?: Record<string, unknown>) => Promise<void>; }; export { AnalyticsProvider, type AnalyticsProviderProps, type ExpoAnalyticsConfig, init, processEventQueue, track, trackScreen, useAnalytics, useExpoRouterTracking };