Skip to content

Compare

Lets compare the features of WXT vs Plasmo (another framework) and CRXJS (a bundler plugin).

Overview

  • ✅ - Full support
  • 🟡 - Partial support
  • ❌ - No support
FeaturesWXTPlasmoCRXJS
Supports all browsers🟡 [1]
MV2 Support🟡 [2]
MV3 Support🟡 [2]
Create Extension ZIPs
Create Firefox Sources ZIP
First-class TypeScript support
Entrypoint discovery[3][3]
Inline entrypoint config[4]
Auto-imports
Reusable module system
Supports all frontend frameworks🟡 [5]
Framework specific entrypoints (like Popup.tsx)🟡 [6][7]
Automated publishing
Remote Code Bundling (Google Analytics)
Unlisted HTML Pages
Unlisted Scripts
ESM Content Scripts[8]
Dev Mode
.env Files
Opens browser with extension installed
HMR for UIs🟡 [9]
Reload HTML Files on Change🟡 [10]
Reload Content Scripts on Change🟡 [10]
Reload Background on Change🟡 [10]🟡 [10]🟡 [10]
Respects Content Script run_at[11]
Built-in Wrappers
Storage[12]
Messaging[12][12]
Content Script UI[12]
I18n

  1. As of v2.0.0-beta.23, but v2 stable hasn't been released yet. ↩︎

  2. Either MV2 or MV3, not both. ↩︎ ↩︎

  3. File based. ↩︎ ↩︎

  4. Entrypoint options all configured in manifest.json. ↩︎

  5. Only React, Vue, and Svelte. ↩︎

  6. .html, .ts, .tsx. ↩︎

  7. .html, .ts, .tsx, .vue, .svelte. ↩︎

  8. WIP, moving very slowly. Follow wxt-dev/wxt#357 for updates. ↩︎

  9. React only. ↩︎

  10. Reloads entire extension. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  11. ESM-style loaders run asynchronously. ↩︎

  12. There is no built-in wrapper around this API. However, you can still access the standard APIs via chrome/browser globals or use any 3rd party NPM package. ↩︎ ↩︎ ↩︎ ↩︎