Sidebar Turborepo

Adds a sidebar panel and shows a small overlay UI on every web page you visit.

Runs on Chrome, Edge, Firefox · Manifest V3

Create this project

npx extension@latest create my-sidebar-monorepo-turborepo --template sidebar-monorepo-turborepo
cd my-sidebar-monorepo-turborepo
npm install
npm run dev

!Powered by Extension.js

React Sidebar (Monorepo + Turborepo) Example

Adds a sidebar panel and shows a small overlay UI on every web page you visit.

What you'll see: A small UI injected into any web page, isolated in a Shadow DOM so site styles don't bleed through.

How it works: A content script mounts a JavaScript UI inside a Shadow DOM and applies scoped styles so the host page can't bleed through. The extension lives in a workspace under packages/extension/; root scripts target it explicitly.

A pnpm workspace + Turborepo setup. The extension lives under packages/extension; root scripts target it via extension <command> packages/extension. Useful as a starting point when an extension shares code with web / mobile apps in the same monorepo.

Try it locally

npx extension@latest create my-sidebar-monorepo-turborepo --template sidebar-monorepo-turborepo
cd my-sidebar-monorepo-turborepo
npm install
npm run dev

A fresh browser window opens with the extension already loaded.

Project layout

packages/
├── analytics/
│   ├── src/
│   │   └── index.js
│   └── package.json
└── extension/
    ├── src/
    │   ├── content/
    │   │   ├── scripts.js
    │   │   └── styles.css
    │   ├── images/
    │   │   └── icon.png
    │   ├── sidebar/
    │   │   ├── index.html
    │   │   ├── scripts.js
    │   │   ├── SidebarApp.js
    │   │   └── styles.css
    │   ├── background.js
    │   └── manifest.json
    └── package.json

Commands

Cloned this repo instead? The examples ship without npm scripts, so run Extension.js directly from the example directory. Run npm install first when the example declares dependencies.

dev

Run the extension in development mode. Target a browser with --browser:

npx extension@latest dev .                  # Chromium (default)
npx extension@latest dev . --browser=chrome
npx extension@latest dev . --browser=edge
npx extension@latest dev . --browser=firefox

build

Build for production:

npx extension@latest build .                # Chromium (default)
npx extension@latest build . --browser=firefox
npx extension@latest build . --browser=edge

preview

Preview the production build with the bundled browser:

npx extension@latest preview .

Tests

This template ships an end-to-end check (template.spec.ts) validated by the examples-repo CI on every commit.

Learn more