Files
2026-07-26 18:02:38 -05:00

4.1 KiB

Compare

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

Overview

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

  1. Appears to be in maintenance mode with little to no maintainers nor feature development happening and (see wxt-dev/wxt#1404 (comment)) ↩︎

  2. See crxjs/chrome-extension-tools#974 ↩︎

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

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

  5. File based. ↩︎

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

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

  8. .html, .ts, .tsx. ↩︎

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

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

  11. React only. ↩︎

  12. Reloads entire extension. ↩︎

  13. ESM-style loaders run asynchronously. ↩︎

  14. 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. ↩︎