Statistics
Aggregate numbers from thousands of macOS and Windows applications we have extracted
What is the most popular error monitoring SDK for desktop apps?
Error monitoring SDK adoption across desktop applications that include at least one error tracking dependency.
What analytics SDKs do desktop apps use?
Analytics and product telemetry SDK adoption across desktop applications.
What payment SDKs do desktop apps use?
Payment and billing SDK adoption across desktop applications that include at least one payment dependency.
What real-time SDKs do desktop apps use?
Real-time communication and sync SDK adoption across desktop applications.
What observability SDKs do desktop apps use?
Application performance monitoring and observability SDK adoption across desktop applications.
What are the most popular desktop SDKs?
Top 15 most widely adopted dependencies across all tracked desktop apps, ranked by number of apps using each SDK.
| SDK | Category | Apps | % |
|---|---|---|---|
| semver | Utility | 4816 | 16.8% |
| mime | Encoding | 4262 | 14.9% |
| uuid | Utility | 3450 | 12% |
| bytes | I/O | 3241 | 11.3% |
| glob | File System | 3229 | 11.3% |
| smallvec | Data Structure | 3054 | 10.6% |
| crossbeam | Async Runtime | 3035 | 10.6% |
| hashbrown | Data Structure | 2989 | 10.4% |
| once_cell | Utility | 2955 | 10.3% |
| idna | Encoding | 2883 | 10.1% |
| regex (Rust) | Parser | 2878 | 10% |
| serde | Serialization | 2875 | 10% |
| electron-updater | Auto Update | 2784 | 9.7% |
| anyhow | Utility | 2642 | 9.2% |
| base64 | Encoding | 2627 | 9.2% |
How many desktop apps lack key SDKs?
Across 21,799 apps with at least one detected dependency, the vast majority lack SDKs in major categories.
How many Electron apps are there?
Runtime breakdown across 28,685 desktop applications. Electron powers 16.3% of all tracked apps.
macOS
Windows
How up-to-date are Electron apps?
Electron major version distribution across 4649 apps. 81.3% run a version more than 5 releases behind the latest (v45).
Green = v41+ (recent) / Orange = older versions
How complex are desktop apps?
Median and mean dependency count by runtime. The overall median is 7 dependencies per app (mean: 60.3). 24% of apps have zero detected dependencies.
| Runtime | Median Deps | Mean Deps | Apps |
|---|---|---|---|
| Flutter | 133 | 149 | 703 |
| Tauri | 114 | 124.6 | 1685 |
| Electron | 81 | 168.5 | 4672 |
| Unity | 70 | 65.3 | 200 |
| JVM | 69 | 184.5 | 705 |
| Rust (Native) | 65 | 89.2 | 672 |
| Go (Native) | 59 | 96.4 | 650 |
| python+electron | 50 | 176.7 | 78 |
| Python | 36 | 59.9 | 735 |
| GTK | 35 | 62.1 | 51 |
| Wails | 30 | 52.2 | 110 |
| Qt | 15 | 32.6 | 1011 |
| CEF | 8 | 33.4 | 98 |
| NW.js | 8 | 31.7 | 6 |
| GLFW | 5 | 10 | 8 |
| SDL | 4 | 9.8 | 111 |
| .NET | 3 | 35.7 | 5047 |
| Native (Swift/ObjC) | 2 | 8.8 | 6842 |
| wxWidgets | 2 | 19.8 | 46 |
| Chromium | 2 | 4.6 | 26 |
| Delphi | 1 | 1.4 | 20 |
| Native (unclassified) | 0 | 3.4 | 5096 |
| JUCE | 0 | 0.3 | 63 |
| Gecko | 0 | 0.2 | 48 |
What OS versions do desktop apps require?
Minimum OS version requirements across macOS and Windows apps.
Minimum macOS Version
Minimum Windows Version
How are desktop apps signed and distributed?
Each platform exposes different trust signals, but the same three tiers exist on both: apps from the OS-curated store, apps signed and distributed directly, and everything else. The comparison below uses that shared frame; the platform-specific panels below keep the native detail (entitlements on macOS, installer technologies on Windows).
macOS
12,619 apps- StoreMac App Store39.7%5,010
- Signed directNotarized / Developer ID57.4%7,238
- Unsigned or unknownNo usable signature2.9%371
Windows
16,066 apps- StoreMicrosoft Store / MSIX44.4%7,140
- Signed directAuthenticode-signed installer14.9%2,388
- Unsigned or unknownNo signature, or signing not detected40.7%6,538
Authenticode coverage: 18.6% of apps. Most non-store apps land in "Unsigned or unknown" because their installer artifacts were evicted post-extraction, not because they ship unsigned.
macOS · 12,619 apps
Most common entitlements
| Entitlement | Apps | % |
|---|---|---|
| app-sandbox | 6192 | 49.1% |
| com.apple.application-identifier | 5276 | 41.8% |
| network.client | 5129 | 40.6% |
| com.apple.developer.team-identifier | 5124 | 40.6% |
| files.user-selected.read-write | 4080 | 32.3% |
| cs.allow-jit | 2608 | 20.7% |
| cs.allow-unsigned-executable-memory | 2264 | 17.9% |
| cs.disable-library-validation | 2127 | 16.9% |
Windows · 16,066 apps
Installer technologies
How do desktop apps deliver updates?
Detected auto-update mechanisms by platform. Cross-platform updaters (like electron-updater) appear on both sides.
macOS
| Mechanism | Scope | Apps |
|---|---|---|
| electron-updater | Cross-platform | 2,784 |
| Homebrew Auto-Update | macOS | 1,645 |
| Sparkle | macOS | 1,474 |
Windows
| Mechanism | Scope | Apps |
|---|---|---|
| MSIX / Microsoft Store | Windows | 7,140 |
| electron-updater | Cross-platform | 2,784 |
How big are desktop apps by runtime?
Average and median application bundle size grouped by runtime. macOS apps average 240.1 MB; Windows apps average 227.5 MB.
macOS
| Runtime | Avg | Median | Apps |
|---|---|---|---|
| Native (Swift/ObjC) | 92.3 MB | 18.7 MB | 6842 |
| Electron | 612.9 MB | 525.6 MB | 2191 |
| Tauri | 62.8 MB | 27.9 MB | 916 |
| Qt | 455.2 MB | 217.2 MB | 510 |
| Native (unclassified) | 225.1 MB | 33.3 MB | 441 |
| JVM | 520.2 MB | 218.4 MB | 305 |
| Python | 628 MB | 294.2 MB | 278 |
| Flutter | 226.3 MB | 152.3 MB | 262 |
| Unity | 633.2 MB | 464.3 MB | 200 |
| Rust (Native) | 197.2 MB | 66.2 MB | 198 |
| .NET | 242 MB | 169.5 MB | 132 |
| Go (Native) | 104.9 MB | 60.8 MB | 67 |
| Wails | 67.4 MB | 23.7 MB | 66 |
| JUCE | 51.3 MB | 25 MB | 63 |
| SDL | 169.1 MB | 77.8 MB | 47 |
| wxWidgets | 186.3 MB | 71.7 MB | 46 |
| CEF | 1,223.9 MB | 1,129.2 MB | 31 |
| GTK | 270.5 MB | 270 MB | 11 |
| NW.js | 506.3 MB | 635.3 MB | 5 |
| GLFW | 63.8 MB | 63.8 MB | 2 |
Windows
| Runtime | Avg | Median | Apps |
|---|---|---|---|
| .NET | 157.1 MB | 70.1 MB | 4915 |
| Native (unclassified) | 93.4 MB | 14.1 MB | 4467 |
| Electron | 556.1 MB | 419.6 MB | 2480 |
| Tauri | 67.1 MB | 23.2 MB | 769 |
| Go (Native) | 104.6 MB | 32.6 MB | 583 |
| Qt | 290.8 MB | 150 MB | 501 |
| Rust (Native) | 108.7 MB | 28.8 MB | 474 |
| Python | 429 MB | 178.7 MB | 457 |
| Flutter | 195.2 MB | 71.4 MB | 441 |
| JVM | 591.1 MB | 207.5 MB | 400 |
| python+electron | 1,344.6 MB | 836 MB | 78 |
| CEF | 739.7 MB | 473.8 MB | 66 |
| SDL | 279.7 MB | 61.6 MB | 64 |
| Gecko | 312.8 MB | 342.1 MB | 48 |
| Wails | 51.9 MB | 22.4 MB | 44 |
| GTK | 191.2 MB | 91.8 MB | 40 |
| Chromium | 621.5 MB | 483.1 MB | 26 |
| Delphi | 104.3 MB | 66.9 MB | 20 |
| GLFW | 172.9 MB | 56.9 MB | 6 |
Methodology
Statistics are derived from automated analysis of 12,619 macOS and 16,066 Windows application bundles, with version history going back 13 years. For macOS, we extract framework plists, package.json from Electron asars, SPM bundles, CocoaPods, and binary string analysis. For Windows, we analyze MSI/MSIX/EXE installers, PE binaries, .NET deps.json, and JVM JARs. Runtime classification uses framework detection heuristics. Download counts come from Homebrew Cask analytics and GitHub release data. Cross-platform detection uses both manual mapping and automated name matching across platforms. See our FAQ for more details on our extraction methodology.