Back
Chapter 14

Submitting the Extension to the Web Store

View Source Code

I think we got to a point when we have enough functionalities that we can share extension with the world and what’s better way to do it than uploading it to the Chrome web store

So in this chapter I will show you how to do that

And since we followed the best practices of WXT we should get the Firefox version for free as well

Building for production

How to do it

So if we open package.json we can see the dev script that we’ve been using quite heavily

And we can see that there is another code build

We will not touch it right now but as you can imagine it generates the bundle

But what we’re using is zip which is similar to build except it prepares it for us to submit it to the web store

So what I’ll do is bun zip

bun zip
# or npm run zip

As you can see it created a lot of things and eventually zipped everything into this file

However it is called wxt-starter instead of tabnotes

Now that is because I never renamed my project in package.json

So let’s fix that and try once again that I prefer to have the correct name

{
  "name": "tabnotes",
  "version": "1.0.0"
}

Indeed it created a zip file with the right name

And if I go to my output folder I can see that it is indeed there

If I double click on it to see its contents I can see that this is basically everything that web extension should contain such as the manifest.json the files exactly as we configured

So I will just copy this zip file into my desktop

And I will use this to submit to the web store

Submitting to Chrome Web Store

First you need a developer account

Go to Chrome Web Store Developer Dashboard

It costs 5 dollars one-time fee

Once you have an account click New Item

Upload your zip file

Then fill out the store listing

Description write a clear description of what your extension does

Category choose appropriate category like Productivity

Language select primary language

Icon upload 128x128 pixel icon

Screenshots add 1-5 screenshots 1280x800 pixels recommended

For privacy you need to explain

Single Purpose explain your extension’s primary purpose

Permission Justification explain why you need each permission

Host Permission Justification if you request broad permissions like all_urls explain why

For distribution choose visibility Public Unlisted or Private

Select regions where extension should be available

Then submit for review

Review typically takes 1-3 business days

Chrome reviews extensions for compliance with developer program policies security concerns appropriate permission usage accurate description and screenshots

Submitting to Firefox Add-ons

Firefox is free no registration fee

Go to addons.mozilla.org

Click Submit a New Add-on

Choose On this site publicly listed

Upload your Firefox zip file

Firefox requires source code for review if you’re using minifiers or bundlers

Upload the sources zip file

Add build instructions in Notes to Reviewer

Example build instructions

Built with WXT framework.
To build: npm install && npm run zip:firefox

For version details

License choose appropriate license like MIT Mozilla Public License

Release Notes describe what’s new in this version

Add-on Slug choose a unique URL slug like tabnotes-for-any-page

Select 1-2 relevant categories

Examples Tabs Productivity Bookmarks

Upload 128x128 pixel icon

Add screenshots flexible sizing

Write description

Then submit for review

Review automatically validates the code

Manual review by Firefox team typically 1-5 days

More lenient than Chrome if permissions are justified

Best practices for approval

Keep permissions minimal

Only request permissions you actually need

Both stores scrutinize unnecessary permissions

Clear permission justification

Explain why each permission is necessary

Storage save user notes across browser sessions

Tabs detect which website is active to load relevant notes

Host permissions inject visual indicator ribbon on pages with notes

Quality screenshots

Show your extension in action

  1. Main feature popup with notes
  2. Secondary feature ribbon indicator
  3. Management page list of all notes

Accurate description

Be honest about what your extension does

Don’t overpromise or use misleading descriptions

Updating your extension

When you release a new version

Update version number in wxt.config.ts

export default defineConfig({
  manifest: {
    version: '1.1.0'
  }
});

Build new package

bun zip
bun zip:firefox

Upload to store

Chrome upload through Package tab

Firefox submit new version through Upload New Version

Write release notes explain what changed

Submit for review even updates go through review

TabNotes submission

For our TabNotes extension

Chrome Web Store

Name TabNotes

Category Productivity

Permissions Needed storage tabs scripting host_permissions

Review Time about 2 days

Result Approved

Firefox Add-ons

Slug tabnotes-on-any-page

Categories Tabs Bookmarks

License Mozilla Public License

Review Time about 2 days

Result Approved

Both platforms approved the extension without issues because we used minimal permissions provided clear justification included quality screenshots wrote accurate descriptions and followed best practices throughout development

Your extension is now live and available to millions of users