v147 · Web APIs · demo
Adaptive Loading Demo
A practical tiered loading strategy using the updated navigator.deviceMemory values. Chrome 147's new 16 GB and 32 GB buckets enable a distinct high-end tier that wasn't possible before.
Simulate device memory:
Low-end
navigator.deviceMemory ≤ 2 GB
- ✓ Static images (JPEG, WebP)
- ✓ CSS-only animations
- ✗ Video autoplay
- ✗ WebGL / WebGPU
- ✗ Heavy JS bundles
- ✗ Service Worker pre-cache
Mid-range
4–8 GB
- ✓ Static images (AVIF)
- ✓ CSS + JS animations
- ✓ Video autoplay
- ✓ WebGL (moderate)
- ✗ Heavy JS bundles
- ✗ Service Worker pre-cache
High-end
≥ 16 GB (new in Chrome 147)
- ✓ Static images (AVIF)
- ✓ CSS + JS animations
- ✓ Video autoplay (4K)
- ✓ WebGPU compute
- ✓ Full JS bundle
- ✓ Service Worker pre-cache
Old vs new value mapping
Pre-Chrome 147 possible values:0.25, 0.5, 1, 2, 4, 8 GB
Chrome 147+ · Android:2, 4, 8 GB
Chrome 147+ · Desktop / other:2, 4, 8, 16, 32 GB
Impact on low-tier check (≤ 2 GB):now catches all Android low-end correctly
High-end tier (≥ 16 GB):newly detectable in Chrome 147+
// Chrome 147+ — the high-end tier is now reachable
const mem = navigator.deviceMemory ?? 4; // default to mid if unavailable
let tier;
if (mem >= 16) tier = 'high'; // NEW: possible in Chrome 147+
else if (mem >= 4) tier = 'mid';
else tier = 'low';
switch (tier) {
case 'high':
import('./high-fidelity-bundle.js');
preloadInServiceWorker(FULL_ASSET_LIST);
break;
case 'mid':
import('./standard-bundle.js');
break;
case 'low':
loadMinimalCSS();
break;
}
see also
- Memory Inspector — live value and bucket visualization
- Back to feature index
- ChromeStatus entry
implementation reference
Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