Skip to content
extensionstart

Changelog

What has shipped in the kit, milestone by milestone.

RSS

ExtensionStart 1.1

Store uploads you start. A version tag still runs every check and builds the Chrome, Firefox and Edge zips into a GitHub Release. Uploading them is now a second step: Actions, Publish to stores, Run workflow, with the tag. The approval step in 1.0 relied on a GitHub environment with required reviewers, which GitHub offers only for public repositories (below Enterprise), so in a private repository a tag uploaded straight away.

The upgrade dialog offers what unlocks it. A wall for a credits feature offers your credit packs, and a wall for a Pro feature or a used-up free allowance offers the plans that unlock Pro. Account’s Upgrade still lists every plan. This matters when you sell subscriptions and credit packs side by side.

The on-page demo comes out in one step. The wizard asks a new question, On-page UI, about the status card the kit shows on every https page. It is the extension’s only access to websites, so a fresh clone defaults to no. On a clone you already set up, pnpm create extstart --on-page no --yes removes the content script, the card and their tests, and the extension then asks for no site access.

Store images from your real UI. pnpm store-assets:capture opens your built extension over your website and saves the popup’s screens; pnpm store-assets frames them at their real size, with your site’s address in the address bar. The install picture on the website template shows a site-access warning only when your extension asks for site access, and the promo tile and the screenshot frames show your extension’s own icon.

Ready for review. The offscreen permission leaves the build once your Google OAuth client ID is set. The store zips carry your extension’s name. The wizard writes a Firefox add-on id of your own and declares Firefox’s data consent, writes your name onto the checkout and uninstall pages, and its Next list names the placeholder icon and the sample website copy while they are still there.

A clean first install. Every dependency is on the newest release of its major version, and pnpm audit reports nothing. The UI kit moved from the deprecated @base-ui-components/react to its renamed package, @base-ui/react, and linting to ESLint 10 with the same rules, so pnpm install prints no deprecation warning. The repo now carries a LICENSE (a summary of the terms at extensionstart.com/license) and a SECURITY.md.

Smaller fixes. One snackbar shows at a time, under any wall that follows it. The sign-in wall no longer mentions syncing data.

When you pull this release: if you created the store-publish environment for 1.0, move its store secrets to the repository’s secrets (Settings, Secrets and variables, Actions) and delete the environment. Before your first Firefox upload, replace extension@extensionstart.com in apps/extension/wxt.config.ts with an id of your own. Run pnpm install after merging, since the dependencies changed. If your own code imports from @base-ui-components/react, import from @base-ui/react instead, and if you added lint plugins of your own, check that they support ESLint 10. Nothing else needs a change.

ExtensionStart 1.0

ExtensionStart is a WXT and React 19 starter kit for browser extensions that charge money. This is what ships in 1.0.

Sign-in. Google sign-in that works inside an extension, plus email and password with password reset. Optional anonymous-first accounts link in place when the user signs in, so nothing they did is lost.

Payments. Stripe, Polar or Paddle, one per deploy, behind the same API. Monthly, annual and lifetime plans, credit packs, and subscriptions with a monthly credit allowance. Prices come from your provider, so changing one needs no release. Only the provider’s webhook grants a plan, and the server allows a card trial once per account.

Paywall. One file, paywall.config.ts, answers three questions: which features are free, limited or paid; whether there is a trial; and when to suggest an upgrade. Free uses can reset daily, weekly or monthly, or last for good. Every wall can be closed, and a product with nothing free has to say so in its store listing, as the Chrome Web Store requires.

Backend. Firebase (Cloud Functions and Firestore) or Supabase (an Edge Function and Postgres). Both serve the same API from one route file, and each build carries only the stack you chose.

Setup wizard. pnpm create extstart names your extension and sets the backend, payment provider, color palette and side panel. It creates the cloud project, deploys the API, creates your products, registers the webhook, and removes what you left out. pnpm run doctor checks the result.

The extension. A popup and a side panel with Home, Account and Settings tabs, and one plan picker for every upgrade. On-page UI in a shadow root that page styles cannot break. Broadcasts show a banner to every user without a release. An uninstall page asks why people leave. Builds for Chrome, Firefox and Edge.

Design. Material 3 components in light and dark themes, with six color palettes. The wizard applies yours to the extension, the website and the checkout pages.

Website template. A landing page, a help center, privacy and terms pages ready for store review, a changelog, and the welcome page every new install opens.

Releases and checks. Unit tests and Playwright tests against the built extension run on every push. A release builds the three store zips and submits them after your approval. The build is scanned for remote code, and pnpm installs no package version younger than three days.

AI agents. AGENTS.md holds the rules the kit follows, with tested recipes for adding a feature, a surface, a permission or a storage migration, and for preparing a store submission.

Docs. extensionstart.com/docs covers setup, every guide, and publishing to each store.

From here on, each release gets one entry: what changed for you, and anything to do when you pull it.