
Research
/Security News
737 Chrome VPN Extensions Linked to Brand Impersonation and Browser Traffic Redirection
The campaign amassed more than 75,000 installs by targeting Russian-speaking users seeking access to blocked services.
@metamask/analytics-controller
Advanced tools
@metamask/analytics-controllerCommon Analytics controller for event tracking across MetaMask client platforms.
yarn add @metamask/analytics-controller
or
npm install @metamask/analytics-controller
The AnalyticsController provides a unified interface for tracking analytics events, identifying users, and managing analytics preferences. It delegates client platform-specific implementation to an AnalyticsPlatformAdapter and integrates with the MetaMask messenger system for inter-controller communication.
| Field | Type | Description | Persisted |
|---|---|---|---|
analyticsId | string | UUIDv4 identifier (client platform-generated) | Yes |
optedIn | boolean | User opt-in status | Yes |
eventQueue | object | Optional persisted delivery queue | Yes |
analyticsId: Use the uuid package or client platform equivalent for new installs, or migrate an existing MetaMetrics identifier when available. The controller validates this value as a UUIDv4, but does not create a default ID.When isAnonymousEventsFeatureEnabled is enabled in the constructor, events with sensitive properties are split into separate events:
properties (uses user ID)properties and sensitiveProperties (uses anonymous ID)This allows sensitive data to be tracked anonymously while maintaining user identification for regular properties. When disabled (default), all properties are tracked in a single event.
When isEventQueuePersistenceEnabled is enabled in the constructor, each final platform adapter payload is persisted until the adapter reports successful delivery through its callback.
This feature is disabled by default. Client platforms that already rely on SDK-level persistence, such as MetaMask Mobile through @segment/analytics-react-native's storePersistor option, should leave it disabled.
Platforms without SDK-level persistence, such as MetaMask Extension, can enable it to replay queued payloads after restart. The queue stores the final adapter calls, so anonymous event splitting persists the identified and anonymous payloads separately.
onSetupCompletedCalled once after controller initialization with a guaranteed valid analyticsId. Use this for client platform-specific setup that requires the analytics ID (e.g., adding plugins). Errors in onSetupCompleted are caught and logged—they don't break the controller.
This package is part of a monorepo. Instructions for contributing can be found in the monorepo README.
FAQs
Common Analytics controller for event tracking
The npm package @metamask/analytics-controller receives a total of 64,237 weekly downloads. As such, @metamask/analytics-controller popularity was classified as popular.
We found that @metamask/analytics-controller demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 7 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
The campaign amassed more than 75,000 installs by targeting Russian-speaking users seeking access to blocked services.

Company News
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.