← ClaudeAtlas

extension-migrationlisted

Migrate Chrome extensions from MV2 to MV3. Service workers, declarativeNetRequest, API replacements. Use when: migrate, mv2, mv3, manifest v2.
andrewr303/claude-codex-plugin-lab · ★ 0 · API & Backend · score 60
Install: claude install-skill andrewr303/claude-codex-plugin-lab
# Extension Migration (MV2 → MV3) Official migration guide: https://developer.chrome.com/docs/extensions/develop/migrate > **Consider framework adoption**: When migrating MV2→MV3, consider adopting [WXT](https://wxt.dev/) or [Plasmo](https://docs.plasmo.com/) for built-in MV3 support, auto-manifest generation, and modern tooling. ## Workflow Overview 1. Audit existing MV2 extension (APIs, permissions, background scripts) 2. Update `manifest_version` to 3 3. Convert background page → service worker 4. Replace deprecated APIs (see Quick Reference below) 5. Update permissions, CSP, web_accessible_resources format 6. Migrate webRequest → declarativeNetRequest (if blocking) 7. Bundle any remote code locally 8. Test all functionality across Chrome versions 9. Submit to Chrome Web Store ## Key Breaking Changes | Area | MV2 | MV3 | |------|-----|-----| | Background | `background.scripts/page` | `background.service_worker` | | Browser action | `browser_action` / `page_action` | `action` | | Network blocking | `webRequest` (blocking) | `declarativeNetRequest` | | Script injection | `tabs.executeScript(string)` | `scripting.executeScript({func/files})` | | Remote code | CDN scripts allowed | Must bundle locally | | CSP | String value | Object `{extension_pages: "..."}` | | Web accessible | `string[]` | `object[]` with `matches` field | | Host permissions | In `permissions` array | Separate `host_permissions` array | | URL helper | `chrome.extension.getURL` | `chrome.runtime.getURL