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.
{
"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
- Confirm manifest.json sits at the top level of the zip.
- Zip from inside the dist directory so paths are relative to the root.
- Validate the manifest JSON before packaging.
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.
- 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.