# sidebar Documentation: - [Chrome Side Panel API](https://developer.chrome.com/docs/extensions/reference/sidePanel) [MV3] - [Opera Sidebar Action API](https://help.opera.com/en/extensions/sidebar-action-api/) - [Firefox Sidebar Action API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction) A promise-based wrapper around Chromium's side panel (`chrome.sidePanel`, MV3) and Firefox/Opera `sidebarAction` APIs. Methods provide unified behavior to get/set options and behavior, open the panel, and, where supported, manage title and icon (Firefox & Opera) and badge (Opera). Support includes Chrome, Edge, Firefox, and Opera. ## Classes ### SidebarError Custom error class thrown when an API method is not supported or fails. ## Methods - [getSidebarOptions(tabId?)](#getSidebarOptions) [Chromium] - [getSidebarBehavior()](#getSidebarBehavior) [Chromium] - [canOpenSidebar()](#canOpenSidebar) - [canCloseSidebar()](#canCloseSidebar) - [openSidebar(options)](#openSidebar) - [closeSidebar(options)](#closeSidebar) - [setSidebarOptions(options?)](#setSidebarOptions) [Chromium] - [setSidebarBehavior(behavior?)](#setSidebarBehavior) [Chromium] - [isOpenSidebar(windowId?)](#isOpenSidebar) - [toggleSidebar()](#toggleSidebar) [Firefox] - [setSidebarPath(path, tabId?)](#setSidebarPath) - [getSidebarPath(tabId?)](#getSidebarPath) - [setSidebarTitle(title, tabId?)](#setSidebarTitle) [Firefox, Opera] - [setSidebarIcon(details)](#setSidebarIcon) [Firefox, Opera] - [setSidebarBadgeText(text, tabId?)](#setSidebarBadgeText) [Opera] - [clearSidebarBadgeText(tabId?)](#clearSidebarBadgeText) [Opera] - [setSidebarBadgeTextColor(color, tabId?)](#setSidebarBadgeTextColor) [Opera] - [setSidebarBadgeBgColor(color, tabId?)](#setSidebarBadgeBgColor) [Opera] - [getSidebarTitle(tabId?)](#getSidebarTitle) [Firefox, Opera] - [getSidebarBadgeText(tabId?)](#getSidebarBadgeText) [Opera] - [getSidebarBadgeTextColor(tabId?)](#getSidebarBadgeTextColor) [Opera] - [getSidebarBadgeBgColor(tabId?)](#getSidebarBadgeBgColor) [Opera] --- ### getSidebarOptions [Chromium] ``` getSidebarOptions(tabId?: number): Promise ``` Retrieves the side panel options (e.g., `path`) for the specified tab. Throws if the Side Panel API isn't supported (requires Chromium-based browsers like Chrome, Edge, or Opera MV3). [MV3] ### getSidebarBehavior [Chromium] ``` getSidebarBehavior(): Promise ``` Gets the current side panel behavior settings. Throws if unsupported (requires Chromium-based browsers like Chrome, Edge, or Opera MV3). [MV3] ### canOpenSidebar ``` canOpenSidebar(): boolean ``` Returns `true` if `chrome.sidePanel` (Chromium MV3) is available, or if `sidebarAction.open` is available (Firefox/Opera). ### canCloseSidebar ``` canCloseSidebar(): boolean ``` Returns `true` if `chrome.sidePanel` (Chromium MV3) is available, or if `sidebarAction.close` is available (Firefox/Opera). ### openSidebar ``` openSidebar(options: chrome.sidePanel.OpenOptions): Promise ``` Opens the side panel with the given options in Chromium-based browsers (MV3). Falls back to `sidebarAction.open()` in Firefox/Opera. Throws if unsupported. ### closeSidebar ``` closeSidebar(options: chrome.sidePanel.CloseOptions): Promise ``` Closes the side panel with the given options in Chromium-based browsers (MV3). Falls back to `sidebarAction.close()` in Firefox/Opera. Throws if unsupported. ### setSidebarOptions [Chromium] ``` setSidebarOptions(options?: chrome.sidePanel.PanelOptions): Promise ``` Sets side panel options (e.g., `path`) in Chromium-based browsers (MV3). Throws if unsupported. [MV3] ### setSidebarBehavior [Chromium] ``` setSidebarBehavior(behavior?: chrome.sidePanel.PanelBehavior): Promise ``` Updates default panel behavior in Chromium-based browsers (MV3). Throws if unsupported. [MV3] ### setSidebarPath ``` setSidebarPath(path: string, tabId?: number): Promise ``` Sets the sidebar path in Chromium-based browsers via `setOptions` (MV3) or via `sidebarAction.setPanel()` in Firefox/Opera. Throws if unsupported. ### getSidebarPath ``` getSidebarPath(tabId?: number): Promise ``` Retrieves the sidebar path from Chromium-based browsers (MV3) or parses from `sidebarAction.getPanel()` in Firefox/Opera. Throws if unsupported. ### isOpenSidebar ``` isOpenSidebar(windowId?: number): Promise ``` Checks if the sidebar is open for the given window in Chromium-based browsers (MV3) using `getContexts` and in Firefox/Opera using `sidebarAction.isOpen()`. Throws if unsupported. ### toggleSidebar [Firefox] ``` toggleSidebar(): Promise ``` Toggles the sidebar in Firefox. Throws if unsupported. ### setSidebarTitle [Firefox, Opera] ``` setSidebarTitle(title: string | number, tabId?: number): Promise ``` Sets the sidebar title via `sidebarAction.setTitle()` (Firefox/Opera). Throws if unsupported. ### setSidebarIcon [Firefox, Opera] ``` setSidebarIcon(details: opr.sidebarAction.IconDetails): Promise ``` Sets the sidebar icon via `sidebarAction.setIcon()` (Firefox/Opera). Throws if unsupported. > Known issue (Opera): The `opr.sidebarAction.setIcon` API is currently broken and may fail with "Access to extension API denied". > See: https://forums.opera.com/topic/75680/opr-sidebaraction-seticon-api-is-broken-access-to-extension-api-denied ### setSidebarBadgeText [Opera] ``` setSidebarBadgeText(text: string | number, tabId?: number): Promise ``` Sets the sidebar badge text via `opr.sidebarAction.setBadgeText()` (Opera only). Throws if unsupported. ### clearSidebarBadgeText [Opera] ``` clearSidebarBadgeText(tabId?: number): Promise ``` Clears the sidebar badge text (equivalent to setting an empty string) via `opr.sidebarAction.setBadgeText()` (Opera only). ### setSidebarBadgeTextColor [Opera] ``` setSidebarBadgeTextColor(color: string | [number, number, number, number], tabId?: number): Promise ``` Sets the sidebar badge text color via `opr.sidebarAction.setBadgeTextColor()` (Opera only). Throws if unsupported. ### setSidebarBadgeBgColor [Opera] ``` setSidebarBadgeBgColor(color: string | [number, number, number, number], tabId?: number): Promise ``` Sets the sidebar badge background color via `opr.sidebarAction.setBadgeBackgroundColor()` (Opera only). Throws if unsupported. ### getSidebarTitle [Firefox, Opera] ``` getSidebarTitle(tabId?: number): Promise ``` Gets the sidebar title via `sidebarAction.getTitle()` (Firefox/Opera). Throws if unsupported. ### getSidebarBadgeText [Opera] ``` getSidebarBadgeText(tabId?: number): Promise ``` Gets the sidebar badge text via `opr.sidebarAction.getBadgeText()` (Opera only). Throws if unsupported. ### getSidebarBadgeTextColor [Opera] ``` getSidebarBadgeTextColor(tabId?: number): Promise<[number, number, number, number]> ``` Gets the sidebar badge text color via `opr.sidebarAction.getBadgeTextColor()` (Opera only). Throws if unsupported. ### getSidebarBadgeBgColor [Opera] ``` getSidebarBadgeBgColor(tabId?: number): Promise<[number, number, number, number]> ``` Gets the sidebar badge background color via `opr.sidebarAction.getBadgeBackgroundColor()` (Opera only). Throws if unsupported.