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 |
---|---|---|---|
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 | ✅ | ❌ | ❌ |
As of
v2.0.0-beta.23
, but v2 stable hasn't been released yet. ↩︎Entrypoint options all configured in
manifest.json
. ↩︎Only React, Vue, and Svelte. ↩︎
.html
,.ts
,.tsx
. ↩︎.html
,.ts
,.tsx
,.vue
,.svelte
. ↩︎WIP, moving very slowly. Follow wxt-dev/wxt#357 for updates. ↩︎
React only. ↩︎
ESM-style loaders run asynchronously. ↩︎
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. ↩︎ ↩︎ ↩︎ ↩︎