Skip to content
extensionstart

Build an extension people pay for

A starter kit where Google sign-in, Stripe billing, and a paywall that follows Chrome Web Store rules already work. You write your feature.

  • 518 automated tests
  • Chrome, Firefox, and Edge
  • One-time purchase
  • 30-day money-back guarantee
example.com/article

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

Run the actual extension to see all features live →

  • 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
  • Shared website session with better-auth
  • Logout everywhere
Read the auth guide

Google Firebase Supabase Better Auth

example.com/article

Sign in

Using it as a guest so far

Finishing sign-in…

The popup can close. The flow continues.

Alex Chen alex@example.com

Signed in. Guest counters and purchases carried over.

guestgoogle · uid 7f3a…c2
accounts.google.com
Choose an account

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
Read the billing guide

Stripe Polar Paddle

example.com/article

Upgrade to Premium

Monthly $4.99
Lifetime $99
Start 7-Day Free Trial

Opening Stripe checkout…

Subscription active

All features unlocked

Pro

Paywall

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
Read the paywall guide
example.com/article
5 / 5 credits
Free plan

3 free highlights, then Pro · click Highlight

Upgrade to Pro

You've seen what it can do. Pro unlocks everything.

See plans

Export PDF is a Pro feature

Upgrade to unlock it, and everything else in Pro.

See plans

You've used today's free allowance

The free plan includes 3 summaries a day. Pro removes the limit.

Go unlimited

You've used your free highlights

The free plan includes 3 highlights. Pro removes the limit.

Go unlimited

You're out of credits

Top up a credit pack or upgrade for a monthly allowance.

Get more credits

Your Pro trial ended

Keep every feature with Pro, or continue on the free plan.

Keep Pro

Start your 7-day free trial

Full Pro from the first minute. Dismissible; the store listing says a subscription is required.

Start free trial

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

Announcements

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
Read the broadcasts guide
example.com/article

CSV export is live. Try it from the toolbar.

no active announcements written on your server, live everywhere dismissed, stays dismissed per user

Surfaces

Popup, side panel, and welcome tour, prebuilt

The account hub renders in the popup and the side panel; a first-run tour greets new installs.

  • Account and settings hub
  • Side panel
  • First-run welcome tour
  • Dark and light themes
  • Optional new tab and devtools surfaces
Read the theming guide
example.com/article
A Alex Chen Premium: Active
Account Settings
A Alex Chen Premium: Active
Account Settings

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 started

popup side panel first-run welcome tour

On-page UI

Put your UI on any website

Two mounting modes, both demoed: shadow UI the host page cannot restyle, and inline elements that belong to the page's own flow.

  • Shadow DOM toolkit, styles isolated
  • Inline mode for in-page elements
  • Survives SPA navigation
  • DOM observer, debounced and safe
  • Highlighter demo with persistence
Read the content-scripts guide
blog.example/deep-work
Highlight savedRestored after reload shadow

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
See the tech stack

Hono Firebase Supabase Stripe

your backend · one Hono API /billing/webhook

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.

  • AGENTS.md, CLAUDE.md, Cursor rules
  • Six tested agent recipes
  • chrome-devtools MCP preset: agents verify in a live Chrome
  • Docs published as llms.txt and plain markdown
Read the AI-agents guide

Claude Code OpenAI Codex

~/your-extension
  • 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
  • 505 unit tests and 13 Playwright e2e specs in CI
Read the first-submission runbook

Chrome Web Store

release · CI

$ 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

  • 13 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
Read the quickstart

Website and docs templates

  • Landing, privacy, and terms, store-ready
  • A Starlight docs site for your product

Theming

  • Token scales, dark and light
  • One file to rebrand
Read the theming guide

The repository

The codebase, not a template

Every subsystem you would otherwise build yourself, and the actual repository it lives in: a pnpm + Turborepo 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 + Turborepo monorepo.

  • Authentication

    Google sign-in that works in MV3, on Firebase or Supabase with anonymous-first account linking, or ride your website's better-auth session.

  • 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/ · welcome/ UI surfaces sharing one design system
  • entrypoints/content/ shadow-DOM UI: status bar, paywall, highlighter demo
  • entrypoints/offscreen/ Chromium auth fallback (signInWithPopup)
  • utils/ typed messaging, shadow-ui mount, settings store, page bridge
  • e2e/ 13 Playwright specs against the real built extension
  • 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
  • tooling/cli/ module pruner: strip the features you don't need
  • docs/ subsystem guides: auth, billing, paywall, security, QA
  • 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.

