ExtensionStart makes opinionated choices so you do not have to. Each one
is replaceable, but together they are a stack that ships to the stores
today and stays maintainable after launch.
| Technology | Role | Why |
|---|
| WXT | Extension framework | Generates per-browser MV3 manifests from one config, HMR dev builds, store-ready zips. The most actively maintained extension framework. |
| React 19 | UI | Popup, side panel, welcome tour, and content-script UI share one component model and one hooks layer. |
| Tailwind CSS 4 | Styling | Token-scale design system (neutral/accent/success/warning/danger); raw palettes are lint-banned so every surface stays consistent. |
| TypeScript (strict) | Everywhere | any is a lint error. The typed messaging protocol makes background/UI contracts compile-time safe. |
| Technology | Role | Why |
|---|
| Firebase Auth | Sign-in | The firebase/auth/web-extension entry point plus a web-auth-flow strategy is the combination that actually works in MV3 service workers. |
| Cloud Functions v2 + Hono | API | One function, one router: checkout, webhooks, portal, usage. Free tier covers development and early production. |
| Firestore | Data | Entitlements and usage counters, with security rules that deny client writes to anything purchasable. |
| Stripe | Payments | Checkout, customer portal, webhooks. Prices resolve by lookup key server-side; the client never sends an amount. |
| Technology | Role | Why |
|---|
| Astro | Landing page template (apps/site) | Static output, zero client JS by default, strict CSP. Rebranded from one config file. |
| Starlight | Docs template | Search, sidebar, dark mode, and llms.txt generation out of the box. |
| Technology | Role | Why |
|---|
| pnpm + Turborepo | Monorepo | Fast installs, cached builds, one pnpm build for everything. |
| Vitest | Unit tests | 400+ tests across the core packages and backend. |
| Playwright | E2E | 12 specs run against the real built extension in Chromium, including service-worker kill/revive. |
| GitHub Actions | CI and releases | Lint, typecheck, tests, remote-code audit on every push; a version tag builds and submits store zips. |
Want to swap something? The cores are framework-free and port-based, so
the seams are explicit. Start with the module system
to see what is optional.