Build an extension people pay for
Sign-in, payments, and a paywall already work, so you can charge in minutes. Your coding agent builds the feature, and the kit's AGENTS.md and automated checks keep it from breaking the paid parts.
- Subscriptions, lifetime, credits
- Built for coding agents
- Stripe, Polar, or Paddle
- 30-day money-back guarantee
Create account
Already have an account? Sign in
Signing in with Google…
Upgrade to Pro
Processing payment…
Stripe Checkout → webhook → entitlements
Subscription active
Welcome to Pro! Every Pro feature is unlocked everywhere.
Pro- React
- WXT
- TypeScript
- Tailwind CSS
- Astro
- Firebase
- Hono
- Chrome Web Store
- Claude Code
- Codex
Features
What your extension can do
Nine subsystems, prebuilt and tested. Click through; every demo mirrors the real components.
Auth
Sign-in that works inside an extension
The flows web tutorials teach fall apart in an extension popup. These are built for it, on a session that survives restarts.
- Google sign-in
- Email and password
- Guest mode with account linking
- Firebase or Supabase, your choice
- Logout everywhere
Google Firebase Supabase
Sign in
Using it as a guest so far
Finishing sign-in…
The popup can close. The flow continues.
Signed in. Guest counters and purchases carried over.
Payments
Charge for your extension
Checkout, webhooks, and entitlements wired to the provider you pick. Polar and Paddle handle global sales tax for you.
- Stripe, Polar, or Paddle
- Subscriptions, monthly or yearly
- Lifetime one-time purchases
- 7-day trials, no card required
- Credit packs and monthly allowances
- Customer portal built in
Stripe Polar Paddle
Upgrade to Premium
Opening Stripe checkout…
Subscription active
All features unlocked
ProPaywall
Decide what is free, what is on trial, and when to ask
Most kits hand you a paid flag and stop. The paywall engine takes the three decisions every paid product makes, in one file, with the store-policy guard built in.
- Free allowances: lifetime, per day, week, or month
- No-card trials with a countdown
- Credits for AI features
- Six recipes, any mix
- Lock badge, usage meter, one wall everywhere
- Sign-in chains into checkout
3 free highlights, then Pro · click Highlight
Upgrade to Pro
Unlock every Pro feature. Cancel anytime.
Upgrade to Pro
Unlock every Pro feature. Cancel anytime.
Upgrade to Pro
The free plan includes 3 summaries a day. Pro removes the limit.
Upgrade to Pro
The free plan includes 3 highlights. Pro removes the limit.
You're out of credits
Add credits to keep going.
Upgrade to Pro
Your Pro trial ended. Keep every feature, or continue on the free plan.
Upgrade to Pro
Try every Pro feature free for 7 days. Cancel anytime.
highlight: { free: 3, per: "ever" }, "export-pdf": "pro" // the allowance is the ask trial: { days: 14, notice: 3 } // full Pro from install, no card summarize: { free: 3, per: "day" } // unlimited on Pro "ai-image": { credits: 1 } // consumed server-side before the work paidOnly: true, trial: { days: 7, card: true }, prompt: "first-run" prompt: false // sendMessage("paywallOpen") where you choose
Broadcasts
Message every user without an update
Write a message on your server and it appears as a banner in every installed copy. Release notes, incident notices, launch news.
- Banner in popup and side panel
- Per-user dismissal that sticks
- Schedule with from and until dates
- Minimum-version targeting
no active broadcasts dismissed, stays dismissed per user
Surfaces
Popup, side panel, and welcome page, prebuilt
The account hub renders in the popup and the side panel; a welcome page on your website greets new installs.
- Home, Account and Settings tabs
- Side panel
- First-run welcome page on your site
- Dark and light themes
side panel: stays open while you browse
Welcome to Acme Notes
A three-step first-run tour ships ready: pin, sign in, try the feature.
Get startedpopup side panel first-run welcome tour
Palettes
Your colors on every screen
Rebranding a starter kit usually means hunting hex codes across a dozen files. Here it is one question in the setup wizard, and every palette passes contrast checks in light and dark.
- Six palettes, or your own file
- Popup, side panel, and on-page UI
- Website, checkout, and uninstall pages
- Store image templates
- Light and dark in every palette
- 4.5:1 contrast, checked in CI
Upgrade to Pro
Unlock every Pro feature. Cancel anytime.
Upgrade to Pro
Unlock every Pro feature. Cancel anytime.
Upgrade to Pro
Unlock every Pro feature. Cancel anytime.
Upgrade to Pro
Unlock every Pro feature. Cancel anytime.
Upgrade to Pro
Unlock every Pro feature. Cancel anytime.
Upgrade to Pro
Unlock every Pro feature. Cancel anytime.
Backend
A backend you do not have to build
One API serves billing and usage. Deploy it to Firebase or Supabase with the same routes.
- One Hono API, deployed in minutes
- Firebase or Supabase, one flag
- Entitlements written only by webhooks
- Usage counters for trials and credits
Hono Firebase Supabase Stripe
listening…
✓ stripe signature verified
→ checkout.session.completed
→ customers/7f3a…c2 paid: true
→ claims mirror paid
the client can read this. it can never write it.
Agent-ready
A codebase your coding agent already knows
AGENTS.md carries the architecture map and the MV3 rules, so agents extend the kit instead of guessing at it.
- One AGENTS.md for Claude Code, Codex and Cursor
- Six tested agent recipes
- chrome-devtools MCP preset: agents verify in a live Chrome
- Docs published as llms.txt and plain markdown
Claude Code OpenAI Codex
- AGENTS.md architecture map, MV3 rules, definition of done
- .claude/commands/ 6 tested recipes: add-feature, add-permission…
- .mcp.json agents debug a live Chrome
- apps/extension/
- entrypoints/background/ one module per concern
- components/ account hub, walls, demo feature
- packages/ auth, billing, gate engine, UI kit
- backend/ the deployed API
Publish
Pass review on Chrome, Firefox, and Edge
A tag push builds store-ready zips for three browsers and audits the output for remote code. Runbooks cover each store's review.
- Chrome, Firefox, and Edge builds
- Remote-code audit on every zip
- Permissions matched to the modules you kept
- Store runbooks and a rejection-code guide
- 197 unit tests and 21 Playwright e2e specs in CI
Chrome Web Store
$ git tag v1.0.0 && git push --tags
✓ Built chrome-mv3.zip
✓ Audited the output: no remote code
✓ Permissions match module manifests
→ Staged rollout to the Chrome Web Store
$ git tag v1.0.0 && git push --tags
✓ Built firefox-mv2.zip (browser-specific manifest)
✓ web-ext lint: 0 errors
✓ Chromium-only APIs feature-guarded
→ Submitted to addons.mozilla.org
$ git tag v1.0.0 && git push --tags
✓ Built edge-mv3.zip
✓ Audited the output: no remote code
✓ API keys rotated on schedule (CI reminder)
→ Submitted to Microsoft Partner Center
And the rest of it
E2E testing
- 21 Playwright specs against the real build
- Catches dead-background bugs unit tests miss
Setup wizard
- Brands, wires, and prunes in one command
- Ship only the modules you use
Website and help center
- Landing, help center, privacy, and terms, store-ready
- The welcome page every install opens
The repository
The codebase, not a template
Every subsystem you would otherwise build yourself, and the actual repository it lives in: a pnpm workspace monorepo with framework-free core packages, a real backend, and tests at every layer.
-
Stack
WXT + React 19 + TypeScript strict + Tailwind 4, in a pnpm workspace monorepo.
-
Authentication
Google sign-in that works in MV3, on Firebase or Supabase with anonymous-first account linking.
-
Payments
Stripe, Polar, or Paddle behind one billing port; entitlements are webhook-written. Ready-to-seed models: subscription, lifetime, subscription + credits, and prepaid credit packs.
-
Landing page & docs
A rebrandable Astro landing site plus store-ready legal pages, llms.txt, and markdown docs.
-
AI coding agents
AGENTS.md guardrails and a chrome-devtools MCP preset for live-Chrome debugging.
- extensionstart/
- apps/extension/ WXT + React 19 + Tailwind 4 extension app
- entrypoints/background/ modular service worker: auth, billing, paywall, broadcasts
- entrypoints/popup/ · sidepanel/ UI surfaces sharing one design system
- entrypoints/content/ shadow-DOM UI: status card and paywall on any page
- entrypoints/offscreen/ Chromium auth fallback (signInWithPopup)
- utils/ typed messaging, shadow-ui mount, settings store, page bridge
- e2e/ 21 Playwright specs against the real built extension
- apps/site/ your website: landing, help center, privacy, terms, welcome page
- packages/core-ext/ MV3 lifecycle primitives: stores, alarms, messaging, migrations
- packages/core-auth/ auth strategies: web-auth-flow, offscreen, anonymous linking
- packages/core-billing/ entitlement snapshots + useEntitlement('paid')
- packages/paywall/ paywall engine: features / trial / prompt, six recipes, policy guard
- packages/ui/ Button / Card / Badge / Toast primitives (CVA + Base UI)
- backend/functions/ one Hono app on Cloud Functions: checkout, webhooks, usage events
- tooling/create/ create-extstart setup wizard, and the module pruner behind it
- .claude/commands/ 6 tested agent recipes: feature, surface, permission, store release
- AGENTS.md AI-agent instructions (Claude Code / Cursor ready)
Workflow
Setup is one command
The wizard brands the extension, wires sign-in and billing, connects Firebase and Stripe, and a tag push ships store-ready builds.
AI agents
Built for AI coding agents
Point an agent at the repo and it works inside the same guardrails you do.
- One AGENTS.md, every agent Architecture map, verified MV3 pitfalls, the definition of done, and tested prompts for the common jobs. Cursor and Codex read it as is; CLAUDE.md links it for Claude Code.
- Agents verify in a live Chrome A preconfigured chrome-devtools MCP server: read the service worker console, screenshot the popup, click through the paywall.
- Docs agents can fetch The docs site publishes llms.txt and every guide as plain markdown, readable by URL.
Works with Claude Code Codex Cursor
Pricing
Pay once.
Ship as many extensions as you like.
A one-time purchase, not a subscription. You get the private repository, every future update, and a 30-day money-back guarantee.
What's included
- 1 developer seat private GitHub repository access
- Unlimited personal projects commercial use allowed
- Lifetime updates pay once, every release included
FAQ
Questions before you buy
Is it for me
What is ExtensionStart?
ExtensionStart is a starter kit for browser extensions that charge money, sold as source code for $99 once. It is a complete extension (WXT, React 19, Tailwind CSS 4, TypeScript) with Google and email sign-in, billing through Stripe, Polar, or Paddle, a paywall that follows Chrome Web Store policy, a Firebase or Supabase backend, a website template, and 218 automated tests. You build your feature on top.
What do I need to know to use it?
TypeScript and React. You do not need to know Manifest V3, OAuth, webhooks, or store policy: ExtensionStart ships those parts built and tested, and the setup wizard configures them. It is not a no-code tool. If you work with an AI coding agent, the repository's AGENTS.md gives it the architecture and the rules, so it can build features the way the kit expects.
Can I see it before I buy?
Yes, everything except the code itself. The documentation is public and complete: setup, every guide, and a paywall builder you can click through. The demo page shows each screen of the extension in both themes, and the demo website is the website template as you get it. After purchase, the 30-day refund covers the rest.
How do I know the code is any good?
Check the evidence instead of the pitch. ExtensionStart has 197 unit tests and 21 end-to-end tests that load the built extension in Chromium, one of which stops the background service worker mid-session and checks that nothing is lost. TypeScript runs in strict mode with any banned, and every push runs the typecheck, lint, all tests, and a scan of the built extension for remote code. The documentation shows the architecture of every part.
Why pay when WXT and Plasmo are free?
WXT is the framework ExtensionStart is built on, and it handles the build: manifests, hot reload, store zips. What you pay for is everything a paid extension needs on top of it: sign-in that works inside an extension, checkout with entitlements written by your server, the paywall and its store-policy checks, the backend, store release automation, and the tests that keep all of it working. The comparisons with WXT, Plasmo, Extro, and ExtensionFast go through it line by line.
Why not have an AI agent write all of this?
You can, and the code will look right. The parts that break a paid extension show up only in use: sign-in lost when the browser stops the background worker, a paid plan the extension can grant itself, a paywall a store reviewer rejects. ExtensionStart has those parts built and covered by 218 automated tests. Your agent then writes your feature on top, with AGENTS.md giving it the rules.
I already have an extension. Can I move it onto ExtensionStart?
Yes. ExtensionStart is a complete extension rather than a library, so you move your feature into it: your UI goes into the popup's Home tab or the side panel, your content script sits next to the kit's, and each paid action calls one access check. Build your feature walks through it. The result ships as an update to your existing store listing.
Will it do what I need
What can my extension charge for?
Monthly and yearly subscriptions, a lifetime one-time purchase, credit packs, and a subscription with monthly credits. On top of any of them: free limits per feature (such as 10 per day), a free trial with or without a card, and when to show the upgrade prompt. The setup wizard offers six ready recipes, and one config file holds the whole decision. Prices live in your payment provider's dashboard, so changing one needs no new release.
Which payment providers does it support, and who handles sales tax?
Stripe, Polar, or Paddle, one per deployment, chosen in the setup wizard. Polar and Paddle are merchants of record: they collect and pay sales tax and VAT for you, and they pay out to many countries where Stripe does not accept sellers. With Stripe you are the seller, and one setting turns on Stripe Tax at checkout. The payment provider guide compares fees and tax handling.
Can users get around the paywall?
Not to get a paid plan. Paid access is written by your server when the payment provider confirms a payment, never by the extension; credits are spent on the server, and a card trial is allowed once per account. A paying user who reinstalls or switches browsers signs in and gets their plan back. Free-use counters and trials without a card live in the browser, so a reinstall restarts them; the kit also records every use on your server, ready for a server-side limit where one protects real costs.
Do I have to use Firebase?
No. ExtensionStart supports Firebase (Auth, Firestore, Cloud Functions) and Supabase (Auth, Postgres with row-level security, an Edge Function). The setup wizard asks which one you want and removes the other from your copy. Both serve the same API with the same security model, so the rest of the kit does not change.
Will I have to remove features I don't need?
No, the setup wizard removes them. Choose a free extension and it deletes billing and the paywall; answer no to the side panel and the side panel goes; pick Firebase or Supabase and the other backend is deleted, and so is the code for the payment providers you did not pick (Stripe always stays). Their files, settings, and browser permissions go with them, and the wizard typechecks what remains.
Which browsers does it support?
Chrome and Edge on Manifest V3, and Firefox, from one codebase. Each browser gets its own build, and features that exist only in Chromium browsers, such as the side panel, are switched off in the Firefox build. Pushing a version tag builds all three and, after you approve the release, submits them to the Chrome Web Store, Firefox Add-ons, and Edge Add-ons. Safari is not supported.
How do my users sign in?
With Google or with email and password, including password reset. Free features work without an account, and an optional guest mode gives each install an account that becomes the user's own when they sign in, with nothing lost. Sign-in is asked only when it is needed: in front of a purchase, or on a feature you mark as account-only.
Will my extension pass Chrome Web Store review?
No kit can promise approval, because reviewers also judge your listing and your feature. ExtensionStart removes the rejection causes that come from the plumbing. Free features work on a fresh install without an account (Yellow Magnesium). CI scans the built extension for remote code (Purple Potassium), and nothing is obfuscated (Blue Argon). Every permission comes with its justification for the store form (Blue Lithium). Every paywall can be closed, and a setup with no free feature fails to build until you mark it paid-only, which also writes the disclosure your listing needs. The rejection codes guide covers the rest.
Does it work with Claude Code, Cursor, and Codex?
Yes. One AGENTS.md (read by Claude Code, Cursor, and Codex) holds the architecture map, the Manifest V3 pitfalls, and the definition of done. 6 tested prompts cover the common jobs, such as adding a feature, a permission, or a store submission, and a preconfigured Chrome DevTools MCP server lets an agent check its work in a live browser.
Buying and after
What exactly do I get when I buy?
An invite to the private GitHub repository, sent to the GitHub account you enter after checkout. It holds the extension, the backend for Firebase and Supabase, the billing code for Stripe, Polar, and Paddle, the setup wizard, a website template with a help center and privacy and terms pages, CI and store release workflows, and the test suite (197 unit tests and 21 Playwright e2e specs). The documentation is public.
How long until I have a working extension?
About 10 minutes from clone to a signed-in extension that takes a test payment. One command, pnpm create extstart, runs the setup wizard: it names the extension, creates your Firebase or Supabase project, and sets up your products in Stripe, Polar, or Paddle. The few console clicks no command can do, it prints as a checklist with a link to each screen. The setup page lists what to have ready.
Is it a one-time payment, and what else will I pay for?
Yes, $99 once, with no subscription and nothing more to ExtensionStart. The services your extension runs on are your own accounts and bill you directly: your payment provider takes its fee from each sale, Firebase and Supabase are free to start and charge for usage beyond their free tiers (deploying on Firebase needs its pay-as-you-go plan, which asks for a card), and the Chrome Web Store charges a one-time $5 developer registration fee. The payment provider guide lists each provider's fees.
Do I get an invoice for my company?
Yes. Stripe emails an invoice with your receipt after checkout. A business can enter its tax ID at checkout, and the invoice shows it. Sales tax or VAT is worked out at checkout from your address.
Can I use it for client work or with a team?
Client work, yes: build and sell as many extensions as you like, for yourself or for clients, closed source and without attribution. A license covers one developer, so a team buys one per developer who works in the code; for five or more, email for volume pricing. You cannot resell or publish the kit itself. The license has the full terms.
How do updates work, and what if ExtensionStart is discontinued?
Updates land in the same private repository, with no renewal fee, and the changelog lists each release. You bring the ones you want into your project with git. Fixes for browser and store changes come before new features. If ExtensionStart is ever discontinued, you keep the repository and the source; nothing in your extension depends on a server of ours. The updates page has the details.
What is the refund policy?
A 30-day money-back guarantee. Email support@extensionstart.com within 30 days of purchase for a full refund; repository access ends with the refund. The refund policy has the details.
What if I get stuck?
Start with the documentation: every part of the kit has its own guide, and the publishing section covers store submissions. For anything else, email support@extensionstart.com.
Answers checked against the kit on . Another question? Email support@extensionstart.com.
Sign-in, billing, and store policy are done. Yours is the product on top.
One-time purchase. 30-day money-back guarantee.