capacitor-plugin-upgrade-v6-to-v7
Guides the agent through upgrading a Capacitor plugin from v6 to v7. Use when the plugin targets Capacitor 6 and needs the v7 migration path. Do not use for app upgrades, other major versions, or non-Capacitor plugins.
By cap-go · 522 installs
npx skills add cap-go/capgo-skills --skill capacitor-plugin-upgrade-v6-to-v7
Source repository · Upstream listing
Capacitor Plugin Upgrade v6 to v7
Move a plugin library to Capacitor 7. Source of truth: https://capacitorjs.com/docs/updating/plugins/7 0
When to Use
Snapshot shows @capacitor/core 6.x and the plugin must work in Capacitor 7 apps.
Plugin code still calls call.success() , call.error() , registerWebPlugin , Capacitor.platform , Capacitor.isNative , or uses BridgeFragment .
Package.swift points capacitor swift pm at branch: "main" .
Do not use:
Upgrading an app capacitor app upgrade v6 to v7 .
Plugin on 5.x capacitor plugin upgrade v5 to v6 first; on 7.x capacitor plugin upgrade v7 to v8 . Multi hop capacitor plugin upgrades .
Adding SPM from scratch capacitor plugin spm support .
Live Project Snapshot
Plugin and Capacitor package snapshot:
! 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'))"
Example and native project paths:
! find . maxdepth 3 \( path './example app' o path './ios' o path './android' \)
References
File Load when
references/android.md Applying Gradle, Java, or Kotlin changes by hand
references/ios.md Raising the iOS target in podspec / Package.swift / old structure Xcode project, pinning capacitor swift pm
references/tooling.md Updating eslint, swiftlint, prettier, rollup, rimraf, docgen
Preflight
Tool Minimum
Node.js 20+
Xcode 16.0+
iOS deployment target 14.0
Java 21
AGP / Gradle 8.7.2 / 8.11.1
Android SDK defaults minSdk 23, compileSdk 35, targetSdk 35
Procedure
1. Confirm 6.x and a clean tree.
2. From the plugin root:
Review git diff .
3. package.json : dev deps @capacitor/cli , core , android , ios to ^7.0.0 ; peer @capacitor/core to =7.0.0 . Tooling per references/tooling.md (note the rollup.config.js rollup.config.mjs rename and the plugin=prettier plugin java script flag).
4. Android per references/android.md : SDK defaults 23/35/35, AGP 8.7.2, Gradle 8.11.1, Java 21, Kotlin 1.9.25.
5. iOS per references/ios.md : podspec s.ios.deployment target = '14.0' , Package.swift .iOS(.v14) , capacitor swift pm from: "7.0.0" instead of branch: "main" .
6. Removed APIs search and replace:
call.success(...) call.resolve(...) ; call.error(...) call.reject(...) (Java/Kotlin and Swift).
registerWebPlugin and other v2 era definitions are gone; use registerPlugin (see the Capacitor 3 plugin upgrade guide).
Capacitor.platform Capacitor.getPlatform() ; Capacitor.isNative Capacitor.isNativePlatform() .
Android BridgeFragment is removed. If the plugin presents a fragment through it, copy the needed logic into a plugin owned Fragment class.
7. Upgrade the example app via capacitor app upgrade v6 to v7 , bump the plugin major, note "Requires Capacitor 7".
Verification
Run the example app on both platforms.
Error Handling
Error Fix
cannot find symbol ... success( / error( on PluginCall Use resolve / reject .
invalid source release: 21 Gradle JDK must be 21.
SPM: target requires minimum platform version higher than the plugin declares Set platforms: [.iOS(.v14)] in Package.swift and pin capacitor swift pm from: "7.0.0" .
Rollup 4 fails to load rollup.config.js (ESM config) Rename to rollup.config.mjs and update the build script.
Property 'platform' does not exist on type 'CapacitorGlobal' Use Capacitor.getPlatform() .