How it Works
From Zero to Published Extension in 3 Steps
Three commands. No architecture decisions. Every browser extension SaaS concern — auth, billing, messaging, multi-browser builds, storage migrations — is already solved before you write a single line of product code.
Clone & Run in 15 Minutes
One command clones the repo. One script installs dependencies. Run pnpm build:chrome and you have a fully loadable Chrome extension in under 15 minutes. No configuration rabbit holes, no missing pieces.
Configure Once, Target Every Browser
Add your environment variables — choose Firebase or Supabase, drop in your Stripe keys — and you are done. Chrome, Brave, Edge, Safari, Opera, Firefox, and Zen all build from the same source with a single command. One codebase, seven browsers.
Skip to the Feature That Matters
Auth, Stripe billing, typed cross-context messaging, storage migrations, and shadow DOM isolation are already running. Skip the foundation work entirely and start building the feature that makes your extension worth using.
Key Features
Skip the Foundation Work. Build the Feature That Matters.
Auth, billing, multi-browser builds, and typed messaging are solved before you write your first line of product code.
Multi-Browser from One Codebase
Chrome, Firefox, Safari, Brave, Edge, Opera, and Zen — all from a single build. getExtensionApi() unifies the browser API surface, so you write your logic once and reach every user regardless of their browser.
Provider-Agnostic Auth & Dual Backend
Swap between Firebase and Supabase with one environment variable. Both backends have full feature parity — so you can start with one and switch later without rewriting a single line of application code.
Stripe Billing in the Service Worker
Checkout and customer portal sessions run in the background service worker — not the popup. No CORS issues, no leaked secret keys. Your users click "Upgrade" and Stripe opens in a new tab. It just works.
See the Architecture DetailsArchitecture Deep-Dives
Built on Patterns That Scale — Not Patterns That Break
Every architectural decision in LightningAddon is designed to stay maintainable as your product grows — whether you are building solo or with a team.
Shadow DOM Isolation + Versioned Storage Migrations
-
Content scripts mount React inside a Shadow DOM. Tailwind CSS injects inline inside the shadow root — the host page stylesheet can never bleed in and break your UI.
-
Storage schema evolves without breaking existing user installs.
runStorageMigrations()runs on every service worker startup and applies only the pending migrations. -
The manifest permission linter enforces Chrome Web Store policy in CI — flagging privileged permissions before you submit, not after the review rejection.
Typed Runtime Messaging Across All Contexts
Popup, content script, background, and dashboard each run in isolated JavaScript environments. LightningAddon's RuntimeMessageMap in @repo/core gives you compile-time type checking on every message — any payload mismatch is a TypeScript error before it ever reaches runtime.
Zero Untyped Messages
Every send and listen call is fully typed end-to-end. Rename a message payload and TypeScript surfaces every affected call site instantly.
Modular Package Architecture
Turborepo monorepo with isolated packages: @repo/auth, @repo/browser-utils, @repo/core. Add new features without touching unrelated code.
What Is Included
The Infrastructure You Would Build Anyway
Every extension SaaS needs the same foundation. LightningAddon ships it complete — so you skip weeks of setup and go straight to building the feature your users will pay for.
Two-Stage Build Pipeline
Each app — popup, background, main, in-page — builds independently via Vite, then repo-assemble packages the final extension. Your builds stay fast even as your codebase grows.
Stripe Checkout & Portal
One runtime message from any UI context triggers a full Stripe checkout or customer portal — handled end-to-end in the service worker. Start charging users on day one, not week three.
Settings Sync Across Devices
User preferences write to chrome.storage.sync and propagate across every signed-in instance automatically. Your users get a consistent experience without you building a sync backend.
7 Browsers from One Codebase
getExtensionApi() normalizes the entire browser API surface. Write your logic once, reach users on Chrome, Firefox, Safari, Brave, Edge, Opera, and Zen.
Firebase & Supabase — Full Parity
Auth, database, cloud functions, Stripe integration, and transactional email all work identically on both backends. Pick the one you know, switch later if you change your mind.
Lifetime Updates Included
Every improvement, new browser target, and MV3 compatibility fix ships to you automatically. Pay once, stay current forever. No subscription, no renewal.
Pricing
One Product. One Price.
One plan. Everything included. No tiers, no subscriptions, no surprises.
LightningAddon
Full source code. Auth, billing, 7-browser builds, typed messaging, monorepo, docs, and store submission guides. Everything you need to ship.
- Full architecture (popup, background, content scripts)
- Chrome + Firefox + Safari support
- Custom build system & monorepo
- Supabase auth & Stripe payments
- Store submission guides & docs
- Lifetime updates
- Commercial usage rights
FAQ
Frequently Asked Questions
Everything you need to know about LightningAddon — from setup to deployment and beyond.
VITE_AUTH_PROVIDER in your environment. Switching later requires changing one env var, not rewriting application code.pnpm install && pnpm build:chrome, and you will have a loadable Chrome extension in under 15 minutes. Lifetime updates are delivered through the same repository.Your Next Extension Deserves a Real Architecture.
You have already spent weeks on auth and billing before. LightningAddon ships all of it — tested, typed, multi-browser — so the first line of code you write is the one that makes your extension worth using. $149 once, lifetime updates, full source code.
Get LightningAddon