Flatten browser context menu

Feature/Fix name: Flatten the browser context menu

Feature/Fix Description

Currently the context menu is structured as

  • Bitwarden >
    • site 1 >
      • autofill
      • copy user
      • copy pass
    • site 2 >
      • autofill
      • copy user
      • copy pass
    • generate password

I believe (based on my own behaviour and previous discussions) that site 1 > autofill is by far the most common action, so having it readily accessible instead of two levels deep would improve usability.

Ideally I’d like Autofill site 1 to be a sibling to the root Bitwarden item, however browser extensions are only permitted a single top-level item.

So as a next best option, I’d like to change the context menu to flatten each site into a section directly under Bitwarden’s root:

  • Bitwarden >
    • site 1
    • autofill
    • copy user
    • copy pass

    • site 2
    • autofill
    • copy user
    • copy pass

    • generate password

Or visually:

The site 1 and site 2 headers are implemented as disabled items.
Alternatively the headers could be omitted by including the site name in one of the action labels:

  • autofill github,com (akdor1154)
  • copy user
  • copy pass

  • autofill github,com (second-user)
  • copy user
  • copy pass

I don’t have a strong opinion on this, one is a bit noisy because it’s a bit wide and the other is a bit noisy because it’s a bit long.


The only downside I can come up with, is that when the user has many saved credentials, the menu will get very long. This seems like a fringe case to me, and I might quote a previous bw dev’s advice to “Just do what most people do and click on the Bitwarden icon in your browser’s toolbar, select the appropriate login from the list, and boom - your info is autofilled.” Of course it’s possible to have some cutoff to turn the menu back into nested form, but my tendency is that the complexity is not worth it.
I’m pretty sure browsers at least put little scrollers at the top/bottom of menus if they exceed screen height, but I’d double check this.

Looking at the code this looks straightforward for me to do, just checking in first before making unsolicited UI change requests.

Clients / Repos Affected:

  • clients/apps/browser

Timeline to completion (estimate):

ETA: two working days

Previous discussion:

This has been requested previously: