Porting chrome add-on -> firefox: why can't I pin my add-on to the toolbar?

I am trying to port my a recently created Chrome Extension to Firefox. I am using manifest v3 for the Firefox version of my extension. I have had to make minimal changes to the Chrome manifest.json to get the extension to load in Firefox: .background.service_worker => .background.scripts, added .browser_specific_settings.gecko.id and .browser_specific_settings.gecko.strict_min_version, .options_page => .options_ui.page, add .options_ui.open_in_tab set to true.

With these changes, I am able to load the extension XPI into Firefox Developer Edition with signature verification disabled. However, I am unable to pin the loaded extension to my toolbar like I am able to do with other extensions I’ve loaded into the same browser profile. I am also able to pin the extension to the toolbar in Chrome with no trouble.

Is this just because it’s an unsigned extension, i.e., if/when it’s published on addons.mozilla.org will users who install it from there be able to pin it to their toolbars, or is there an additional change I need to make to manifest.json to allow it to be pinned?

In case it is relevant: extension browser supplies three icons, sized 16, 48, and 128, in PNG format.

Manually you can pin it here:
image

In the manifest you pin it by setting “default_area” to “navbar”, example:

  "browser_action": {
    "default_area": "navbar",
    "default_icon": {
      "128": "128.png"
    },
    "default_popup": "popup/popup.html"
  },
  1. Perhaps I was unclear. The “Pin to Toolbar” menu option IS NOT VISIBLE for my add-on, hence this question.

  2. I don’t want to put it in the navbar, I want the user to be able to pin it with their other add-ons like they should be able to if desired.

Could you share your manifest file here?
The option would be missing if you don’t define browser action. Also my example is using old MV2 version, in MV3 it’s called only “action”.

Also, try to install web-ext and then run" web-ext lint" in your addon source directory, it will check the sources for common mistakes:

Aha! thanks for the tip. I added action.default_area = “navbar” to my manifest.json and now there’s an icon that is pinnable.