Skip to content
Latchkey

chrome-webstore-upload "Package is invalid" manifest error in CI

The Web Store unpacks the zip and parses manifest.json. "Package is invalid" with a manifest detail means the file is missing, not valid JSON, or has a field the store cannot accept.

What this error means

The upload returns FAILURE with an itemError detail beginning "Package is invalid:" and referencing the manifest or a specific manifest field.

chrome-webstore-upload
{
  "uploadState": "FAILURE",
  "itemError": [
    { "error_code": "INVALID_DEVELOPER",
      "error_detail": "Package is invalid: 'manifest.json' is missing or unreadable." }
  ]
}

Common causes

manifest.json is not at the zip root

The build zipped a parent directory, so manifest.json sits in a subfolder and the store cannot find it.

The manifest is malformed JSON

A trailing comma or template placeholder left manifest.json unparseable.

How to fix it

Zip the build directory contents, not its parent

  1. Confirm manifest.json sits at the top level of the zip.
  2. Zip from inside the dist directory so paths are relative to the root.
  3. Validate the manifest JSON before packaging.
Terminal
cd dist && zip -r ../extension.zip . && cd ..

Validate the manifest in CI

Parse manifest.json before upload so malformed JSON fails the build, not the store submission.

.github/workflows/ci.yml
- run: node -e "JSON.parse(require('fs').readFileSync('dist/manifest.json'))"

How to prevent it

  • Zip from inside the build directory so manifest.json is at the root.
  • Validate manifest JSON before packaging.
  • Inspect the zip listing in CI to confirm structure.

Frequently asked questions

What causes ""Package is invalid""?
The build zipped a parent directory, so manifest.json sits in a subfolder and the store cannot find it.
How do I fix "Package is invalid"?
Zip the build directory contents, not its parent

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card