What percent of mobile apps have a dark-mode or theme toggle?
19.0% of tracked apps (154 of 809) have a captured dark-mode or theme-toggle surface [1]. So an explicit in-app dark-mode toggle is a minority pattern — under 1 in 5 tracked apps — which mostly reflects that iOS/Android already honor the system theme automatically. A dedicated toggle is a nice-to-have, not an expected screen.
154 of ~800 tracked apps (19.0%) have a captured dark-mode or theme toggle — Lazyweb Research, July 2026.
The finding
154 of 809 apps (19.0%) surface an explicit dark-mode/theme toggle [1]. That puts it well below majority patterns and in the same low-prevalence tier as biometric login (16.6%) and onboarding quizzes (13.3%) [2].
| Pattern | Apps | % |
|---|---|---|
| Dark mode toggle | 154 | 19.0% |
| Biometric login | 134 | 16.6% |
| Onboarding quiz | 108 | 13.3% |
How to apply it
Because the OS already switches most apps to dark automatically, an in-app override is optional polish rather than an expectation — only ~1 in 5 tracked apps ship one [1]. Prioritize a manual toggle when your brand or content (reading, photo, night-use apps) benefits from letting users force a theme independent of the system setting; otherwise, honoring the system theme is the majority-safe default.
Caveats
Lower bound — reflects only theme-toggle screens Lazyweb captured [1]. This counts explicit in-app toggles, not apps that support dark mode purely via the system setting, so true dark-mode support is much higher than 19% — this figure is specifically about a visible in-app control. Tag matches '%dark mode%', deduped by company.
The numbers
| Stat | Computed from |
|---|---|
| 19.0% (154 of 809) | prevalence_dark_mode: 154/809 |
| Dark mode 19.0% (154), Biometric 16.6% (134), Onboarding quiz 13.3% (108) | prevalence_dark_mode, prevalence_biometric_login, prevalence_onboarding_quiz |
Sources & citations
- [1] Lazyweb Research analysis of 809 mobile apps (809 mobile apps with >=1 captured screen; 751 with tag data; median 41 screens/app), July 2026. Prevalence = COUNT(DISTINCT company_name) over LLM synonym tags; denominator is 809 tracked apps (reported conservatively over all apps-with-screens, not the 62,376-row companies table). Lower bound: only reflects screens Lazyweb captured (median 41/app). ↩
Source: Lazyweb Research — proprietary analysis of real, in-market app screens. Cite as Lazyweb Research, 2026-07-07.