extension-publishing
Workflow
prepare → package → submit → review → publish- Prepare: assets, privacy policy, permission justifications, manifest
- Package:
zipsource (exclude dev files), validate manifest - Submit: Chrome Web Store Developer Dashboard
- Review: 1–3 days typical; up to 7 days for new publishers
- Publish: auto or manual rollout
Pre-Submission Checklist (Quick)
- Manifest v3 only (MV2 deprecated)
name,version,descriptionset in manifest- Icons: 16×16, 48×48, 128×128 PNG
- Screenshots: min 1, 1280×800 or 640×400
- Single purpose clearly defined
- Only permissions actually used
- Privacy policy URL (required if collecting data)
- Permission justification field filled for sensitive perms
- No remote code execution (
eval, remote scripts) - All features functional in review build
Full checklist: references/submission-checklist.md
Top 10 Rejection Reasons
- Single purpose violation — does too many unrelated things
- Excessive/unnecessary permissions
- Missing privacy policy (required when user data collected)
- Missing permission justification in submission form
- Description doesn't match functionality
- Keyword spam in title/description
- Remote code execution (
eval, external scripts) - Improper user data handling or disclosure
- Extension non-functional or crashes
- Broken features / inaccessible links
Full details + fixes: references/common-rejections.md
Listing Optimization Essentials
- Title:
<Action verb> + <Benefit>, max 45 chars, no keyword stuffing - Description first 150 chars: shown in search — make them count
- Structure: problem → solution → key benefits → CTA
- Screenshots: annotate features, show real UI, 1280×800
- Category: choose most specific fit
Full guide: references/store-listing-optimization.md
CI/CD with chrome-webstore-upload
Install
npm install -g chrome-webstore-upload-cliUpload & Publish
# Upload new version
chrome-webstore-upload upload \
--source extension.zip \
--extension-id $EXT_ID \
--client-id $CLIENT_ID \
--client-secret $CLIENT_SECRET \
--refresh-token $REFRESH_TOKEN
# Publish
chrome-webstore-upload publish \
--extension-id $EXT_ID \
--client-id $CLIENT_ID \
--client-secret $CLIENT_SECRET \
--refresh-token $REFRESH_TOKENRequired Env Vars
| Var | Source |
|---|---|
EXT_ID | Dashboard URL |
CLIENT_ID | GCP OAuth client |
CLIENT_SECRET | GCP OAuth client |
REFRESH_TOKEN | Run OAuth flow once |
Full GitHub Actions pipeline: references/ci-cd-automation.md
Plasmo Built-in Publishing
Plasmo has integrated browser store submission (https://docs.plasmo.com/):
plasmo build # Build for production
plasmo package # Create store-ready zipReference Files
| File | Content |
|---|---|
| submission-checklist.md | Complete pre-submission checklist with assets, manifest, privacy |
| store-listing-optimization.md | Title, description, screenshots, keywords, localization |
| common-rejections.md | Top rejections with fixes, appeal process |
| ci-cd-automation.md | GitHub Actions, versioning, build pipeline |