Submission troubleshooting
Quick fixes for the errors that stop a submission before or during review. For post-review rejections, see Rejection codes.
Upload and dashboard errors
Section titled “Upload and dashboard errors”| symptom | fix |
|---|---|
| “An error occurred: please try again later” on upload | Upload the file produced by pnpm zip from .output/, not a hand-made archive. manifest.json must sit at the zip root, not inside a folder. |
| “Invalid manifest” / manifest key warnings | Never hand-edit manifest.json; it is generated. Fix the source in wxt.config.ts and rebuild. Uploading a Firefox zip to CWS also lands here: browser-specific keys belong only in the Firefox build. |
| “Cannot submit: privacy practices incomplete” | Every permission needs a justification and every data question an answer. Work through Privacy disclosures; the submit button stays disabled until all fields are filled. |
| Icon errors | The manifest icon set must include 128×128. Regenerate assets rather than resizing by hand. |
| “Version already exists” | Bump version in wxt.config.ts and rebuild; each upload needs a strictly greater version. |
Stuck in review
Section titled “Stuck in review”- Pending for more than ~2 weeks: broad host permissions
(
https://*/*from the demo content script; narrow it), newly registered accounts, and first submissions all extend review. The “contact support” form in the dashboard occasionally unsticks month-old items. - Review keeps asking about a permission: your justification doesn’t connect the permission to user-visible functionality. Rewrite it as “user does X → extension needs Y”, or remove the permission.
Approved but broken
Section titled “Approved but broken”- Test the exact store zip: unzip the file you uploaded and load it unpacked in a fresh profile. Dev output and the production zip differ (env, minification).
- Check env values baked into the build:
WXT_API_URLand the Firebase config compile in at build time; a zip built with a stale.envpoints at the wrong backend. Rebuild with production values and submit an update. - The background dying on some installs is usually a permission or API-availability difference; see the background guide.
Account-level problems
Section titled “Account-level problems”- Emails asking you to “verify your item” by granting OAuth access are phishing; the store never asks for that. Report and delete.
- Payments-profile or identity-verification holds block publishing until resolved in the dashboard; start that process before launch day.