A modern, opinionated starter template for building browser extensions with Vite, Vue 3, and Manifest V3. Supports Chrome, Firefox, Edge, and other Chromium-based browsers.
- Multi-Context Architecture: Background script, popup, options page, content script, devtools, side panel, and offscreen pages
- File-Based Routing: Auto-registered UI pages from
src/ui/*/pages - Vue 3 Ecosystem: Composition API, Pinia for state management, Vue Router
- Rich UI Components: Nuxt/UI v3, shadcn-vue, Tailwind CSS 4, Lucide icons
- TypeScript: Full type safety with strict TypeScript configuration
- i18n Ready: Internationalization support with vue-i18n
- WebExtension Utilities:
webext-bridgefor cross-context communication,webextension-polyfillfor browser API compatibility - Developer Experience: Hot reload, ESLint, Prettier, TypeCheck
- AI-Ready: Includes
AGENTS.mdwith coding guidelines for AI assistants
npx degit mubaidr/vite-vue3-browser-extension-v3 my-webext
cd my-webext
npm install
npm run dev| Command | Description |
|---|---|
npm run dev |
Start development for both Chrome and Firefox |
npm run dev:chrome |
Start development for Chrome |
npm run dev:firefox |
Start development for Firefox |
npm run build |
Build extension for both Chrome and Firefox |
npm run build:chrome |
Build extension for Chrome only |
npm run build:firefox |
Build extension for Firefox only |
npm run lint |
Run ESLint with auto-fix |
npm run typecheck |
Run TypeScript type checking |
npm run format |
Format code with Prettier |
- Navigate to
chrome://extensions - Enable Developer mode (toggle in top-right)
- Click Load unpacked
- Select the
dist/chromefolder
- Navigate to
about:debugging#/runtime/this-firefox - Click Load Temporary Add-on...
- Select any file in the
dist/firefoxfolder
src/
├── background/ # Background service worker
├── components/ # Shared Vue components
├── composables/ # Vue composables (hooks)
├── content-script/ # Content scripts
├── devtools/ # DevTools panel
├── offscreen/ # Offscreen documents
├── stores/ # Pinia state stores
├── ui/ # UI entrypoints (popup, options, etc.)
│ └── */pages/ # File-based routing pages
├── types/ # TypeScript definitions
└── utils/ # Shared utilities
See docs/DEVELOPMENT.md for architecture, design principles, folder structure, and best practices.
- Chrome (Manifest V3)
- Firefox (Manifest V2/V3)
- Edge
- Other Chromium-based browsers
Contributions are welcome! Please open issues or submit pull requests for improvements or new features.
MIT
If you find this project useful, please consider supporting the author and starring ⭐ the repository.