4.1 KiB
4.1 KiB
Compare
Lets compare the features of WXT vs Plasmo (another framework) and CRXJS (a bundler plugin).
Overview
| Features | WXT | Plasmo | CRXJS |
|---|---|---|---|
| Supports all browsers | ✅ | ✅ | 🟡 10 |
| MV2 Support | ✅ | ✅ | 🟡 1 |
| MV3 Support | ✅ | ✅ | 🟡 1 |
| Create Extension ZIPs | ✅ | ✅ | ❌ |
| Create Firefox Sources ZIP | ✅ | ❌ | ❌ |
| First-class TypeScript support | ✅ | ✅ | ✅ |
| Entrypoint discovery | ✅ 2 | ✅ 2 | ❌ |
| Inline entrypoint config | ✅ | ✅ | ❌ 9 |
| Auto-imports | ✅ | ❌ | ❌ |
| Supports all frontend frameworks | ✅ | 🟡 3 | ✅ |
Framework specific entrypoints (like Popup.tsx) |
🟡 4 | ✅ 5 | ❌ |
| Automated publishing | ✅ | ✅ | ❌ |
| Remote Code Bundling (Google Analytics) | ✅ | ✅ | ❌ |
| Dev Mode | |||
.env Files |
✅ | ✅ | ✅ |
| Opens browser with extension installed | ✅ | ❌ | ❌ |
| HMR for UIs | ✅ | 🟡 6 | ✅ |
| Reload HTML Files on Change | ✅ | 🟡 7 | ✅ |
| Reload Content Scripts on Change | ✅ | 🟡 7 | ✅ |
| Reload Background on Change | 🟡 7 | 🟡 7 | 🟡 7 |
Respects Content Script run_at |
✅ | ✅ | ❌ 8 |
| Built-in Utils | |||
| Storage | ✅ | ✅ | ❌ 11 |
| Messaging | ❌ 11 | ✅ | ❌ 11 |
| Content Script UI | ✅ | ✅ | ❌ 11 |
2: File based.
3: Only React, Vue, and Svelte.
4:
.html .ts .tsx.
5:
.html .ts .tsx. .vue .svelte.
6: React only.
7: Reloads entire extension.
8: ESM-style loaders run asynchronously.
9: Entrypoint options all configured in `manifest.json`.
10: As of
v2.0.0-beta.23, but v2 stable hasn't been released yet.
11: 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.