Context
Original scope was just the Update Check Started/Not Found/Failed triplet with a ~22% of desktop / ~$140/month claim sourced from short PostHog/Mixpanel windows. Pulled the full 2-year Mixpanel raw-event export (92,242,888 events, May 2024 → May 2026) and re-counted against the actual bundle. Numbers below replace the originals.
The corrected picture: the Update Check triplet is real but smaller than claimed, and it's only one of ~10 operational/diagnostic events firing at high cadence from desktop. Total cull is ~8.66% of the April-2026 desktop-era month, not 22%.
Two scopes shown — most of these events shipped recently on desktop, so lifetime % undersells the current noise; April 2026 is what "going forward" would look like.
Counts (from the export bundle)
| Event |
Lifetime |
%92M |
April 2026 |
%20M |
Code reasoning |
Update Check Started |
584,698 |
0.63% |
427,441 |
2.08% |
Sparkle SUScheduledCheckInterval=600 → fires every 10 min while app is running. Operational. Update Available / Update Installed carry the actual signal. |
Update Not Found |
467,464 |
0.51% |
338,031 |
1.65% |
Pairs with each Started call. Same. |
Update Check Failed |
89,299 |
0.10% |
68,841 |
0.34% |
Sparkle network failures. Sentry territory. |
App Became Active |
377,493 |
0.41% |
259,817 |
1.27% |
NSApplication.didBecomeActiveNotification — fires on every cmd-tab back. Pure focus noise. |
App Resigned Active |
354,490 |
0.38% |
245,560 |
1.20% |
NSApplication.willResignActiveNotification — every cmd-tab away. Same. |
Display Info |
85,896 |
0.09% |
60,725 |
0.30% |
Screen-dimensions diagnostic. No product signal. |
Launch At Login Status |
85,238 |
0.09% |
60,634 |
0.30% |
Polled config-state read, not a user action. |
Settings State |
226,471 |
0.25% |
171,557 |
0.84% |
Periodic 3-boolean settings snapshot. State, not action. |
App Startup Timing |
69,739 |
0.08% |
49,187 |
0.24% |
Cold-start timing diagnostic. Belongs in perf telemetry, not analytics. |
Notification Settings Checked |
133,324 |
0.14% |
93,035 |
0.45% |
Gated on change in AppState.swift, but still fires often. State, not action. |
Keep: All Settings State (29,355 / 21,622) — code comment says "fired on app launch, at most once per day". Bounded, gives a daily snapshot worth having.
Totals
| Scope |
Total events |
Cull volume |
% cull |
| Lifetime (2 yr) |
92,242,888 |
~2,473,612 |
2.68% |
| April 2026 alone |
20,514,441 |
~1,775,267 |
8.66% |
April 2026 is the desktop-on-Mixpanel month before the Apr 29 PostHog cutover (PR #7086). It's the most representative window for "what desktop noise looks like at steady state."
Recommended cull list
- Update Check Started, Update Not Found, Update Check Failed — drop all three. Keep
Update Available / Update Installed only. Originating call sites: desktop/Desktop/Sources/UpdaterViewModel.swift:47,88,129 → AnalyticsManager.updateCheck* → PostHogManager.swift:611-639.
- App Became Active, App Resigned Active — drop entirely; not actionable. Call sites:
desktop/Desktop/Sources/OmiApp.swift:1254,1260 → PostHogManager.swift:335,339.
- Display Info, Launch At Login Status, Settings State — drop, or fold into the existing daily
All Settings State snapshot. Call sites: OmiApp.swift:439, AnalyticsManager.swift:956, AnalyticsManager.swift:719.
- App Startup Timing — move to perf telemetry (Sentry) instead of PostHog analytics. Call site:
AnalyticsManager.swift:268.
- Notification Settings Checked — keep only the change-detected case;
AppState.swift:805-820 already gates it. The 93k/month is presumably already real changes, but worth a property-distribution check before deciding.
What we'd lose
- Per-poll telemetry on the updater, focus changes, settings reads, screen geometry. All recoverable from local logs / Sentry / server-side state if ever needed.
Owner
Desktop. ~30 lines deleted across PostHogManager.swift, AnalyticsManager.swift, UpdaterViewModel.swift, OmiApp.swift. Single PR.
Methodology
Counts come from data.mixpanel.com/api/2.0/export for project 3314908 (Based Hardware), windowed 2024-05-01 → 2026-05-05, exported via scripts/migration/mixpanel_export.sh (175 daily/monthly chunks, 0 failures, 4.18 GB gz, 92,242,888 lines). Per-event counts via zgrep -c '\"event\":\"<NAME>\"' chunks/*.jsonl.gz.
Refs
Context
Original scope was just the
Update Check Started/Not Found/Failedtriplet with a~22% of desktop / ~$140/monthclaim sourced from short PostHog/Mixpanel windows. Pulled the full 2-year Mixpanel raw-event export (92,242,888 events, May 2024 → May 2026) and re-counted against the actual bundle. Numbers below replace the originals.The corrected picture: the Update Check triplet is real but smaller than claimed, and it's only one of ~10 operational/diagnostic events firing at high cadence from desktop. Total cull is ~8.66% of the April-2026 desktop-era month, not 22%.
Two scopes shown — most of these events shipped recently on desktop, so lifetime % undersells the current noise; April 2026 is what "going forward" would look like.
Counts (from the export bundle)
Update Check StartedSUScheduledCheckInterval=600→ fires every 10 min while app is running. Operational.Update Available/Update Installedcarry the actual signal.Update Not FoundUpdate Check FailedApp Became ActiveNSApplication.didBecomeActiveNotification— fires on every cmd-tab back. Pure focus noise.App Resigned ActiveNSApplication.willResignActiveNotification— every cmd-tab away. Same.Display InfoLaunch At Login StatusSettings StateApp Startup TimingNotification Settings CheckedAppState.swift, but still fires often. State, not action.Keep:
All Settings State(29,355 / 21,622) — code comment says "fired on app launch, at most once per day". Bounded, gives a daily snapshot worth having.Totals
April 2026 is the desktop-on-Mixpanel month before the Apr 29 PostHog cutover (PR #7086). It's the most representative window for "what desktop noise looks like at steady state."
Recommended cull list
Update Available/Update Installedonly. Originating call sites:desktop/Desktop/Sources/UpdaterViewModel.swift:47,88,129→AnalyticsManager.updateCheck*→PostHogManager.swift:611-639.desktop/Desktop/Sources/OmiApp.swift:1254,1260→PostHogManager.swift:335,339.All Settings Statesnapshot. Call sites:OmiApp.swift:439,AnalyticsManager.swift:956,AnalyticsManager.swift:719.AnalyticsManager.swift:268.AppState.swift:805-820already gates it. The 93k/month is presumably already real changes, but worth a property-distribution check before deciding.What we'd lose
Owner
Desktop. ~30 lines deleted across
PostHogManager.swift,AnalyticsManager.swift,UpdaterViewModel.swift,OmiApp.swift. Single PR.Methodology
Counts come from
data.mixpanel.com/api/2.0/exportfor project 3314908 (Based Hardware), windowed2024-05-01 → 2026-05-05, exported viascripts/migration/mixpanel_export.sh(175 daily/monthly chunks, 0 failures, 4.18 GB gz, 92,242,888 lines). Per-event counts viazgrep -c '\"event\":\"<NAME>\"' chunks/*.jsonl.gz.Refs
omi-macos(302298)Based Hardware(3314908)