# Keyboard shortcuts do not conflict with common browser or system defaults

- **Pattern:** `ab-001376` (`extension-ux-performance.browser-ux.keyboard-shortcuts-safe`)
- **Severity:** high
- **Lifecycle:** active
- **Last modified:** 2026-04-18
- **Canonical URL:** https://auditbuffet.com/patterns/ab-001376
- **License:** CC-BY-4.0 — attribute to AuditBuffet Pattern Catalog (https://auditbuffet.com/patterns/ab-001376)

## Why it matters

Extension shortcuts that collide with Chrome-reserved combinations (`Ctrl+T`, `Ctrl+W`, `Ctrl+Shift+N`, `Ctrl+L`, `Ctrl+R`, `F5`) get silently dropped by Chrome during registration — the manifest declares them, the extension looks configured, but the shortcut never fires. Users file bug reports about features that do not work, developers waste cycles investigating non-bugs, and support costs climb. Conflicts with OS-level shortcuts (`Cmd+Space`, `Win+L`) cannot be overridden at all and make the extension appear broken on specific platforms.

## Severity rationale

High because silently dropped shortcuts create bug reports, support load, and the appearance of a broken extension.

## Remediation

Use `Alt+Shift+{Key}` or `MacCtrl+Shift+{Key}` patterns in `manifest.json` — these bindings are reliably available to extensions on all platforms Chrome supports. Declare platform variants explicitly:

```json
{
  "commands": {
    "toggle-feature": {
      "suggested_key": { "default": "Alt+Shift+F", "mac": "MacCtrl+Shift+F" },
      "description": "Toggle feature"
    }
  }
}
```

Verify registration in a clean Chrome profile at `chrome://extensions/shortcuts`.

## Detection

- **ID:** `keyboard-shortcuts-safe`
- **Severity:** `high`
- **What to look for:** Examine the `commands` section of `manifest.json`. For each keyboard shortcut defined (`suggested_key`), check it against known browser shortcuts that extensions should not override. Particularly problematic combinations: `Ctrl+T` (new tab), `Ctrl+W` (close tab), `Ctrl+Shift+N` (incognito), `Ctrl+L` (address bar), `Ctrl+R` (reload), `Ctrl+H` (history), `F5` (reload), `Alt+F4` (close window on Windows). Also check for shortcuts that conflict with common system shortcuts on macOS (`Cmd+Space` for Spotlight) or Windows (`Win+L` for lock screen). Count all instances found and enumerate each.
- **Pass criteria:** All extension keyboard shortcuts use combinations that Chrome allows extensions to register and that do not overlap with reserved browser shortcuts. The recommended pattern is `Alt+Shift+{Key}` for cross-platform compatibility. No shortcuts attempt to override globally reserved key combinations. At least 1 implementation must be confirmed.
- **Fail criteria:** Extension `manifest.json` declares a shortcut that conflicts with a browser-reserved combination (Chrome silently ignores shortcuts it cannot register, but the extension may appear non-functional). Shortcuts use single modifier keys (`Ctrl+{letter}`) that commonly conflict with browser actions.
- **Skip (N/A) when:** The extension declares no `commands` in the manifest (no keyboard shortcuts).
- **Cross-reference:** The `popup-renders-fast` check in Popup Responsiveness verifies that keyboard-triggered popup openings are equally fast.
- **Detail on fail:** Name the conflicting shortcut. Example: `"Manifest declares Ctrl+Shift+N as extension shortcut — this is reserved for incognito window, Chrome will not register it"` or `"Ctrl+R shortcut conflicts with page reload — users expecting reload will trigger extension action instead."`
- **Remediation:** Use `Alt+Shift+{Key}` patterns which are available to extensions across platforms:

  ```json
  {
    "commands": {
      "toggle-feature": {
        "suggested_key": {
          "default": "Alt+Shift+F",
          "mac": "MacCtrl+Shift+F"
        },
        "description": "Toggle extension feature"
      }
    }
  }
  ```

  Test your shortcuts in a clean Chrome profile to verify they register correctly. Users can also re-map shortcuts at `chrome://extensions/shortcuts`.

Taxons: user-experience

HTML version: https://auditbuffet.com/patterns/ab-001376
