v146 · capabilities · performance
Compute Pressure Pairing
Use the CPU Performance API for a static device tier, then combine it with live Compute Pressure states. The tier sets the quality ceiling; pressure and hysteresis decide how quickly the app steps down under load.
Feature detection
checking...
CPU Performance API
-
Reading navigator.cpuPerformance...
Current spec surface:
navigator.cpuPerformance, a coarse numeric tier where 1-4 increases capability and 0 means unknown.Heuristic fallback
-
hardwareConcurrency + deviceMemory
Shown beside the real API so authors can see what the platform tier replaces when the API is available.
Applied app tier
-
Detecting...
This low / mid / high app tier selects the row family in the quality matrix. Override it below to test every floor.
Tier and pressure controls
Applied tier override
Raw pressure sample
Waiting for samples...
Current recommendation
Detecting signals...
Media output preview
Video preset pending
Audio-only fallback active
Pressure history: raw samples and effective recommendation
Decision matrix - tier x pressure -> quality
Highlighted row matches the applied tier and the effective pressure state after hysteresis and pause rules.
| CPU tier | Pressure state | Video quality | ML features | Particle budget | Background tasks |
|---|---|---|---|---|---|
| High | nominal | 1080p 60fps | On, full model | 2000 | All enabled |
| High | fair | 1080p 30fps | On, full model | 1000 | Throttled |
| High | serious | 720p 30fps | On, lite model | 400 | Paused |
| High | critical | 480p 15fps | Off | 0 | Paused |
| Mid | nominal | 720p 30fps | On, lite model | 500 | Enabled |
| Mid | fair | 720p 15fps | On, lite model | 200 | Throttled |
| Mid | serious | 480p 15fps | Off | 50 | Paused |
| Mid | critical | 360p 10fps | Off | 0 | Paused |
| Low | nominal | 480p 15fps | Off | 50 | Throttled |
| Low | fair | 360p 10fps | Off | 0 | Paused |
| Low | serious | 240p 10fps | Off | 0 | Paused |
| Low | critical | Audio only | Off | 0 | Paused |
const rawTier = typeof navigator.cpuPerformance === "number"
? navigator.cpuPerformance
: 0;
const appTier = mapCpuPerformanceToAppTier(rawTier);
const observer = new PressureObserver((records) => {
const rawPressure = records.at(-1).state;
const effectivePressure = hysteresis.push(rawPressure);
applyQualityPreset(appTier, effectivePressure);
});
try {
await observer.observe("cpu", { sampleInterval: 1000 });
} catch (error) {
// NotAllowedError can mean Permissions-Policy blocked "compute-pressure".
useSimulationControls(error.name);
}
see also
- Device Tier Readout - static tier detection
- Video Conference Tier Adapter - quality per tier
- Adaptive Resource Loader - loading strategy per tier
- ChromeStatus entry
- CPU Performance API proposal
- Compute Pressure API spec