{
  "id": 19585861,
  "title": "Publish a Chrome Extension: 6 Steps and a Review Checklist",
  "url": "https://urgent.news/2026/11/12/publish-a-chrome-extension-6-steps-and-a-review-checklist",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-11-12T02:10:16.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/extensionbooster/publish-a-chrome-extension-6-steps-and-a-review-checklist-17gg"
  },
  "original_language": "en",
  "account": "Before you can publish a Chrome extension, you need to have several essential items ready. These include a Google account (preferably a dedicated or Google Workspace account), an extension built on Manifest V3, a 128x128 PNG icon, at least one screenshot at 1280x800 or 640x400 resolution, a one-line summary, a longer description, a category, and a privacy policy URL if user data is handled. Additionally, you'll need $5 for the one-time registration fee.\n\nThe process of publishing begins with registering as a developer, which involves signing in to the Chrome Web Store Developer Dashboard, paying the $5 fee, and verifying your contact email. If you plan to publish under a brand, you must set up a group publisher and declare whether you are a trader or a non-trader.\n\nNext, you'll need to tighten your manifest file. Reviewers check the package against the manifest.json file, and two critical fields are the version and permissions. Broad permissions are the most common reason for first submissions to stall. To avoid this, only request the permissions your code actually calls, scope host permissions to specific domains instead of using \"all_urls\", and use activeTab when page access is only needed after the user clicks. A lean MV3 manifest example is provided.\n\nAfter that, you'll need to zip the correct folder. The manifest.json file must sit at the root of the ZIP and not inside a parent folder. If you use a bundler, zip the build output, not your source. The zip command is provided with instructions.\n\nThe next steps involve filling out the three tabs on the dashboard after uploading the ZIP. The Store listing includes the name, summary, detailed description, category, language, icon, and screenshots. The Privacy tab requires a single purpose, a justification per permission, data-use disclosures, and a privacy policy URL. The Distribution tab involves setting regions, pricing, and visibility options. It's crucial to provide clear answers as vague responses can hurt your submission.\n\nOnce the submission is complete, the approval process typically takes a few hours to a few days. However, sensitive permissions or large codebases may extend this time. It's essential to budget your time accordingly and avoid scheduling a launch on the same day you submit. Every update requires a higher version number, and you should avoid adding sensitive permissions casually.\n\nThe update loop is straightforward: bump the version, re-zip, upload the new package, and submit. Users will receive the update automatically over the following hours. To keep the process painless, never reuse a version number, keep permissions stable, and provide real release notes. These actions build trust with users and show reviewers what changes have been made.\n\nThe key takeaways from this process are the importance of narrow permissions, ensuring the ZIP file has manifest.json at the root, and thoroughly reviewing the Privacy tab. Remember that every update needs a higher version number, and avoid adding sensitive permissions carelessly. Approval is only the starting point, and once your extension is live, you can list it on ExtensionLaunch, a launch platform for browser extensions, to gain early installs and feedback.",
  "summary": "Originally published on ExtensionLaunch . To publish a Chrome extension, you need more than working code: the Chrome Web Store reviews your manifest, your permissions and your privacy answers before anyone can install it. Most first submissions that stall do so for avoidable reasons. Below are the six steps from developer account to first update, plus the checklist I'd run before pressing Submit.…",
  "key_points": [
    "Developer registration involves $5 fee, dashboard verification, and brand setup if applicable",
    "Narrow permissions, root manifest.json, and privacy tab thoroughness are critical for approval"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}