capacitor-plugin-upgrades について
Capacitor プラグインのメンテナー向けに、バージョンアップを計画するスキルです。対応範囲を確認し、専用スキルを使ってメジャーバージョンごとに移行・検証します。
主な機能
- 01対応バージョン範囲の検出
- 02メジャーバージョン単位の計画
- 03対応する移行スキルの利用
- 04API とネイティブ設定の確認
- 05プラグインとサンプルアプリでの検証
活用シーン
- 01新しい Capacitor メジャーバージョンへの対応
- 02アプリより古い peerDependencies への対処
- 03新バージョンやシーンベースアプリでの互換性問題の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cap-go/ capgo-skills --skill capacitor-plugin-upgradesインストール後、Claude Code で/capacitor-plugin-upgradesを入力して読み込まれたか確認します。
同梱ファイルmetadata.json
詳細
Capacitor プラグインのアップグレード(ルーター)
バージョン固有のスキルを各段階で使用し、メジャーバージョンを一つずつ上げてプラグインをアップグレードする計画を立て、実行します。
使用する場合
以下の場合に使用します。
- プラグインのメンテナーが新しい Capacitor メジャーバージョンへの対応を望んでいるが、必要な段階数が不明な場合
peerDependencies["@capacitor/core"]がアプリの Capacitor バージョンより遅れている場合- プラグインのユーザーから、Capacitor 8.5 のシーンベースアプリまたは Capacitor 9 で動作しないという報告があった場合
以下の場合は使用しないでください。
- アプリプロジェクト ->
capacitor-app-upgrades - プラグインに SPM を追加する場合 ->
capacitor-plugin-spm-support - Cordova プラグインを Capacitor プラグインに変換する場合 ->
cordova-to-capacitor
現在のプロジェクトのスナップショット
プラグインと Capacitor パッケージのスナップショット:
!node -e "const fs=require('fs');if(!fs.existsSync('package.json'))process.exit(0);const pkg=JSON.parse(fs.readFileSync('package.json','utf8'));const out=['package.name='+(pkg.name||''),'package.version='+(pkg.version||'')];for(const section of ['peerDependencies','dependencies','devDependencies']){for(const [name,version] of Object.entries(pkg[section]||{})){if(name.startsWith('@capacitor/'))out.push(section+'.'+name+'='+version)}}console.log(out.join('\n'))"
サンプルアプリとネイティブプロジェクトのパス:
!find . -maxdepth 3 \( -path './example-app' -o -path './ios' -o -path './android' -o -name 'capacitor.config.json' -o -name 'capacitor.config.ts' -o -name 'capacitor.config.js' \)
バージョン対応表(2026年10月)
| 段階 | スキル | 備考 |
|---|---|---|
| 4 -> 5 | capacitor-plugin-upgrade-v4-to-v5 | |
| 5 -> 6 | capacitor-plugin-upgrade-v5-to-v6 | |
| 6 -> 7 | capacitor-plugin-upgrade-v6-to-v7 | |
| 7 -> 8 | capacitor-plugin-upgrade-v7-to-v8 | iOS 15、SDK 36、AGP 8.13 |
| 8.5 ライフサイクル | capacitor-uiscene-migration(references/plugin-audit.md) | 監査のみ。プラグインが1リリースのルールに従っていれば、バージョンを上げる必要はありません |
| 8 -> 9 | capacitor-plugin-upgrade-v8-to-v9 | npx @capacitor/plugin-migration-v8-to-v9@latest、iOS 16、SDK 37、AGP 9.2.1、API の削除 |
Capacitor 9 はプレリリースです(next タグ、9.0.0-alpha.x)。GA までは next / >=9.0.0-alpha.6 の範囲を使用してください。プラグインの v9 リリースも npm の next タグで公開することを検討してください。現在安定版のメジャーバージョンへの対応を終了する前に、ユーザーに確認してください。
手順
- 検出: 対応範囲を確認します(ピア依存関係、
Package.swiftのcapacitor-swift-pm要件、podspec のCapacitor依存関係、android/build.gradleのデフォルト値)。対象のメジャーバージョンをユーザーに確認します。 - 段階を計画: メジャーバージョンを一つずつ上げます。8 -> 9 に移行する場合は、その段階で UIScene プラグイン監査を実行します。例:7 -> 9 の場合、7->8、UIScene 監査、8->9 の順に進めます。
- 各段階で: Git ツリーがクリーンであることを確認し、その段階のスキルを読み込み、公式マイグレーターが指定されている場合は最初に実行します(
npx @capacitor/plugin-migration-v<from>-to-v<to>@latest)。差分を確認し、手動チェックリストを完了してから、次の段階に進む前に検証します(手順 5)。 - 各段階で再確認する範囲: TypeScript の定義とエクスポート名、ネイティブメソッドのシグネチャとペイロード、Android の名前空間と Java/Kotlin ツールチェーン、podspec と
Package.swiftの iOS デプロイメントターゲット(両方を維持)、README のインストール手順と互換性表。 - 検証: プラグインのルートとサンプルアプリの両方で検証します。
検証
npm run verify が存在する場合は実行します。存在しない場合:
npm run build
npm test --if-present
cd android && ./gradlew clean build && cd ..
xcodebuild -scheme <PluginScheme> -destination 'generic/platform=iOS Simulator' build # find it with xcodebuild -list
cd example-app && npm install && npx cap sync && npx cap run ios && npx cap run android
npx cap sync とネイティブ実行は、プラグインのルートではなく、サンプルアプリまたはテストアプリから実行します。リリース対象の各プラットフォームで、すべての公開メソッドを試します。
エラー処理
- その段階のマイグレーターが失敗する、またはファイルを処理し損ねる場合 -> 次のメジャーバージョンに進む前に、その段階のスキルに従って手動で完了します。
- サンプルアプリが動作しなくなった場合 -> 公開前にプラグイン API またはネイティブの接続を修正します。
- CocoaPods と SPM の両方を使用する利用者から問題が報告された場合 -> podspec と
Package.swiftで同じプラットフォームと Capacitor の範囲が宣言されていることを確認します。 - シーンベースアプリでのみプラグインが動作しない場合 -> AppDelegate メソッドまたは
tmpWindowの前提を確認します。capacitor-uiscene-migrationを参照してください。