capacitor-plugin-upgrade-v5-to-v6

Guides the agent through upgrading a Capacitor plugin from v5 to v6. Use when the plugin targets Capacitor 5 and needs the v6 migration path. Do not use for app upgrades, other major versions, or non-Capacitor plugins.

By cap-go · 519 installs

npx skills add cap-go/capgo-skills --skill capacitor-plugin-upgrade-v5-to-v6

Source repository · Upstream listing

Capacitor Plugin Upgrade v5 to v6 Move a plugin library to Capacitor 6. Source of truth: https://capacitorjs.com/docs/updating/plugins/6 0 When to Use Snapshot shows @capacitor/core 5.x and the plugin must work in Capacitor 6 apps. definitions.ts still declares Promise<PluginListenerHandle & PluginListenerHandle . The user wants to add SPM support while moving to 6. Do not use: Upgrading an app capacitor app upgrade v5 to v6 . Plugin on 4.x capacitor plugin upgrade v4 to v5 first; on 6.x capacitor plugin upgrade v6 to v7 . Multi hop capacitor plugin upgrades . Full SPM conversion details 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 or Kotlin changes by hand Preflight Tool Minimum Node.js 18+ Xcode 15.0+ Java 17 AGP / Gradle 8.2.1 / 8.2.1 Android SDK defaults compileSdk 34, targetSdk 34, minSdk 22 iOS deployment target 13.0 (unchanged) Procedure 1. Confirm 5.x and a clean tree. 2. From the plugin root: Review git diff . 3. Finish manually ( references/android.md ): dev deps to latest 6 , peer @capacitor/core to ^6.0.0 , compileSdk (not compileSdkVersion ) default 34, targetSdkVersion default 34, AGP 8.2.1, Gradle 8.2.1, Kotlin 1.9.10. 4. definitions.ts : every addListener overload must return only Promise<PluginListenerHandle : Update web.ts and README/docgen output to match. This is a breaking change for consumers who used the sync handle. 5. iOS : delete CAP PLUGIN METHOD(removeAllListeners, CAPPluginReturnPromise); from the plugin .m file. It is now built in for all plugins. 6. Optional SPM : Capacitor 6 adds experimental SPM. Ask the user if they want it now; if yes follow capacitor plugin spm support (adds Package.swift , CAPBridgedPlugin conformance in Swift). 7. Upgrade the example app via capacitor app upgrade v5 to v6 , bump the plugin major, note "Requires Capacitor 6". Verification Run the example app on both platforms; add and remove each listener. Error Handling Error Fix TS: Property 'remove' does not exist on type 'Promise<PluginListenerHandle ' in example/tests await the addListener call. AGP deprecation warning on compileSdkVersion Use compileSdk . removeAllListeners still listed in the .m file Remove the CAP PLUGIN METHOD line (step 5); the method is built in. Example app ERESOLVE on @capacitor/core Peer range still ^5 ; set ^6.0.0 .