Skill
Community

Extension Store Submission

Install
1
Install the plugin
$
npx claudepluginhub arustydev/agents --plugin browser-extension-dev

Want just this skill?

Then install: npx claudepluginhub u/[userId]/[slug]

Description

Complete guides for submitting browser extensions to Chrome Web Store, Firefox Add-ons (AMO), Safari App Store, and Edge Add-ons. Covers account setup, asset preparation, submission process, and post-publication management.

Tool Access

This skill uses the workspace's default tool permissions.

Skill Content

Extension Store Submission

Complete guides for submitting browser extensions to Chrome Web Store, Firefox Add-ons (AMO), Safari App Store, and Edge Add-ons. Covers account setup, asset preparation, submission process, and post-publication management.

Store Overview

StoreReview TimeFeeManifest VersionUpdate Frequency
Chrome Web Store1-3 days$5 (one-time)V3 requiredOn submission
Firefox Add-ons1-5 daysFreeV2 or V3On submission
Safari App Store1-7 days$99/yearV3 requiredApp Store Connect
Edge Add-ons1-7 daysFreeV3 requiredPartner Center

Chrome Web Store

Account Setup

  1. Create or use existing Google account
  2. Pay $5 one-time registration fee at Chrome Web Store Developer Dashboard
  3. Verify account (email verification required)
  4. Set up payment profile for paid extensions

Required Assets

AssetDimensionsFormatNotes
Icon128x128PNGRequired in manifest
Screenshots1280x800 or 640x400PNG/JPEG1-5 required
Promotional tile (small)440x280PNG/JPEGOptional
Promotional tile (large)920x680PNG/JPEGFeatured extensions
Marquee1400x560PNG/JPEGHomepage features

Submission Process

1. Package Extension
   $ wxt zip          # Creates .output/<name>-<version>-chrome.zip

2. Upload to Dashboard
   → Developer Dashboard → Items → Add New Item
   → Upload ZIP file

3. Complete Store Listing
   → Description (up to 132 chars visible)
   → Screenshots (actual functionality)
   → Category selection
   → Language/region targeting

4. Privacy Practices
   → Data collection disclosure
   → Privacy policy URL (if collecting data)
   → Permissions justification

5. Submit for Review
   → Preview listing
   → Submit for review

Permission Justifications

Chrome requires justification for sensitive permissions:

PermissionRequires JustificationExample Justification
<all_urls>Yes"Required to inject content script on all pages for ad blocking"
tabsYes"Needed to track tab URLs for bookmark sync"
webRequestYes"Required to modify request headers for privacy protection"
historyYes"Core functionality: history search and management"
cookiesYes"Session management for authenticated API calls"

Common Rejection Reasons

ReasonPolicyFix
Misleading metadataAccurate descriptionsMatch listing to functionality
Insufficient functionalitySingle purposeAdd meaningful features
Excessive permissionsMinimum necessaryRemove unused permissions
Remote code executionNo remote codeBundle all scripts
Trademark violationIP rightsRemove protected terms
Spam/deceptiveQuality guidelinesProvide genuine value

Review Acceleration

  • Provide clear testing instructions in reviewer notes
  • Include demo account if login required
  • Document all permission usage in privacy section
  • Respond quickly to reviewer questions
  • No policy violations = faster reviews

Firefox Add-ons (AMO)

Account Setup

  1. Create Firefox Account at addons.mozilla.org
  2. No registration fee required
  3. Enable two-factor authentication (recommended)
  4. Complete developer agreement

Required Manifest Fields

{
  "browser_specific_settings": {
    "gecko": {
      "id": "extension@example.com",
      "strict_min_version": "109.0",
      "data_collection_permissions": {
        "required": [],
        "optional": ["technicalAndInteraction"]
      }
    }
  }
}

Required Assets

AssetDimensionsFormatNotes
Icon48x48, 96x96PNGRequired in manifest
ScreenshotsAny reasonablePNG/JPEG1+ showing functionality
Header image700x280PNG/JPEGOptional

Submission Process

