Extro
Open source browser extension starter kit ๐งฉ
Install / Use
/learn @turbostarter/ExtroREADME
<a href="https://discord.gg/KjpK2uk3JP" target="_blank"><img src="https://discord.com/api/guilds/1280456871693779006/widget.png"/></a>
</div> <p align="center"> <a href="#features"><strong>Features</strong></a> ยท <a href="#tech-stack"><strong>Tech stack</strong></a> ยท <a href="#contributing"><strong>Contributing</strong></a> ยท <a href="#getting-started"><strong>Getting started</strong></a> ยท <a href="#community"><strong>Community</strong></a> ยท <a href="#star-history"><strong>Star History</strong></a> </p>This boilerplate has Plasmo version
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
https://github.com/user-attachments/assets/970eddf8-5faf-42cc-89ed-54b7c7548bc8
Features โจ <a name="features"></a>
- ๐ Full type-safety with Typescript
- ๐ All pages (background, popup, options etc.)
- ๐ Content scripts (UI)
- ๐ 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 stack ๐ ๏ธ <a name="tech-stack"></a>
| Tech | Description | | ---------------------------------------------- | ----------------------------------------------------------------------------- | | TypeScript | Static type-checking programming language | | React | Library for building user interfaces | | WXT | Next-gen Web Extension Framework | | 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 | | Vite | Next generation frontend tool | | Bun | Package manager and build tool | | Husky | Git hooks | | Biome | Linting and formatting |
Contributing ๐ค <a name="contributing"></a>
Please read CONTRIBUTING.md.
Getting started ๐ <a name="getting-started"></a>
Prerequisites
Installation
- Clone the repository
git clone git@github.com:turbostarter/extro.git
- Install dependencies
bun install
- Copy
.env.exampleto.envand update the variables
cp .env.example .env
Development
Chrome
- Run development server
bun dev:chrome
- Open Chrome and go to
chrome://extensions - Check
Developer mode - Click
Load unpacked - Select the
build/chrome-mv3directory at root
Firefox
- 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/manifest.jsonfile at root
[!NOTE]
In Firefox you're adding a plugin in temporary mode - that means it'll disappear after you close the browser.
Publishing
Manual
- Run
bun run buildto build the extension for both Chrome and Firefox orbun build:chromeorbun build:firefoxto build only for one of the browsers. - Go to the
builddirectory and upload the.zipfiles to the Chrome Web Store and Firefox Add-ons.
CI/CD
- Obtain all the required API keys for your submission (check the official token guide to learn more about the tokens required to submit)
- Set your API keys as Github secrets under appropriate names
- Run
CI / Publishworkflow
Pages
Extro ships with the following extension pages preconfigured:
background- background service workercontent- content scripts that run in the context of web pagesdevtools- devtools page with custom panelsnewtab- new tab pageoptions- options pagepopup- popup windowsidepanel- side paneltabs- unlisted pages (custom pages delivered with the extension)
Community ๐ฌ <a name="community"></a>
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!
Star History ๐ <a name="star-history"></a>
<a href="https://star-history.com/#turbostarter/extro&Date"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=turbostarter/extro&type=Date&theme=dark" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=turbostarter/extro&type=Date" /> <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=turbostarter/extro&type=Date" /> </picture> </a>Made with โค๏ธ by Bartosz Zagrodzki
Related Skills
bluebubbles
347.2kUse when you need to send or manage iMessages via BlueBubbles (recommended iMessage integration). Calls go through the generic message tool with channel="bluebubbles".
node-connect
347.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
slack
347.2kUse when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
frontend-design
108.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
