| name | WXT Extension Release Workflow |
| description | A complete step-by-step workflow for upgrading the extension version, documenting updates in CHANGELOG.md, packaging the extension for Chrome and Firefox, and submitting the release to both web stores in a single workflow. |
WXT Extension Release Workflow
This skill outlines the standard, unified workflow to release a new version of the extension to both the Chrome Web Store and the Firefox Addon Store simultaneously.
1. Version Bumping
Before releasing, determine the appropriate semantic version bump (Major, Minor, or Patch) based on the changes made, and update it:
- Open package.json.
- Locate the
"version" field:
"version": "3.1.1"
- Increment the version accordingly and save the file.
2. Update the Changelog
Document all notable changes under the new version in CHANGELOG.md.
- Add a new section at the top of the file, right below
# Changelog and the introduction:
## [X.Y.Z] - YYYY-MM-DD
### Added
- Description of new features...
### Fixed / Refactored
- Description of bug fixes or enhancements...
- Follow semantic labeling (
Added, Changed, Deprecated, Removed, Fixed, Security) and ensure a clean separator --- between releases.
3. Package and Zip the Extension
WXT packages the extension separately for Chromium (MV3) and Firefox (MV2). Mozilla also strictly requires uploading the source code for bundled extensions.
-
Build for Chrome:
pnpm run zip
This compiles the project and generates .output/m10c-video-summary-extension-<version>-chrome.zip.
-
Build for Firefox:
pnpm run zip:firefox
This compiles the Firefox version and generates:
- The extension zip:
.output/m10c-video-summary-extension-<version>-firefox.zip
- The sources zip:
.output/m10c-video-summary-extension-<version>-sources.zip
Verify that all three files are successfully generated in the .output/ directory before proceeding.
4. Multi-Store Submission
Use the unified WXT submit tool to upload the zip packages to both the Chrome Web Store and the Firefox Addon Store in parallel.
- Ensure the submission secrets are set in
.env.submit (never commit this file to git).
- Run the submission command:
pnpm wxt submit \
--chrome-zip .output/m10c-video-summary-extension-<version>-chrome.zip \
--firefox-zip .output/m10c-video-summary-extension-<version>-firefox.zip \
--firefox-sources-zip .output/m10c-video-summary-extension-<version>-sources.zip
WXT will automatically read .env.submit to acquire tokens, upload both files in parallel, wait for Firefox validation (verifying 0 errors), and submit the updates for store review.
5. Git Tagging
After a successful submission, create and push a git tag to permanently mark the release in version control.
- Commit the version bump and changelog changes (if not already committed):
git add package.json CHANGELOG.md
git commit -m "chore: release v<version>"
- Create an annotated tag:
git tag -a v<version> -m "v<version>"
- Push the tag to the remote:
git push origin v<version>
The tag should follow the format v<MAJOR>.<MINOR>.<PATCH> (e.g., v3.1.1) to match the version in package.json.