1. Build Extension
   $ wxt zip -b firefox  # Creates .output/<name>-<version>-firefox.zip

2. Sign Extension (optional for self-distribution)
   $ web-ext sign --api-key=KEY --api-secret=SECRET

3. Submit to AMO
   → addons.mozilla.org → Submit a New Add-on
   → Upload ZIP file
   → Choose visibility (listed/unlisted)

4. Provide Information
   → Extension name and summary
   → Category selection
   → Support email/URL
   → License selection

5. Source Code Submission (if minified)
   → Upload source archive
   → Include build instructions

6. Review Notes
   → Testing instructions
   → Permission explanations
   → Third-party library list

Data Collection Permissions (Required 2025+)

{
  "browser_specific_settings": {
    "gecko": {
      "data_collection_permissions": {
        "required": ["technicalAndInteraction"],
        "optional": ["locationData", "healthData"]
      }
    }
  }
}
PermissionDescription
technicalAndInteractionUsage patterns, crash reports
locationDataGeographic information
healthDataHealth-related data
financialDataPayment/financial info
personalIdentifiersNames, emails, accounts

Common Rejection Reasons

ReasonFix
Missing gecko.idAdd unique email-format ID
Obfuscated code without sourceSubmit source code archive
eval() or new Function() usageRefactor to static code
Inline scripts in HTMLMove to external files
Missing data consentAdd data_collection_permissions
Security vulnerabilitiesFix reported issues

Listed vs Unlisted

TypeReviewDistributionUpdates
ListedFull reviewAMO search/installAuto-update
UnlistedAutomatedDirect downloadManual or auto

Use unlisted for: Enterprise deployments, beta testing, private tools.

Safari App Store

Account Setup

  1. Enroll in Apple Developer Program ($99/year)
  2. Create App Store Connect account
  3. Generate signing certificates in Xcode
  4. Register App ID in Developer Portal

Converting Web Extension

# Convert existing extension to Safari format
xcrun safari-web-extension-converter /path/to/extension \
  --project-location /path/to/output \
  --app-name "Extension Name" \
  --bundle-identifier com.example.extension

# Open generated Xcode project
open /path/to/output/Extension\ Name.xcodeproj

Required Assets

AssetDimensionsFormatNotes
App Icon1024x1024PNGPlus all required sizes
Screenshots (iPhone)Various sizesPNGPer device class
Screenshots (iPad)Various sizesPNGIf supporting iPad
Screenshots (Mac)2880x1800PNGFor Mac App Store

Privacy Manifest (PrivacyInfo.xcprivacy)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>NSPrivacyTracking</key>
  <false/>
  <key>NSPrivacyTrackingDomains</key>
  <array/>
  <key>NSPrivacyCollectedDataTypes</key>
  <array>
    <dict>
      <key>NSPrivacyCollectedDataType</key>
      <string>NSPrivacyCollectedDataTypeBrowsingHistory</string>
      <key>NSPrivacyCollectedDataTypeLinked</key>
      <false/>
      <key>NSPrivacyCollectedDataTypeTracking</key>
      <false/>
      <key>NSPrivacyCollectedDataTypePurposes</key>
      <array>
        <string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
      </array>
    </dict>
  </array>
  <key>NSPrivacyAccessedAPITypes</key>
  <array/>
</dict>
</plist>

Submission Process

1. Build in Xcode
   → Product → Archive
   → Select archive → Distribute App
   → App Store Connect → Upload

2. App Store Connect
   → Create new app record
   → Fill app information
   → Upload screenshots
   → Complete privacy questionnaire

3. Submit for Review
   → Select build
   → Add review notes
   → Submit for review

Common Rejection Reasons

GuidelineIssueFix
2.1 PerformanceApp crashesTest on all target devices
2.3 Accurate MetadataScreenshots don't matchUpdate screenshots
2.5 Software RequirementsMissing privacy manifestAdd PrivacyInfo.xcprivacy
4.2 Minimum FunctionalityExtension does too littleAdd meaningful features
5.1 PrivacyUndisclosed data collectionUpdate privacy policy

