status: active
timestamp: 2026-06-20
tags: [services, extension-store, chrome, distribution, primary]
Chrome Web Store
Browser-extension distribution channel — $5 one-time dev fee, CI auto-publish
Chrome Web Store
Role
Primary distribution channel for every browser extension in the
oriz-*-ext family. Covers Chrome plus every Chromium browser that
trusts the Chrome Web Store as a source — Edge (via cross-browser
install), Brave, Opera, Vivaldi, Arc, Zen. The Edge variant is
also published natively to Edge Add-ons, but
the Chrome listing is what most Chromium users land on first. Per
decisions/architecture/distribution-and-queues-locked.md,
every browser extension publishes to all three stores: Chrome,
Firefox, Edge.
Free tier
- Unlimited submissions after the $5 one-time developer registration fee.
- Unlimited extensions per developer account.
- Unlimited published versions per extension.
- No recurring fees, no per-install fees, no review fees.
Card / subscription required?
NO for ongoing usage. The $5 registration is a one-time sunk
cost — paid once at developer-account creation, never billed
again. This is not a subscription and does not create a
card-on-file relationship — the family’s
rules/no-card-on-file.md and
monetisation/no-subscriptions-anywhere.md
both still hold. (One-time fees for permanent capabilities are the
documented exception class — same shape as a domain registration.)
CI auto-publish
Each extension repo’s .github/workflows/publish.yml pushes the
packaged .zip to the Chrome Web Store via the
chrome-webstore-upload
flow:
- name: Upload to Chrome Web Store
uses: mnao305/chrome-extension-upload@v5
with:
file-path: dist/extension.zip
extension-id: ${{ secrets.CHROME_EXTENSION_ID }}
client-id: ${{ secrets.CHROME_CLIENT_ID }}
client-secret: ${{ secrets.CHROME_CLIENT_SECRET }}
refresh-token: ${{ secrets.CHROME_REFRESH_TOKEN }}
publish: true
Credentials originate in Doppler and
mirror to GitHub Secrets per
security/secrets-management-doppler.md.
The action wraps Google’s chromewebstore.googleapis.com upload +
publish endpoints — same surface used by the
chrome-webstore-upload-cli
package on npm.
Alternatives
- Firefox Add-ons (AMO) — sibling, free.
- Microsoft Edge Add-ons — sibling, free.
- Side-loading via
.crxfrom GitHub Releases — supported as a secondary channel for advanced users; never the primary install path.
Swap cost
Low — the publish workflow is per-store; dropping Chrome would only
remove the chrome-extension-upload step. Manifest authoring,
build, signing, and the artifact itself are unchanged.
Why this is our pick
The Chrome Web Store is non-negotiable: the addressable Chromium user base dwarfs every other store combined, and skipping it would defeat any extension’s reach. The one-time $5 fee is a sunk cost the family already pays.
Cross-refs
- Three-store browser-extension distribution + dual VS Code marketplace + PWA + queue decision
- Earlier cross-store publish decision (Batch 1)
- Repo naming suffixes (
-ext) - Firefox Add-ons
- Microsoft Edge Add-ons
- Extension-store bucket index
- Per-extension privacy policy
- No card-on-file rule