cordova-to-capacitor

Complete guide for migrating from Apache Cordova to Capacitor. Use this skill when users need to modernize a Cordova/PhoneGap app to Capacitor, migrate plugins, or understand platform differences.

By cap-go · 656 installs

npx skills add cap-go/capgo-skills --skill cordova-to-capacitor

Source repository · Upstream listing

Cordova to Capacitor Migration Step by step guide for migrating from Apache Cordova/PhoneGap to Capacitor. When to Use This Skill Migrating an existing Cordova app to Capacitor Converting PhoneGap projects to Capacitor Understanding Cordova vs Capacitor differences Finding Capacitor equivalents for Cordova plugins Modernizing hybrid mobile apps Live Project Snapshot Current migration related packages: ! 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.includes('cordova') name.startsWith('@capacitor/') name.startsWith('@ionic enterprise/'))out.push(section+'.'+name+'='+version)}}console.log(out.sort().join('\n'))" Relevant config and platform paths: ! find . maxdepth 3 \( name 'config.xml' o name 'capacitor.config.json' o name 'capacitor.config.ts' o name 'capacitor.config.js' o path './ios' o path './android' \) Why Migrate from Cordova? Aspect Cordova Capacitor Native IDE Builds via CLI First class Xcode/Android Studio Plugin Management Separate ecosystem npm packages Updates Full app store review Live updates with Capgo Web App Platform Any Any (React, Vue, Angular, etc.) Maintenance Slowing down Active development TypeScript Limited Full support Modern APIs Older patterns Modern Promise based APIs Migration Process Overview Step 1: Assess Your Current App Start from the injected snapshot above before falling back to manual inspection. Check Cordova version: List installed plugins: Review config.xml: Step 2: Install Capacitor In your existing Cordova project: When prompted: App name : Your app's display name App ID : Use the same ID from config.xml (e.g., com.company.app ) Web directory : Usually www for Cordova projects Step 3: Add Platforms Capacitor doesn't modify web assets. Add platforms separately: This creates: ios/ directory with Xcode project android/ directory with Android Studio project Step 4: Migrate Plugins CRITICAL: Check plugin compatibility first. Core Cordova Plugins → Capacitor Equivalents Cordova Plugin Capacitor Equivalent Install Command cordova plugin camera @capacitor/camera npm install @capacitor/camera cordova plugin geolocation @capacitor/geolocation npm install @capacitor/geolocation cordova plugin device @capacitor/device npm install @capacitor/device cordova plugin network information @capacitor/network npm install @capacitor/network cordova plugin statusbar @capacitor/status bar npm install @capacitor/status bar cordova plugin splashscreen @capacitor/splash screen npm install @capacitor/splash screen cordova plugin keyboard @capacitor/keyboard npm install @capacitor/keyboard cordova plugin dialogs @capacitor/dialog npm install @capacitor/dialog cordova plugin file @capacitor/filesystem npm install @capacitor/filesystem cordova plugin inappbrowser @capacitor/browser npm install @capacitor/browser cordova plugin media @capacitor/media Custom or use @capgo plugins cordova plugin vibration @capacitor/haptics npm install @capacitor/haptics cordova plugin local notifications @capacitor/local notifications npm install @capacitor/local notifications cordova plugin push @capacitor/push notifications npm install @capacitor/push notifications Third Party Cordova Plugins → Capgo Equivalents For biometrics: For payments: For social login: Check the full plugin catalog: https://github.com/Cap go/awesome capacitor Step 5: Update Code Import Changes Cordova (old): Capacitor (new): Common Pattern Changes Device Information: Network Status: Geolocation: Remove deviceready Event Capacitor doesn't need deviceready. Plugins work immediately. Step 6: Update Configuration Cordova uses config.xml. Capacitor uses capacitor.config.ts Create capacitor.config.ts Migrate config.xml Settings Preferences: Capacitor equivalent: Orientation: Set in Xcode/Android Studio per platform StatusBar: Use @capacitor/status bar plugin Platform specific config: Capacitor equivalent: Step 7: Handle Permissions Capacitor requires explicit permission configuration. iOS: Info.plist Add to ios/App/App/Info.plist: Android: AndroidManifest.xml Add to android/app/src/main/AndroidManifest.xml: Step 8: Sync and Build Sync web code with native projects: This copies: Web assets from www/ to native projects Installs native dependencies Updates plugin configurations Build for iOS: Build for Android: Step 9: Test the App Test all plugin functionality: Camera/photo picker Geolocation File operations Network detection Device information Push notifications Check for: Missing permissions API differences Callback → Promise conversions Removed plugins Step 10: Remove Cordova Once migration is complete and tested: Common Issues and Solutions Issue: Plugin Not Found Problem: Solution: 1. Check if plugin is installed: npm list 2. Sync native projects: npx cap sync 3. Clean and rebuild in Xcode/Android Studio Issue: deviceready Never Fires Problem: Cordova's deviceready event doesn't exist in Capacitor. Solution: Remove all deviceready event listeners. Capacitor plugins work immediately. Issue: White Screen on Startup Problem: App shows white screen or crashes. Solution: 1. Check webDir in capacitor.config.ts points to correct build output 2. Rebuild web app: npm run build 3. Sync: npx cap sync 4. Check browser console in device for errors Issue: Permissions Not Working Problem: Camera/location/etc. fail silently. Solution: 1. Add permission strings to Info.plist (iOS) 2. Add permission declarations to AndroidManifest.xml (Android) 3. Request permissions explicitly in code: Issue: Plugins Using Old Cordova API Problem: Some third party Cordova plugins still reference Cordova global. Solution: Use the Capacitor Cordova compatibility layer: Capacitor includes Cordova compatibility, but: It's best to migrate to native Capacitor plugins when possible Not all Cordova plugins will work Hybrid Approach: Run Both You can run Cordova and Capacitor side by side during migration. 1. Install Capacitor alongside Cordova 2. Keep both config.xml and capacitor.config.ts 3. Migrate plugins incrementally 4. Test each platform independently When ready, remove Cordova entirely. Plugin Migration Checklist [ ] List all Cordova plugins: cordova plugin list [ ] Find Capacitor equivalents (use table above) [ ] Install Capacitor plugins: npm install @capacitor/plugin name [ ] Update imports in code [ ] Convert callbacks to async/await [ ] Remove deviceready event listeners [ ] Add permission strings (iOS Info.plist, Android AndroidManifest.xml) [ ] Sync native projects: npx cap sync [ ] Test on physical devices [ ] Remove Cordova plugins after verification Live Updates with Capgo Capacitor enables instant updates without app store review. After migration, add Capgo for OTA updates: Users get updates instantly. See the capgo live updates skill for details. Resources Official Migration Guide : https://capacitorjs.com/docs/cordova/migrating from cordova to capacitor Capacitor Docs : https://capacitorjs.com/docs Plugin Search : https://github.com/Cap go/awesome capacitor Capgo Plugins : https://github.com/Cap go?q=capacitor Community Forum : https://forum.ionicframework.com/c/capacitor Migration Timeline Estimate App Size Estimated Time Small (1 3 plugins) 2 4 hours Medium (4 8 plugins) 1 2 days Large (9+ plugins) 3 5 days Enterprise (custom plugins) 1 2 weeks Post Migration Benefits After migrating from Cordova to Capacitor: ✅ Faster development Direct access to Xcode/Android Studio ✅ Live updates Deploy updates without app store review (with Capgo) ✅ Better TypeScript Full type safety ✅ Modern APIs Promise based, async/await ✅ Active maintenance Regular updates and improvements ✅ Better debugging Native IDE debugging tools ✅ Improved performance Optimized native bridge Next Steps 1. Complete the migration using steps above 2. Test thoroughly on physical devices 3. Set up CI/CD (see capacitor ci cd skill) 4. Add live updates (see capgo live updates skill) 5. Submit to app stores (see capacitor app store skill)