Features · Tech stack · Contributing · Getting started · Community · Star History
Everything you need to build a production ready browser extension, it's an opinionated stack based on learnings from building multiple browser extensions using the latest React framework. It's a starter kit with a focus on code reuse and best practices that will grow with your business.
Note
This project is listed on Awesome Open Source Boilerplates and Awesome SaaS Boilerplates
Tip
Sharing storage and authentication session between all pages
extro-showcase.mp4
- 🔒 Full type-safety with Typescript
- 📄 All pages (background, popup, options etc.)
- 📜 Content scripts
- 🔐 Authentication (OAuth)
- 💾 Storage
- 💬 Messaging
- 🔥 Hot reloading
- 🚀 One-click publishing
- 🌍 Internationalization
- 📊 Analytics
- ✨ Linting and formatting
- 🧪 Unit tests
- 🔄 CI/CD pipelines
- ⚙️ Environment variables
- 🎨 shadcn/ui compatible
- 🔤 Custom fonts
- 🤖 Native AI integration (experimental)
- ✨ ts-reset for enhanced DX
- 💳 Billing (coming soon)
Tech | Description |
---|---|
TypeScript | Static type-checking programming language |
React | Library for building user interfaces |
Plasmo | Next.js for browser extensions |
Supabase | Open source Firebase alternative |
shadcn/ui | Extendable component library |
Tailwind | Utility-first CSS framework |
OpenPanel | Open source analytics |
React Hook Form | Forms with easy-to-use validation |
Bun | Package manager and build tool |
Husky | Git hooks |
Biome | Linting and formatting |
Please read CONTRIBUTING.md.
- Clone the repository
git clone [email protected]:turbostarter/extro.git
- Install dependencies
bun install
- Copy
.env.example
to.env
and update the variables
cp .env.example .env
- Run development server
bun dev:chrome
- Open Chrome and go to
chrome://extensions
- Check
Developer mode
- Click
Load unpacked
- Select the
build/chrome-mv3-dev
directory at root
- Run development server
bun dev:firefox
- Open Firefox and go to
about:debugging#/runtime/this-firefox
- Click
Load Temporary Add-on...
- Select the
build/firefox-mv2-dev/manifest.json
file at root
Note
In Firefox you're adding a plugin in temporary mode - that means it'll disappear after you close the browser.
- Run
bun run build
to build the extension for both Chrome and Firefox orbun build:chrome
orbun build:firefox
to build only for one of the browsers. - Go to the
build
directory and upload the.zip
files to the Chrome Web Store and Firefox Add-ons.
- Copy
keys.template.json
tokeys.json
and update the keys (check the official token guide to learn more about the tokens required to submit) - Set content of
keys.json
as Github secret underSUBMIT_KEYS
name - Run
CI / Publish
workflow
Extro ships with the following extension pages preconfigured:
background
- background service workercontents
- content scripts that run in the context of web pagesdevtools
- devtools page with custom panelsnewtab
- new tab pageoptions
- options pagepopup
- popup windowsidepanel
- side paneltabs
- tabs pages (custom pages delivered with the extension)
To chat with other community members, you can join the Discord server. You can ask questions on that server, and you can also help others.
Also, suggest new features or share any challenges you've faced while developing Chrome extensions!
Made with ❤️ by Bartosz Zagrodzki