自作のChrome拡張機能をManifestV3に移行してみた


概要

ManifestV3が使えるChrome 88が少し前に正式リリースされたので試しに移行してみた時の感想や注意点を雑にまとめた記事です。
ちなみに移行したのはMouseGestureという自作のChrome拡張機能です。

実際にManifestV3してみる

取り敢えずmanifest.jsonmanifest_versionを3に変更してみます。

manifest.json
- "manifest_version": 2
+ "manifest_version": 3

エラーが発生しました。

~\projects\MouseGesture_Chrome-Extensions
The "background.scripts" key cannot be used with manifest_version 3. Use the "background.service_worker" key instead.
マニフェストを読み込めませんでした。

指示通りbackgroundscriptsservice_workerをに変更してみました。

manifest.json
     "background": {
-         "scripts": ["js/background.js"],
-         "persistent": false
+         "service_worker": "js/background.js"
      }

登録はできましたがまたエラーが発生しました。

Service worker registration failed

色々調べてみて分かりましたがどうやらservice_workerのスクリプトはmanifest.jsonと同じフォルダにないと駄目みたいです。

├─css
├─html
├─icons
├─js
├─background.js
└─manifest.json

background.jsを移動後

manifest.json
     "background": {
-         "service_worker": "js/background.js"
+         "service_worker": "background.js"
      }

しかしまだ他のエラーが発生します。

'browser_action' requires manifest version of 2 or lower.

こっちの解決方法は単純でbrowser_actionactionに変えればいいだけでした。

manifest.json
-     "browser_action": { "default_popup": "html/popup.html" }
+     "action": { "default_popup": "html/popup.html" }

たったこれだけの修正でManifestV3に更新できました。

まとめ

バックグラウンドページやイベントページはサービスワーカーへ移行する必要があります。
その時ファイルの位置をmanifest.jsonと同じディレクトリにします。
browser_actionpage_actionactionに変える必要があります。
移行に必要なことについてはManifest V3 migration checklistが参考になります。

参考リンク