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
Everything You Need to Build & Monetize a Browser Extension SaaS
Every piece you need to ship, monetize, and maintain a browser extension SaaS — without the weeks of boilerplate you would normally write yourself.
Multi-Browser from One Codebase
Chrome, Firefox, Safari, Brave, Edge, Opera, and Zen — all from a single build. The entire browser API surface is unified through getExtensionApi(). Zero branching in your application code, ever.
Provider-Agnostic Auth & Dual Backend
Swap between Firebase and Supabase with a single environment variable. Both backends ship with identical feature parity: auth, database, cloud functions, Stripe checkout, and webhooks.
Stripe Billing in the Service Worker
Checkout and customer portal sessions run inside the background service worker — never the popup. No CORS issues, your secret keys stay server-side, and the Stripe page opens in a new tab.
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
Production Infrastructure, Ready on Day One
Every extension SaaS needs the same foundation. LightningAddon ships it complete so you spend zero time on setup and all your time on the feature that makes your product unique.
Two-Stage Build Pipeline
Each app — popup, background, main, in-page — builds independently via Vite. repo-assemble packages everything into a final, browser-targeted extension. Fast, parallelizable, and zero manual assembly.
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. Secret keys never leave the server.
Settings Sync Across Devices
User preferences write to chrome.storage.sync and propagate across every signed-in Chrome instance automatically. Works offline with queued writes — no extra backend required.
6 Browsers from One Codebase
getExtensionApi() detects the runtime and normalizes the entire API surface. The only build difference is the manifest. No branching anywhere in application code.
Firebase & Supabase — Full Parity
Auth, database, cloud functions, Stripe integration, and transactional email all work identically on both backends. Switch with one env var. No application code changes required.
Lifetime Updates Included
Every improvement, new browser target, and MV3 compatibility fix ships to you automatically — included in your one-time purchase, forever. No subscription, no renewal.
Pricing
One Product. One Price.
Simple. Clean. Premium. No tiers, no nickel-and-diming — one plan with everything. Team license available later.
LightningAddon
Full architecture, Chrome + Firefox + Safari, build system, monorepo, docs. One product, one serious price.
- 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.Stop Rebuilding the Same Foundation. Start Shipping.
Auth, billing, multi-browser builds, typed messaging — every extension SaaS needs the same boring foundation. LightningAddon ships all of it, battle-tested and ready in 15 minutes. Pay once, own it forever.
Get LightningAddon