This guide explains how to automatically publish Markdown Printer to Chrome Web Store, Firefox Add-ons, and Edge Add-ons using GitHub Actions.
The workflow (publish.yml) automatically:
- Checks the current published version on each store
- Compares it with your local manifest version
- Only publishes to stores where the version is outdated
- Skips stores that are already up-to-date
This prevents unnecessary submissions and review delays!
pnpm add -D publish-browser-extensionAdd these secrets to your repository at Settings > Secrets and variables > Actions > Repository secrets:
- Go to Google Cloud Console
- Enable the Chrome Web Store API
- Create OAuth 2.0 credentials
- Follow this guide to get:
CHROME_CLIENT_IDCHROME_CLIENT_SECRETCHROME_REFRESH_TOKEN
- Log in to addons.mozilla.org
- Go to Tools > Manage API Keys
- Generate credentials:
FIREFOX_ISSUERFIREFOX_SECRET
- Sign in to Partner Center
- Visit the Publish API page
- Click Create API credentials:
EDGE_PRODUCT_ID(from your extension overview page)EDGE_CLIENT_IDEDGE_API_KEY
- Go to
Actionstab in GitHub - Select
Publish Extensionsworkflow - Click
Run workflow
The workflow will check all stores and only publish where needed.
Create and push a version tag:
git tag v1.0.4
git push origin v1.0.4The workflow will automatically run and publish to outdated stores.
# Update version in package.json
npm version patch # or minor, or major
# Manually update the version in:
# - extension-chrome/manifest.json
# - extension-firefox/manifest.json
# Build and commit
pnpm run build
git add .
git commit -m "Bump version to 1.0.4"
git tag v1.0.4
git push origin main --tagsThe workflow provides a summary showing which stores were published to:
Publication Summary
- Chrome: ✓ Published
- Firefox: ⊘ Skipped (up to date)
- Edge: ⊘ Skipped (up to date)
The workflow is configured with --skip-submit-review for Chrome and Edge. This means:
- Uploads are automatic: New versions are uploaded to the stores
- Review submission is manual: You must manually submit for review in each store's dashboard
This prevents errors when a version is already pending review (stores reject new submissions during review).
To publish a new version:
- Run the workflow (uploads to stores)
- Visit each store's dashboard:
- Click "Submit for review" manually
Firefox automatically submits for review (cannot be skipped).
Wait an hour after setting up the Chrome Web Store API before generating the refresh token.
This shouldn't happen with --skip-submit-review enabled. If you see this error, a version is currently under review. Wait for review completion before uploading a new version.
Ensure you've zipped the source code correctly and that your extension follows AMO guidelines.
Verify your Product ID is correct by checking your extension's overview page in Partner Center.
If the version check step fails, the workflow will still attempt to publish (using continue-on-error: true). Check the logs for details.
If you prefer to publish manually, you can use the CLI directly:
# Publish to specific stores
npx publish-browser-extension \
--chrome-zip dist/chrome.zip \
--chrome-extension-id pfplfifdaaaalkefgnknfgoiabegcbmf \
--chrome-client-id "$CHROME_CLIENT_ID" \
--chrome-client-secret "$CHROME_CLIENT_SECRET" \
--chrome-refresh-token "$CHROME_REFRESH_TOKEN"- First-time submissions must be done manually through each store's dashboard
- The workflow assumes you're using the same version for Chrome and Edge (both use extension-chrome)
- Source code is automatically zipped for Firefox submissions
- All submissions go through each store's review process before being published