capacitor-app-upgrade-v6-to-v7
Guides the agent through upgrading a Capacitor app from v6 to v7. Use when the project is on Capacitor 6 and needs the v7 migration path. Do not use for other major versions, plugin-only upgrades, or non-Capacitor apps.
By cap-go · 527 installs
npx skills add cap-go/capgo-skills --skill capacitor-app-upgrade-v6-to-v7
Source repository · Upstream listing
Capacitor App Upgrade v6 to v7
Move a Capacitor 6 app to Capacitor 7. Source of truth: https://capacitorjs.com/docs/updating/7 0
When to Use
@capacitor/core in the snapshot below is 6.x and the user wants 7.x .
Build fails after bumping to 7 with JDK 21 / AGP 8.7 errors, iOS deployment target 13 errors, or TypeScript errors on removed deprecated plugin types.
The user asks for the exact 6 7 checklist.
Do not use:
App on 5.x capacitor app upgrade v5 to v6 first. On 7.x capacitor app upgrade v7 to v8 . Multi hop planning capacitor app upgrades .
Plugin library upgrade capacitor plugin upgrade v6 to v7 .
CocoaPods to SPM cocoapods to spm .
Live Project Snapshot
Current Capacitor packages from package.json :
! 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=[];for(const section of ['dependencies','devDependencies']){for(const [name,version] of Object.entries(pkg[section] {})){if(name.startsWith('@capacitor/'))out.push(section+'.'+name+'='+version)}}console.log(out.sort().join('\n'))"
References
Only load a reference when its topic is in play.
File Load when
references/android.md Editing variables.gradle , build.gradle , wrapper, manifest, or Kotlin by hand
references/plugins.md The app uses official @capacitor/ plugins (App, Device, Haptics, Splash Screen, Status Bar, ...)
Preflight
Tool Minimum for Capacitor 7
Node.js 20+ (latest LTS recommended)
Xcode 16.0+
iOS deployment target 14.0
Android Studio Ladybug 2024.2.1+ (bundles JDK 21)
Java (Gradle JDK) 21
AGP / Gradle 8.7.2 / 8.11.1
Android SDK minSdk 23, compileSdk 35, targetSdk 35
Procedure
1. Confirm 6.x from the snapshot. Note: dropping minSdk to 23 and iOS to 14 removes support for older devices; tell the user.
2. Run the automated migration:
It bumps packages, raises the iOS deployment target and Podfile to 14.0, updates Gradle files and the wrapper, and runs cap sync . Finish every step it reports as skipped or failed.
3. Config ( capacitor.config. ):
bundledWebRuntime is removed. false delete it. true the app must bundle @capacitor/core with a bundler (Vite, webpack, ...) instead of loading capacitor.js .
cordova.staticPlugins is removed. Cordova plugins that need static linking must use a podspec tag with use framework (cordova ios 7+ does not support the framework tag).
4. iOS : set iOS Deployment Target = 14.0 on the Project and every Target in Build Settings, and platform :ios, '14.0' in ios/App/Podfile . For SPM apps, check CapApp SPM/Package.swift platforms.
5. Android : apply references/android.md (AGP 8.7.2, Gradle 8.11.1, google services 4.4.2, Kotlin 1.9.25, optional navigation in configChanges ).
6. Update @capacitor/ plugins to ^7.0.0 and community plugins to their Capacitor 7 releases. Fix removed types per references/plugins.md .
7. Telemetry is opt out for new CLI users; it never runs in CI. Disable with npx cap telemetry off if the user wants.
8. Run verification.
Traps
JDK 21 is required: Capacitor 7 Android modules compile with Java 21 source/target, so a JDK 17 Gradle runtime fails with invalid source release: 21 . Fix the Gradle JDK (IDE and CI), not the code.
Community plugins still declaring minSdkVersion 22 or iOS 13 compile, but plugins that declare @capacitor/core peer ^6 cause npm ERESOLVE . Upgrade or replace them; avoid legacy peer deps unless the user accepts the risk.
Device getInfo() no longer returns diskFree , diskTotal , realDiskFree , realDiskTotal . Remove the matching PrivacyInfo.xcprivacy disk space entries only if no other code reads disk space.
Verification
Then build iOS in Xcode 16+ and launch both platforms.
Error Handling
Error Fix
Migrate can only be used on Capacitor 6, please use the CLI in Capacitor 6 to upgrade to 6 first Run capacitor app upgrade v5 to v6 first.
Capacitor 7 requires JDK 21 or higher. Some steps may fail. / invalid source release: 21 Set Gradle JDK to 21 (Android Studio Ladybug bundles it) and in CI.
Skipped updating deployment target Set iOS 14.0 manually in Xcode and Podfile (step 4).
Unable to find "<text " in <file . Try updating it manually Apply the diff from references/android.md .
Module '"@capacitor/app"' has no exported member 'AppUrlOpen' (or similar) Rename to the replacement type in references/plugins.md .
ERESOLVE unable to resolve dependency tree on @capacitor/core A plugin still peers on v6; upgrade it to its v7 release.