Analytics for browser extensions.
Installs, events, trends and logs for the extension you already shipped.
npm install @moderok/sdkmanifest.json
0 changes
{ "manifest_version": 3, "name": "Tab Sweeper", "version": "2.4.1", "permissions": ["storage", "tabs", "alarms"], "background": { "service_worker": "background.js", "type": "module" }}background.js
+2 lines
import { Moderok } from "@moderok/sdk";import { sweepTabs } from "./sweep"; Moderok.init({ appKey: "mk_7f3a91c4e28b6d05" }); chrome.alarms.onAlarm.addListener(({ name }) => { if (name === "sweep") sweepTabs();});Two lines in your service worker. Your manifest doesn’t change.
5.7 kB gzipped, zero dependencies, and not one reference to window or document — written for the MV3 service worker, not adapted from a web page.
What you get
- Trends, events, and logs
- Actives, installs, updates, uninstalls and errors up top; every raw event underneath, in the same place.
- Survives the service worker
- Events queue in
chrome.storage.localand flush when MV3 wakes the worker, so a suspended extension does not lose data. - Logs, not just counts
- Errors arrive with their payload and stack trace, so you are not wiring in a second logging SDK.
- Your events, your schema
- You name the events and decide what each one carries. Nothing is inferred or renamed.
Real output
Every event lands in the log with its level, source and payload. Errors expand to the raw JSON your extension sent.
logs
Event logs
8,412 entries · Jul 30, 2026
- errorUncaught TypeError: Cannot read properties of undefined (reading 'tabId')14:07:33.912sweep_failedbackground.ts:214
{ "groupId": 41, "tabCount": 0, "lastSweep": "2026-07-30T13:42:19.006Z" } - warningstorage.local at 81% of quota (4.94 MB of 6.10 MB)13:58:07.441quota_warningservice_worker
- infoAlarm "sweep" fired while the worker was suspended; rescheduled +60s13:42:19.006alarm_rescheduledservice_worker
- infoOptions page opened from the toolbar menu13:29:55.208options_openedoptions_ui
- debugFlushed 47 events in 2 batches (312 ms)13:29:12.640queue_flushservice_worker
Pricing
- Free
$0
1M events / month
Every chart, every log. No card.
Get started - Pro
$29/mo
10M events / month
When free stops covering your traffic.
Get started - Team
$149/mo
100M events / month
Higher limits, same dashboard.
Get started
Every plan has every chart and every tool. A bigger plan only raises the monthly event allowance.