Interactive elements in popup respond to input within 100ms
Why it matters
Interactive elements that freeze for more than 100ms after a click break the user's perception of control. Per ISO 25010:2011 performance-efficiency.time-behaviour, 100ms is the threshold beyond which lag becomes noticeable. In practice, synchronous XHR or large inline loops in click handlers block the UI thread entirely — buttons appear stuck, users double-click, and duplicate actions trigger. Extensions with this pattern see disproportionate negative reviews relative to their functional quality.
Severity rationale
High because frozen UI elements during user interaction create a perception of defect, causing users to force-close or uninstall the extension.
Remediation
Move expensive work out of the click handler's synchronous path: disable the button immediately, show a loading state, then offload computation to the background service worker via chrome.runtime.sendMessage.
button.addEventListener('click', async () => {
button.disabled = true;
button.textContent = 'Processing...';
const result = await chrome.runtime.sendMessage({ type: 'PROCESS_DATA' });
button.disabled = false;
button.textContent = 'Done';
displayResult(result);
});
For CPU-intensive work that must stay in the popup context, consider a Web Worker. Synchronous XMLHttpRequest must be eliminated unconditionally — it blocks the entire browser UI thread.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Extension UX & Performance Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- iso-25010:2011 · performance-efficiency.time-behaviour
Taxons
History
- 2026-04-18·v1.0.0·Initial import from extension-ux-performance·automated