~/acme-notes
$ pnpm create extstart
? Extension name Acme Notes
? Sign-in when-needed
? Billing model subscription
? Payment provider stripe
? Paywall recipe free-trial
Creating the Firebase project
Building Chrome, Firefox, and Edge zips

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. CLAUDE.md and the Cursor rules are symlinks to it.
  • 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.

ExtensionStart

Launch pricing

$99 one-time payment

What's included

  • 1 developer seat private GitHub repository access
  • Unlimited personal projects commercial use allowed
  • Lifetime updates pay once, every release included

Frequently asked questions

What exactly do I get when I buy?

Access to the private GitHub repository with the full ExtensionStart monorepo: the WXT + React 19 extension app, the core packages (auth, billing, gate engine, MV3 primitives, UI kit), the Stripe billing backend for Firebase Cloud Functions, the create-extstart setup wizard with a module pruner, the complete test suite (505 unit tests and 13 Playwright e2e specs), CI workflows, and the documentation.

Is this a subscription?

No. ExtensionStart is a one-time purchase. You pay once and keep access to the repository. (Your own extension can charge subscriptions: the Stripe billing that ships in the kit supports monthly, yearly, lifetime, and credit-based plans.)

Do I need my own Stripe and Firebase accounts, and do they cost extra?

Yes, and yes. Nothing more goes to us: $99 is the whole price of the kit. But the billing and backend your extension runs on are accounts you own and set up yourself — your own Stripe, Polar, or Paddle account, and your own Firebase or Supabase project — and those providers bill you directly, on their own terms. The payment provider takes its usual cut of every sale you make; Firebase and Supabase are free to start and metered past that. The kit ships the code that wires them together, not a hosted service. The billing guide at extensionstart.com/docs/guides/billing/ walks through the setup.

What is the license?

A per-developer commercial license: build and ship as many extensions as you like, closed-source and for profit. What you cannot do is resell, redistribute, or open-source the boilerplate itself as a starter kit. Read it at extensionstart.com/license/.

How long do I get updates?

Updates land in the same repo you bought, and browser-breakage fixes are prioritized. If the product is ever discontinued, the final source stays yours to keep. Details at extensionstart.com/updates/, and the changelog is the public proof of what has shipped.

What is the refund policy?

A 30-day money-back guarantee, no questions asked. If the kit is not what you expected, email support@extensionstart.com within 30 days of purchase and you get a full refund. The full policy is at extensionstart.com/refunds/.

Which browsers are supported?

Chrome and Edge (MV3), plus Firefox: the build produces per-browser bundles, Chromium-only APIs like the side panel and offscreen documents are feature-guarded, and CI lints the Firefox build with web-ext on every commit.

Do I have to use Firebase?

No. Firebase (Auth + Firestore + Cloud Functions) and Supabase (Auth + Postgres with RLS + an Edge Function) are both fully wired: the setup wizard asks which one you want, sets one flag, and prunes the other stack from your clone. Both run the same API routes and the same security model, and both start on a generous free tier. Beyond those two, the billing core is port-based (gateway, entitlement store, claims writer interfaces), so a custom backend is a contained adaptation rather than a rewrite.

Can I use better-auth or my own website's auth?

Yes, in a specific way: the shared-session strategy lets the extension adopt the sign-in session from your website instead of holding its own, with better-auth as the documented reference server (any cookie-session backend with a get-session endpoint fits). Sign in on the site, and the extension follows in near real time; sign out anywhere, signed out everywhere. better-auth runs on your website, not inside the extension's backend: entitlements and billing stay on the Firebase or Supabase side, where webhooks write them.

How does the billing work under the hood?

Stripe Checkout and the customer portal, driven by one Hono API that deploys to Cloud Functions or a Supabase Edge Function. Webhooks write entitlements server-side; the extension reads a storage-backed snapshot and renders state. Clients can never grant themselves paid features. The server is the authority.

Does it work with AI coding agents?

Yes. The repo is built to be worked on by agents: a single AGENTS.md (symlinked as CLAUDE.md and Cursor rules) encodes the architecture map, the MV3 pitfalls, and the definition of done, six tested agent recipes ship in .claude/commands, and a chrome-devtools-mcp preset lets an agent debug a live Chrome.

What if I get stuck?

Start with the docs at extensionstart.com/docs: every subsystem (auth, billing, gates, content scripts, security) has its own guide. For anything else, 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.