Open-source project
aklinker1/vite-plugin-web-extension avatar
aklinker1/vite-plugin-web-extension

vite-plugin-web-extension builds your extension from the manifest, but it is on its way out

Vite plugin for developing Chrome/Web Extensions

844 stars61 forksTypeScriptMIT

At a glance

What is it?
vite-plugin-web-extension is a MIT licensed Vite plugin that turns a manifest.json into browser extension builds, opens a browser to install the unpacked extension during development and ships TypeScript support out of the box. Its own README announces that it will be deprecated in favour of WXT, so the adoption question is really a timing question.
Who is it for?
vite-plugin-web-extension suits an existing Vite based extension project that already runs on it and wants to keep its current setup rather than migrate mid release cycle. It is a poor fit for a new extension, because the author states that WXT is the successor, already supports everything this plugin does, and that the plugin will enter maintenance mode once WXT v1.0 ships.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Activity is slowing. The repository last received commits 6 months ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The manifest is the build input

The plugin's job is to take a browser extension source tree and turn it into something a browser will load, without asking you to hand-write a bundler configuration for each of the extension's separate entry points. A Chrome or Web extension is not a single page. It has a background script, a popup, an options page, content scripts that inject into other sites, and a manifest that ties them together, and each of those can pull in its own chunk of code. The feature list puts it plainly: the plugin automatically builds the inputs listed in your manifest.json. That is the mechanism, and it is the reason the tool exists. A developer writes the extension, describes the entry points in the manifest as the platform expects, and the plugin assembles the build. The audience is frontend developers who already live in Vite and want the same dev server, hot module replacement and build pipeline they use for a web app, applied to a target, the extension, that Vite knows nothing about.

The dev loop opens a browser and installs the extension

The development experience is the second half of the value, and the feature list is specific about it. The plugin will open a browser and install the extension during development, so the extension is loaded unpacked and reloaded as you work rather than being packaged and uploaded by hand. On top of that it advertises a super fast dev mode, full frontend framework support for the popup, the options page and content scripts, TypeScript support out of the box, and manifest validation. The last of those is the quiet one worth pausing on. A malformed manifest is a common failure for people writing extensions for the first time, and failing the build with a clear error rather than installing a broken extension into a browser saves a class of confusing debugging. The browser support claim is that it supports all browsers, which is the practical appeal over a Chrome-only tool, since the manifest and extension APIs are broadly similar across Chromium and Firefox based browsers.

Bootstrapping takes one create command

The README opens with the fastest path, and it is the same create command across four package managers:

bash
npm create vite-plugin-web-extension
pnpm create vite-plugin-web-extension
yarn create vite-plugin-web-extension
bun create vite-plugin-web-extension

Whichever package manager you use, the result is a project scaffold you can run immediately. After that, the documentation is the place to go, hosted at vite-plugin-web-extension.aklinker1.io, with the repository carrying a docs/ directory and a VitePress setup to build it. The root package.json shows how the project itself is organised, and it is worth noting because it reveals the shape of the published package. The repository root is private, the licence is MIT, the packageManager field pins pnpm at 8.15.9, the module type is set to module, and the scripts are limited to clean plus three VitePress documentation commands, with dev dependencies for typescript, vitepress and vue. The actual plugin lives in the packages/ directory, since pnpm-workspace.yaml and pnpm-lock.yaml are both present.

The author has already named the successor

The most important content in this README is the warning at the very top, and any evaluation that ignores it is misleading. The notice says that vite-plugin-web-extension will soon be deprecated in favour of WXT, its successor. It states that while WXT is still in pre-release it already supports everything this plugin does, that it is significantly more popular, and that it includes more features and bug fixes that are not, and will not be, added to vite-plugin-web-extension. The recommendation for a new project is to use WXT instead. The plan is that once WXT v1.0 is released, a more in-depth migration guide will be provided for existing projects, and only then will this plugin enter maintenance mode. That is a well managed deprecation, but it changes the decision you are making. You are not choosing between building and not building; you are choosing between a plugin with a stated end date and its replacement.

The two tools differ in architecture, not just in age

The real difference between the two projects is where the entry point logic lives. vite-plugin-web-extension is a Vite plugin, so it works by joining the Vite build and then post-processing the output to lay out the extension files, which means the manifest and the bundler configuration are two sources of truth that have to agree. WXT is built as a framework around the same ideas, with its own project layout and conventions, so the configuration is expressed once and the tool derives the rest, and the README's claim that it includes features and fixes this plugin will not receive points in that direction. For an existing project, the migration is not a config edit but a restructuring of how the extension is described. For a new project, choosing the successor now avoids doing that work twice, which is the argument the author is making when they tell new users to start with WXT.

MIT terms and a release trail that stops in April

The licence is MIT, with the LICENSE file at the root and the same licence declared in the package metadata, so there is nothing unusual about the terms for reuse in a commercial extension. The maintenance picture is where the dates matter. The release list shows v4.4.4 on 2025-06-07, v4.4.5 on 2025-07-16 and v4.5.1 on 2026-04-06, and the last push to the repository was on 2026-04-06, with the repository not archived. So the project is not frozen, but nothing has landed in the tree since April 2026, which is consistent with the notice that fixes and features are being directed at WXT instead. The repository also keeps a CI workflow for pull request checks, a CONTRIBUTING.md with setup instructions for working on the project itself, and a vercel.json for the documentation site. If you adopt this plugin, the sensible posture is to pin a published version and treat it as a dependency you will eventually replace.

Editorial conclusion

vite-plugin-web-extension suits an existing Vite based extension project that already runs on it and wants to keep its current setup rather than migrate mid release cycle. It is a poor fit for a new extension, because the author states that WXT is the successor, already supports everything this plugin does, and that the plugin will enter maintenance mode once WXT v1.0 ships. Verify first which WXT version is available and read the migration guide published for it before committing, and if you stay on this plugin, pin a release rather than tracking the branch, since the last push to the repository was on 2026-04-06 and the newest tag is v4.5.1 from the same day.

Frequently asked questions

How do I start a new browser extension project with vite-plugin-web-extension?

Run npm create vite-plugin-web-extension, or the same create command with pnpm, yarn or bun. The plugin builds the inputs listed in your manifest.json automatically, validates the manifest, and opens a browser to install the extension during development.

Is vite-plugin-web-extension deprecated?

The README states it will soon be deprecated in favour of WXT, its successor, and that it will enter maintenance mode once WXT v1.0 is released. WXT is recommended for new projects.

What does vite-plugin-web-extension do differently from a plain Vite build?

It turns the manifest.json into the build inputs, so the background script, popup, options page and content scripts are bundled without hand-written bundler configuration, and it reloads the unpacked extension in a browser during development.

Which licence is vite-plugin-web-extension released under?

MIT, with the licence text in the LICENSE file at the root of the repository and the same licence declared in the package metadata.

How do I migrate an existing project to WXT?

The README says a more in-depth migration guide will be provided once WXT v1.0 is released, and links a migration guide on the WXT site. The plugin's own releases stop at v4.5.1 on 2026-04-06, with the last push to the repository on the same date.

Official sources

  1. aklinker1/vite-plugin-web-extension on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/aklinker1-vite-plugin-web-extension.svg)](https://hysenlabs.com/projects/aklinker1-vite-plugin-web-extension)

Was this useful?