App Store Guidelines for Extensions

  • Extension must have a containing app with functionality
  • Containing app cannot be empty (add settings, instructions)
  • Extension should work offline where applicable
  • Must provide clear instructions for enabling extension

Edge Add-ons

Account Setup

  1. Create Microsoft Partner Center account
  2. No registration fee required
  3. Complete verification process
  4. Accept developer agreement

Submission Process

1. Package Extension (same as Chrome)
   $ wxt zip          # Chrome format works for Edge

2. Partner Center
   → Partner Center → Microsoft Edge → Extensions
   → Create new extension
   → Upload ZIP file

3. Complete Listing
   → Store listing information
   → Screenshots and assets
   → Category selection

4. Submit for Review
   → Preview and submit

Chrome Extension Migration

Edge accepts Chrome extensions with minimal changes:

{
  "manifest_version": 3,
  "name": "Extension Name",
  "version": "1.0.0",
  "description": "Description"
  // No Edge-specific fields required
}

Version Management

Semantic Versioning

MAJOR.MINOR.PATCH

1.0.0 → Initial release
1.0.1 → Bug fix
1.1.0 → New feature (backward compatible)
2.0.0 → Breaking changes

Update Strategy

StoreUpdate MethodNotes
ChromeUpload new versionSame item, increment version
FirefoxUpload new versionMust be higher version
SafariNew build in XcodeIncrement build number
EdgeUpload new versionSame extension ID

Staged Rollouts

Chrome Web Store supports staged rollouts:

1. Developer Dashboard → Item → Package
2. Upload new version
3. Set rollout percentage (5%, 10%, 50%, 100%)
4. Monitor crash reports and reviews
5. Increase percentage or rollback

Review Timeline Tips

Faster Reviews

  1. Clear description: Explain exactly what extension does
  2. Test instructions: Step-by-step for reviewers
  3. Demo credentials: If login required
  4. Permission docs: Why each permission is needed
  5. Clean code: No obfuscation, no suspicious patterns
  6. Policy compliance: Follow all guidelines

When Reviews Take Longer

ScenarioTypical DelayMitigation
First submission+2-3 daysThorough preparation
Sensitive permissions+1-2 daysDetailed justification
Code review required+3-5 daysSubmit source code
Policy questionsVariableRespond quickly
High volume periods+1-3 daysAvoid holidays

Post-Publication

Monitoring

  • Crash reports: Chrome DevTools, Firefox crash reporting
  • User reviews: Respond promptly, address issues
  • Analytics: Usage patterns, feature adoption
  • Security: Watch for vulnerability reports

Responding to Reviews

Do:
- Thank users for feedback
- Acknowledge issues promptly
- Provide solutions or workarounds
- Follow up after fixes

Don't:
- Argue with users
- Make excuses
- Ignore negative reviews
- Promise features you can't deliver

Handling Rejection

1. Read rejection reason carefully
2. Understand the specific policy violated
3. Make necessary changes
4. Document changes in notes
5. Resubmit with explanation
6. Appeal if rejection seems incorrect

Multi-Store Publishing Workflow

# Build for all stores
wxt zip                    # Chrome/Edge
wxt zip -b firefox         # Firefox

# Safari requires Xcode build
# Open project and archive

# Submit in order of review speed
1. Edge Add-ons (fastest)
2. Chrome Web Store
3. Firefox Add-ons
4. Safari App Store (slowest)

Related Resources

  • store-submission-reviewer agent: Pre-submission compliance checking
  • cross-browser-compatibility skill: API compatibility matrices
  • validate-extension command: Automated validation

Quality Checklist

Before submitting to any store:

  • All functionality tested on target browser
  • Screenshots show actual extension features
  • Description accurately describes functionality
  • Privacy policy covers all data collection
  • All permissions justified and documented
  • No deprecated APIs or patterns
  • Version number incremented correctly
  • Store-specific requirements met
Stats
Stars6
Forks2
Last CommitMar 18, 2026

Similar Skills