← Home ← Codex ← DEBT
Browse by Category
+ added · updated 7d
← Back to glossary

Mobile Web Performance

Mobile Intermediate
debt(d5/e7/b7/t9)
d5 Detectability Operational debt — how invisible misuse is to your safety net

Closest to 'specialist tool catches it' (d5). The detection_hints list Lighthouse, PageSpeed Insights, WebPageTest, and Chrome DevTools — all specialist tools requiring deliberate invocation. Mobile performance issues don't surface during normal desktop development or default linting; a developer must explicitly run a mobile audit or enable CPU/network throttling to see the problem.

e7 Effort Remediation debt — work required to fix once spotted

Closest to 'cross-cutting refactor across the codebase' (e7). The common_mistakes span JS bundle architecture (code-splitting), image pipelines, lazy loading, and interaction model (hover vs. touch). Fixing a site-wide mobile performance deficit touches asset delivery strategy, build tooling, image handling, and component design across the entire codebase — well beyond a single-file fix and typically requiring sustained multi-team effort.

b7 Burden Structural debt — long-term weight of choosing wrong

Closest to 'strong gravitational pull' (b7). Mobile performance applies broadly to the entire web context (applies_to: web). Addressing it shapes architectural decisions in every work stream: how JS is bundled and split, how images are served, how interactions are designed, and how rendering is prioritised. Every new feature must be evaluated against mobile constraints, making this a persistent, shaping constraint on development.

t9 Trap Cognitive debt — how counter-intuitive correct behaviour is

Closest to 'catastrophic trap — the obvious way is always wrong' (t9). The misconception field states exactly this: a fast desktop experience is assumed to mean a fast mobile experience, but mobile CPUs execute JavaScript 4-5x slower. A site scoring 95 on desktop Lighthouse can score 35 on mobile. This is the canonical case of the obvious approach (test on desktop, ship) being systematically and silently wrong for the majority of users.

About DEBT scoring →

Also Known As

mobile optimisation TTI mid-range device mobile web

TL;DR

Optimising web applications for mobile constraints — slower CPUs, limited RAM, high-latency 4G/5G, and battery sensitivity require different optimisation priorities than desktop.

Explanation

Mobile constraints differ from desktop: CPU is 4-5x slower (script execution is the bottleneck), RAM is limited (50-300MB browser budget), connection is high-latency even on 4G (100-200ms RTT vs 5ms wired), and battery drains on JS execution. Optimisation priorities: minimise main-thread JS (defer, lazy load, web workers), reduce layout thrashing (batch DOM reads and writes), use CSS animations over JS (GPU composited), compress images aggressively (AVIF, WebP), preconnect to third-party origins, and keep Time to Interactive under 5 seconds on a mid-range device.

Common Misconception

A fast desktop experience means a fast mobile experience — mobile CPUs execute JavaScript 4-5x slower than desktop; a 1-second desktop JS execution takes 5 seconds on mobile.

Why It Matters

Over 60% of web traffic is mobile — a site that scores 95 on desktop Lighthouse and 35 on mobile is failing the majority of its users.

Common Mistakes

  • Testing only on desktop or flagship phones — use Chrome DevTools throttling or real mid-range devices.
  • Large JavaScript bundles — 500KB of JS takes 5+ seconds to parse and execute on mid-range mobile.
  • No image compression — images are 50-80% of mobile page weight.
  • Hover-dependent interactions — mobile has no hover state; use touch events or tap targets.

Code Examples

✗ Vulnerable
// Bundle served to all devices — 2MB JS:
// webpack output: bundle.js 2.1MB
// Mobile mid-range (Moto G5): 12 seconds to parse
// Battery drain: high
// Result: 40% bounce rate on mobile
✓ Fixed
// Code splitting + lazy loading:
// Critical bundle: 80KB (loads immediately)
import('./checkout').then(m => m.init()); // 150KB loaded only on checkout
import('./admin').then(m => m.init());    // Never loaded for regular users

// Defer non-critical JS:
<script defer src="analytics.js">

// Respect user's data-saver preference:
if (!navigator.connection?.saveData) {
    loadHeroVideo();
}

// Test with throttling:
// Chrome DevTools: Network > Slow 4G, CPU > 4x slowdown

Added 16 Mar 2026
Edited 12 Jun 2026
Views 82
Rate this term
No ratings yet
🤖 AI Guestbook educational data only
| |
Last 30 days
0 pings T 1 ping W 1 ping T 0 pings F 0 pings S 2 pings S 2 pings M 0 pings T 0 pings W 0 pings T 4 pings F 4 pings S 2 pings S 1 ping M 0 pings T 1 ping W 0 pings T 0 pings F 0 pings S 0 pings S 0 pings M 0 pings T 0 pings W 1 ping T 0 pings F 2 pings S 0 pings S 0 pings M 2 pings T 0 pings W
No pings yet today
PetalBot 2
Amazonbot 17 Perplexity 12 SEMrush 7 Scrapy 7 ChatGPT 5 Google 5 Ahrefs 4 Unknown AI 2 PetalBot 2 Claude 1 Meta AI 1 Sogou 1 Bing 1 Majestic 1
crawler 64 crawler_json 2
DEV INTEL Tools & Severity
🟠 High ⚙ Fix effort: High
⚡ Quick Fix
Test on a real mid-range Android device or throttled CPU/network in Chrome DevTools — desktop performance scores can be 3-5x better than mobile; PHP's server response time matters less than client-side rendering
📦 Applies To
any web
🔗 Prerequisites
🔍 Detection Hints
Lighthouse mobile score <50; large JS bundles not code-split; unoptimised images; no lazy loading; heavy main thread work blocking INP
Auto-detectable: ✓ Yes lighthouse pagespeed-insights webpagetest chrome-devtools
⚠ Related Problems
🤖 AI Agent
Confidence: Medium False Positives: Medium ✗ Manual fix Fix: Medium Context: File

✓ schema.org compliant