Porting Chrome add-on -> Firefox: how to make options page more easily accessible?

Background information: 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.

This particular extension is one where the user is going to need to open the options page regularly, and because of how the options page is structured it needs to open in its own tab, not in the manage extensions screen. On Chrome, the user can option the options page easily by right-clicking on the extension icon and selecting “Options”. However, in Firefox, it appears that it’s much more convoluted: they have to click on the extension in the toolbar, select “Manager”, click on the three-dots menu on the management page, and select “Preferences”. This is a rather inferior user experience to Chrome.

Is there something I can do to add a Preferences or Options menu command when they right-click, or is this just not something that Firefox supports? If the latter, then what’s the “Firefox way” to make it easier for a user to access the preferences for an extension?

Yeah, Firefox is terrible at this, there should be for sure link to Options page in the context menu (also link to store page would be nice).

Anyway, as a workaround, you can create button in your UI that calls openOptionsPage API.

Or you can create context menu with the ContextType “action”, that will show it when you right click the toolbar icon:

Thanks for the pointers. Based on your advice I made sure I had action: {} in my manifest.json and then added this to my background script:

chrome.action.onClicked.addListener(() => {
    chrome.runtime.openOptionsPage();
});

Now the user can click on the extension’s toolbar icon to open the options page.