One API, sixteen providers
Call track, identify, logError, logRevenue, and logScreenView once. The core fans each call out to every provider you enable — swap or add SDKs without touching call sites.
Consent gate built in
setConsent denies a category and the engine drops the matching events before any provider sees them. analytics and errorTracking gate dispatch; the rest forward to provider-native consent APIs.
Privacy minimization
settings.privacy.excludedProperties strips listed keys from every event, trait, and context before providers receive them. Secrets and DSNs are redacted from logs.
React without providers
Import useUnifiedTracking and useTrackEvent from unified-tracking/react. No context, no HOC, no <Provider> wrapper — the hooks bind to a shared singleton with stable identity.
Capacitor-ready
registerCapacitorPlugin() wires the same core into a Capacitor WebPlugin so the plugin, the React hooks, and the main entry all share one instance and one init state.
Typed, tree-shakeable, zero runtime deps
Ships as ESM with full .d.ts types and three subpath exports (., /react, /capacitor). The package itself pulls in no runtime dependencies — provider SDKs load only when configured.