Mobile Web Performance
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
Tags
🤝 Adopt this term
£79/year · your link shown here
Added
16 Mar 2026
Edited
22 Mar 2026
Views
42
🤖 AI Guestbook educational data only
|
|
Last 30 days
Agents 0
No pings yet today
Amazonbot 15
Perplexity 11
SEMrush 3
Unknown AI 2
Ahrefs 2
ChatGPT 1
Also referenced
How they use it
crawler 34
Related categories
⚡
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