status: active
timestamp: 2026-06-20
tags: [extensions, publishing, ci, github-actions]
Every extension publishes to Chrome + Firefox + Edge stores
Each extension: GH Actions publishes to Chrome, Firefox, Edge
Every extension publishes to Chrome + Firefox + Edge stores
Decision
Every extension’s GitHub repo includes an automated publish workflow that releases the same packaged artifact to the Chrome Web Store, Firefox Add-ons (AMO), and Microsoft Edge Add-ons store. Single-store releases are not allowed.
Why
The three stores collectively cover Chrome / Edge / Brave / Opera / Firefox / Vivaldi / Arc / Zen and most other Chromium-based browsers through the Chrome and Edge stores’ policies. Skipping any one store loses the user base that prefers it without saving meaningful work once the publish workflow is templated. Publishing to all three on the same release also keeps version numbers in sync, which matters for support — a user reporting a bug on Edge isn’t running a month-old build vs Chrome.
Implications
- Each extension repo carries a
.github/workflows/publish.ymlthat runs on tag push, builds the artifact once, and submits to all 3 stores via their respective APIs. - Store API credentials live in envpact and are pulled into the workflow via
chirag127/envpact-action@v0withENVPACT_VAULT_TOKEN. - Manifest must be MV3-compatible across all 3 stores (Firefox MV3 is now stable). When a manifest change conflicts between stores, build a per-store variant in the workflow rather than dropping a store.
- Per-extension
/privacypage (see per-extension-privacy-policy) is required by all 3 stores’ review processes. - Failed-publish in any one store doesn’t block the others — the workflow continues, surfaces the failure on the family status page.
Cross-refs
- Chrome extensions as submodules
- Per-repo CI workflows
- Per-extension privacy policy
- Extension auth: Firebase + license-key fallback