# Compare Lets compare the features of WXT vs [Plasmo](https://docs.plasmo.com/framework) (another framework) and [CRXJS](https://crxjs.dev/vite-plugin) (a bundler plugin). ## Overview | Features | WXT | Plasmo | CRXJS | | ---------------------------------------------------- | :-------------------------: | :--------------------------------------: | :---------------------------------------------------------------------: | | Supports all browsers | ✅ | ✅ | ❌ See [#56](https://github.com/crxjs/chrome-extension-tools/issues/56) | | MV2 Support | ✅ | ✅ | 🟡 Either MV2 or MV3 | | MV3 Support | ✅ | ✅ | 🟡 Either MV2 or MV3 | | Create Extension ZIPs | ✅ | ✅ | ❌ | | Create Firefox Sources ZIP | ✅ | ❌ | ❌ | | First-class TypeScript support | ✅ | ✅ | ✅ | | Entrypoint discovery | File based | File based | ❌ | | Inline entrypoint config | ✅ | ✅ | Manifest based | | Auto-imports | ✅ | ❌ | ❌ | | Supports all frontend frameworks | ✅ | 🟡 Only React, Vue, and Svelte | ✅ | | Framework specific entrypoints (like `Popup.tsx`) | 🟡 `.html` `.ts` `.tsx` | ✅ `.html` `.ts` `.tsx` `.vue` `.svelte` | ❌ | | Automated publishing | ✅ | ✅ | ❌ | | Remote Code Bundling (Google Analytics) | ✅ | ✅ | ❌ | | Dev Mode | | | | `.env` Files | ✅ | ✅ | ✅ | | Opens browser and install extension | ✅ | ❌ | ❌ | | HMR for UIs | ✅ | 🟡 React only | ✅ | | Reload HTML Files on Change | ✅ | 🟡 Reloads entire extension | ✅ | | Reload Content Scripts on Change | ✅ | 🟡 Reloads entire extension | ✅ | | Reload Background on Change | 🟡 Reloads entire extension | 🟡 Reloads entire extension | 🟡 Reloads entire extension | | Respects Content Script `run_at` | ✅ | ✅ | ❌ ESM-style loaders run asynchronously | | Built-in Utils | | | | | Storage | ✅ | ✅ | ❌ | | Messaging | ❌ | ✅ | ❌ | | Content Script UI | ✅ | ✅ | ❌ |