Skip to content

turbostarter/extro

Repository files navigation



Logo


GitHub action badge GitHub action badge

GitHub license

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.

Tip

Sharing storage and authentication session between all pages

extro-showcase.mp4

Features ✨

  • 🔒 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 stack 🛠️

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

Contributing 🤝

Please read CONTRIBUTING.md.

Getting started 🚀

Prerequisites

Installation

  1. Clone the repository
git clone [email protected]:turbostarter/extro.git
  1. Install dependencies
bun install
  1. Copy .env.example to .env and update the variables
cp .env.example .env

Development

Chrome

  1. Run development server
bun dev:chrome
  1. Open Chrome and go to chrome://extensions
  2. Check Developer mode
  3. Click Load unpacked
  4. Select the build/chrome-mv3-dev directory at root

Firefox

  1. Run development server
bun dev:firefox
  1. Open Firefox and go to about:debugging#/runtime/this-firefox
  2. Click Load Temporary Add-on...
  3. 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.

Publishing

Manual

  1. Run bun run build to build the extension for both Chrome and Firefox or bun build:chrome or bun build:firefox to build only for one of the browsers.
  2. Go to the build directory and upload the .zip files to the Chrome Web Store and Firefox Add-ons.

CI/CD

  1. Copy keys.template.json to keys.json and update the keys (check the official token guide to learn more about the tokens required to submit)
  2. Set content of keys.json as Github secret under SUBMIT_KEYS name
  3. Run CI / Publish workflow

Pages

Extro ships with the following extension pages preconfigured:

Community 💬

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 🌟

Star History Chart

Made with ❤️ by Bartosz Zagrodzki