Capacitor Plugin Upgrade V6 To V7
Upgrades a Capacitor plugin library from v6 to v7 using `npx @capacitor/plugin-migration-v6-to-v7…
by cap-go · MIT
The skill
Upgrades a Capacitor plugin library from v6 to v7 using `npx @capacitor/plugin-migration-v6-to-v7@latest`, then the manual checklist - dev deps `^7.0.0` and peer `@capacitor/core` `>=7.0.0`, tooling bumps (eslint, swiftlint, prettier 3 with prettier-plugin-java, rollup 4 with `rollup.config.mjs`, rimraf 6, docgen 0.3), minSdk 23 and compile/target SDK 35 defaults, AGP 8.7.2, Gradle 8.11.1, Java 21, Kotlin 1.9.25, iOS 14 in podspec and `Package.swift`, pinned `capacitor-swift-pm` `from: "7.0.0"`, plus removed APIs - `call.success()` / `call.error()` (use `resolve` / `reject`), `registerWebPlugin`, `Capacitor.platform` / `isNative`, Android `BridgeFragment`. Use when a plugin targets Capacitor 6 and must support 7. Do not use for app upgrades, other major versions, or non-Capacitor libraries.
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/core6.x and the plugin must work in Capacitor 7 apps. - Plugin code still calls
call.success(),call.error(),registerWebPlugin,Capacitor.platform,Capacitor.isNative, or usesBridgeFragment. Package.swiftpointscapacitor-swift-pmatbranch: "main".
Do not use:
- Upgrading an app ->
capacitor-app-upgrade-v6-to-v7. - Plugin on 5.x ->
capacitor-plugin-upgrade-v5-to-v6first; 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
-
Confirm 6.x and a clean tree.
-
From the plugin root:
npx @capacitor/plugin-migration-v6-to-v7@latestReview
git diff. -
package.json: dev deps
@capacitor/cli,core,android,iosto^7.0.0; peer@capacitor/coreto>=7.0.0. Tooling perreferences/tooling.md(note therollup.config.js->rollup.config.mjsrename and the--plugin=prettier-plugin-javascript flag). -
Android per
references/android.md: SDK defaults 23/35/35, AGP 8.7.2, Gradle 8.11.1, Java 21, Kotlin 1.9.25. -
iOS per
references/ios.md: podspecs.ios.deployment_target = '14.0',Package.swift.iOS(.v14),capacitor-swift-pmfrom: "7.0.0"instead ofbranch: "main". -
Removed APIs - search and replace:
call.success(...)->call.resolve(...);call.error(...)->call.reject(...)(Java/Kotlin and Swift).registerWebPluginand other v2-era definitions are gone; useregisterPlugin(see the Capacitor 3 plugin upgrade guide).Capacitor.platform->Capacitor.getPlatform();Capacitor.isNative->Capacitor.isNativePlatform().- Android
BridgeFragmentis removed. If the plugin presents a fragment through it, copy the needed logic into a plugin-ownedFragmentclass.
-
Upgrade the example app via
capacitor-app-upgrade-v6-to-v7, bump the plugin major, note "Requires Capacitor 7".
Verification
grep -n "\"@capacitor/\|rollup\|prettier\"" package.json
grep -rnE "\.success\(|\.error\(" android/src/main ios/ 2>/dev/null | grep -i call # expect none
grep -rnE "registerWebPlugin|Capacitor\.platform\b|Capacitor\.isNative\b|BridgeFragment" src/ android/ ios/ # expect none
grep -n "deployment_target" *.podspec # '14.0'
grep -n "iOS(\|capacitor-swift-pm" Package.swift 2>/dev/null # .v14, from: "7.0.0"
grep -n "VERSION_21\|gradle:8.7.2\|: 35\|: 23" android/build.gradle
npm run build
npm run verify # if the repo has the template verify scripts
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(). |
Use this skill
Connect your agent to the Skill Store MCP server and ask for it by ref: cap-go/capacitor-plugin-upgrade-v6-to-v7-1396609169.
Details
- Publisher
- cap-go
- Category
- Software Development › Mobile apps
- License
- MIT
- Updated
- 2026-10-17
References
More from cap-go
- Subscription App Revenue Revenue playbook for taking a mobile or web subscription app from zero to early MRR (around $1K).
- Capawesome Live Update Migration Migrates a Capacitor app from Capawesome Cloud live updates (@capawesome/capacitor-live-update, L…
- Cocoapods To Spm Migrates an existing Capacitor iOS app from CocoaPods to Swift Package Manager (SPM) before Cocoa…
- Cordova To Capacitor Migrates an Apache Cordova, PhoneGap, or Ionic-Cordova app to Capacitor.