Skip to content

TypeScript ​

The TypeScript starter is a sidebar panel plus a content script, written in TypeScript. Start from it when you want a working extension in TypeScript 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. It is the JavaScript starter with types. The files are the same, types.d.ts sits beside the content script, and @types/chrome is already a dev dependency.

SurfacesSidebar, content script, action, background
LanguageTypeScript
BrowsersChrome, Edge, Firefox
Sourceextension-js/examples/typescript
Catalog pagetemplates.extension.dev/typescript

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-typescript --template typescript
cd my-typescript
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 TypeScript extension called my-typescript and run it
Asked for a TypeScript 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.ts
src/content/ContentApp.ts
src/content/scripts.ts
src/content/styles.css
src/content/types.d.ts
src/images/
src/manifest.json
src/sidebar/index.html
src/sidebar/page-title.ts
src/sidebar/scripts.ts
src/sidebar/SidebarApp.ts
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 ​