Skip to content

JavaScript ​

The JavaScript starter is a sidebar panel plus a content script, written in plain JavaScript. Start from it when you want a working extension in JavaScript before you change a line.

The toolbar icon opens the panel, and the panel shows the title of the page you are on. The content script adds an "Open sidebar" button to every page, inside a shadow root so page styles stay out. The background worker opens the panel when you click that button. There are no types and no framework. The sidebar is one function that builds DOM nodes, and the content script is one file.

SurfacesSidebar, content script, action, background
LanguagePlain JavaScript
BrowsersChrome, Edge, Firefox
Sourceextension-js/examples/javascript
Catalog pagetemplates.extension.dev/javascript

From the terminal ​

One command creates the project and installs its dependencies. Then dev opens a browser with the extension loaded.

bash
npx extension@latest create my-javascript --template javascript
cd my-javascript
npm run dev

From an agent ​

With the MCP server installed, one sentence does the same. The agent calls extension_create with this template, then extension_dev to run it.

text
Create a JavaScript extension called my-javascript and run it
Asked for a JavaScript extension, the agent creates the starter and runs it in Chrome.

From the catalog ​

The catalog page runs the template live in the page, with its instructions and source one tab away. One click turns it into a private repository of your own. That click lands on Import with the template preselected.

Files ​

text
src/background.js
src/content/ContentApp.js
src/content/scripts.js
src/content/styles.css
src/images/
src/manifest.json
src/sidebar/index.html
src/sidebar/page-title.js
src/sidebar/scripts.js
src/sidebar/SidebarApp.js
src/sidebar/styles.css

src/manifest.json declares the action, the side panel, the content script's <all_urls> match and the background worker. The sidebar folder is the panel, the content folder runs on the page, and images holds the icons the manifest declares.

When it fails ​

  • [Extension.js] Requires Node.js >= 22.12. The CLI checks the runtime before any command and exits. Upgrade to Node.js 22.12 or newer. Bun 1.2 and Deno 2.5 or newer also pass the check.
  • The "Open sidebar" button does nothing in Firefox. Firefox opens a sidebar only from a toolbar click, so the Firefox build shows a hint in place of the button. Click the toolbar icon instead.

Next ​