wxt-browser-extensions▌
pproenca/dot-skills · updated Apr 8, 2026
Comprehensive performance optimization guide for WXT browser extension development. Contains 49 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation. Updated for WXT v0.20+.
Community WXT Browser Extensions Best Practices
Comprehensive performance optimization guide for WXT browser extension development. Contains 49 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation. Updated for WXT v0.20+.
When to Apply
Reference these guidelines when:
- Writing new WXT browser extension code
- Implementing service worker background scripts
- Injecting content scripts into web pages
- Setting up messaging between extension contexts
- Configuring manifest permissions and resources
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Service Worker Lifecycle | CRITICAL | svc- |
| 2 | Content Script Injection | CRITICAL | inject- |
| 3 | Messaging Architecture | HIGH | msg- |
| 4 | Storage Patterns | HIGH | store- |
| 5 | Bundle Optimization | MEDIUM-HIGH | bundle- |
| 6 | Manifest Configuration | MEDIUM | manifest- |
| 7 | UI Performance | MEDIUM | ui- |
| 8 | TypeScript Patterns | LOW-MEDIUM | ts- |
Quick Reference
1. Service Worker Lifecycle (CRITICAL)
svc-register-listeners-synchronously- Register listeners synchronously to prevent missed eventssvc-avoid-global-state- Use storage instead of in-memory statesvc-keep-alive-patterns- Keep service worker alive for long operationssvc-handle-install-update- Handle install and update lifecycle eventssvc-offscreen-documents- Use offscreen documents for DOM operationssvc-declarative-net-request- Use declarative rules for network blocking
2. Content Script Injection (CRITICAL)
inject-use-main-function- Place runtime code inside main() functioninject-choose-correct-world- Select ISOLATED or MAIN world appropriatelyinject-run-at-timing- Configure appropriate runAt timinginject-use-ctx-invalidated- Handle context invalidation on updateinject-dynamic-registration- Use runtime registration for conditional injectioninject-all-frames- Configure allFrames for iframe handlinginject-spa-navigation- Handle SPA navigation with wxt:locationchange
3. Messaging Architecture (HIGH)
msg-type-safe-messaging- Use @webext-core/messaging for type-safe protocolsmsg-return-true-for-async- Return true for async message handlers (raw API)msg-use-tabs-sendmessage- Use tabs.sendMessage for content scriptsmsg-use-ports-for-streams- Use ports for streaming communicationmsg-handle-no-receiver- Handle missing message receiversmsg-avoid-circular-messages- Prevent circular message loops
4. Storage Patterns (HIGH)
store-use-define-item- Use storage.defineItem for type-safe accessstore-choose-storage-area- Select appropriate storage areastore-batch-operations- Group related data into single defineItemstore-watch-for-changes- Use watch() for reactive updatesstore-handle-quota-errors- Handle storage quota errorsstore-versioned-migrations- Use versioning for schema migrations
5. Bundle Optimization (MEDIUM-HIGH)
bundle-split-entrypoints- Split code by entrypointbundle-analyze-size- Analyze and monitor bundle sizebundle-tree-shake-icons- Use direct imports for icon librariesbundle-externalize-wasm- Load WASM dynamicallybundle-minify-content-scripts- Minimize content script size
6. Manifest Configuration (MEDIUM)
manifest-minimal-permissions- Request minimal permissionsmanifest-use-optional-permissions- Use optional permissions progressivelymanifest-web-accessible-resources- Scope web accessible resourcesmanifest-content-security-policy- Configure CSP correctlymanifest-cross-browser-compatibility- Support multiple browsers
7. UI Performance (MEDIUM)
ui-use-shadow-dom- Use Shadow DOM for injected UIui-defer-rendering- Defer popup rendering until neededui-cleanup-on-unmount- Clean up UI on unmountui-sidepanel-persistence- Preserve sidepanel stateui-position-fixed-iframe- Use iframe for complex UIui-avoid-layout-thrashing- Batch DOM reads and writes
8. TypeScript Patterns (LOW-MEDIUM)
ts-use-imports-module- Use #imports virtual module and auto-importsts-use-browser-not-chrome- Use browser namespace over chromets-type-entrypoint-options- Type entrypoint options explicitlyts-augment-browser-types- Augment types for missing APIsts-strict-null-checks- Enable strict null checksts-import-meta-env- Use import.meta for build infots-avoid-any- Avoid any type in handlersts-path-aliases- Use path aliases for imports
How to Use
Read individual reference files for detailed explanations and code examples:
- Section definitions - Category structure and impact levels
- Rule template - Template for adding new rules
Reference Files
| File | Description |
|---|---|
| references/_sections.md | Category definitions and ordering |
| assets/templates/_template.md | Template for new rules |
| metadata.json | Version and reference information |
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.4★★★★★51 reviews- ★★★★★Kaira Iyer· Dec 24, 2024
wxt-browser-extensions has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Advait Thomas· Dec 24, 2024
wxt-browser-extensions reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Zara Rahman· Dec 16, 2024
Registry listing for wxt-browser-extensions matched our evaluation — installs cleanly and behaves as described in the markdown.
- ★★★★★Dhruvi Jain· Dec 4, 2024
wxt-browser-extensions fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Oshnikdeep· Nov 23, 2024
Registry listing for wxt-browser-extensions matched our evaluation — installs cleanly and behaves as described in the markdown.
- ★★★★★Anika Ghosh· Nov 19, 2024
Keeps context tight: wxt-browser-extensions is the kind of skill you can hand to a new teammate without a long onboarding doc.
- ★★★★★Advait Mensah· Nov 15, 2024
We added wxt-browser-extensions from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Anika Thomas· Nov 7, 2024
wxt-browser-extensions fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Tariq Diallo· Oct 26, 2024
We added wxt-browser-extensions from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Ganesh Mohane· Oct 14, 2024
wxt-browser-extensions reduced setup friction for our internal harness; good balance of opinion and flexibility.
showing 1-10 of 51