better-analytics
Version:
Zero-dependency micro-analytics JavaScript SDK < 3KB gzipped with React/Next.js/Expo support
56 lines (53 loc) • 2.02 kB
TypeScript
import React from 'react';
import { A as AnalyticsConfig } from './types-DzHHnKL8.js';
export { a as MobileDeviceInfo, M as MobileEventData } from './types-DzHHnKL8.js';
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 };