cap-go/capgo-skills2 files

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.

Specification
Skill ID
cap-go/capgo-skills/cordova-to-capacitor
Publisher
cap-go
Repository
capgo-skills
Installs
0
Files
2
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

cap-go/capgo-skills/cordova-to-capacitorInstalls these files
  • SKILL.md
  • metadata.json

What this skill tells the agent

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?

AspectCordovaCapacitor
Native IDEBuilds via CLIFirst-class Xcode/Android Studio
Plugin ManagementSeparate ecosystemnpm packages
UpdatesFull app store reviewLive updates with Capgo
Web App PlatformAnyAny (React, Vue, Angular, etc.)
MaintenanceSlowing downActive development
TypeScriptLimitedFull support
Modern APIsOlder patternsModern 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:

cordova --version
cordova platform version

List installed plugins:

cordova plugin list

Review config.xml:

cat config.xml

Step 2: Install Capacitor

In your existing Cordova project:

# Install Capacitor
npm install @capacitor/core @capacitor/cli

# Initialize Capacitor
npx cap init

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:

# Add iOS platform
npm install @capacitor/ios
npx cap add ios

# Add Android platform
npm install @capacitor/android
npx cap add android

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 PluginCapacitor EquivalentInstall Command
cordova-plugin-camera@capacitor/cameranpm install @capacitor/camera
cordova-plugin-geolocation@capacitor/geolocationnpm install @capacitor/geolocation
cordova-plugin-device@capacitor/devicenpm install @capacitor/device
cordova-plugin-network-information@capacitor/networknpm install @capacitor/network
cordova-plugin-statusbar@capacitor/status-barnpm install @capacitor/status-bar
cordova-plugin-splashscreen@capacitor/splash-screennpm install @capacitor/splash-screen
cordova-plugin-keyboard@capacitor/keyboardnpm install @capacitor/keyboard
cordova-plugin-dialogs@capacitor/dialognpm install @capacitor/dialog
cordova-plugin-file@capacitor/filesystemnpm install @capacitor/filesystem
cordova-plugin-inappbrowser@capacitor/browsernpm install @capacitor/browser
cordova-plugin-media@capacitor/mediaCustom or use @capgo plugins
cordova-plugin-vibration@capacitor/hapticsnpm install @capacitor/haptics
cordova-plugin-local-notifications@capacitor/local-notificationsnpm install @capacitor/local-notifications
cordova-plugin-push@capacitor/push-notificationsnpm install @capacitor/push-notifications
Third-Party Cordova Plugins → Capgo Equivalents

For biometrics:

# Cordova
cordova plugin add cordova-plugin-fingerprint-aio

# Capacitor
npm install @capgo/capacitor-native-biometric

For payments:

# Cordova
cordova plugin add cordova-plugin-purchase

# Capacitor
npm install @capgo/capacitor-purchases

For social login:

# Facebook
npm install @capgo/capacitor-social-login

# Google
npm install @codetrix-studio/capacitor-google-auth

Check the full plugin catalog: https://github.com/Cap-go/awesome-capacitor

Step 5: Update Code

Import Changes

Cordova (old):

document.addEventListener('deviceready', () => {
  navigator.camera.getPicture(success, error, options);
});

Capacitor (new):

import { Camera } from '@capacitor/camera';

// No deviceready event needed
const image = await Camera.getPhoto({
  quality: 90,
  allowEditing: true,
  resultType: CameraResultType.Uri
});
Common Pattern Changes

Device Information:

// Cordova
const uuid = device.uuid;
const platform = device.platform;

// Capacitor
import { Device } from '@capacitor/device';
const info = await Device.getId();
const platform = await Device.getInfo();

Network Status:

// Cordova
const networkState = navigator.connection.type;

// Capacitor
import { Network } from '@capacitor/network';
const status = await Network.getStatus();
console.log('Connected:', status.connected);

Geolocation:

// Cordova
navigator.geolocation.getCurrentPosition(success, error);

// Capacitor
import { Geolocation } from '@capacitor/geolocation';
const position = await Geolocation.getCurrentPosition();
Remove deviceready Event

Capacitor doesn't need deviceready. Plugins work immediately.

// Cordova (remove this)
document.addEventListener('deviceready', onDeviceReady, false);

function onDeviceReady() {
  // Your code
}

// Capacitor (just use directly)
import { Camera } from '@capacitor/camera';

async function takePicture() {
  const photo = await Camera.getPhoto();
}

Step 6: Update Configuration

Cordova uses config.xml. Capacitor uses capacitor.config.ts

Create capacitor.config.ts
import type { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
  appId: 'com.company.app', // From config.xml widget id
  appName: 'My App',         // From config.xml name
  webDir: 'www',             // From Cordova build output
  server: {
    androidScheme: 'https'
  },
  plugins: {
    SplashScreen: {
      launchShowDuration: 3000,
      backgroundColor: '#ffffff',
      androidScaleType: 'CENTER_CROP',
      showSpinner: false
    }
  }
};

export default config;
Migrate config.xml Settings

Preferences:

<!-- Cordova config.xml -->
<preference name="Orientation" value="portrait" />
<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="StatusBarBackgroundColor" value="#000000" />

Capacitor equivalent:

  • Orientation: Set in Xcode/Android Studio per platform
  • StatusBar: Use @capacitor/status-bar plugin

Platform-specific config:

<!-- Cordova config.xml -->
<platform name="ios">
  <allow-intent href="itms:*" />
</platform>

Capacitor equivalent:

// capacitor.config.ts
const config: CapacitorConfig = {
  ios: {
    contentInset: 'always',
  },
  android: {
    allowMixedContent: true,
  }
};

Step 7: Handle Permissions

Capacitor requires explicit permission configuration.

iOS: Info.plist

Add to ios/App/App/Info.plist:

<key>NSCameraUsageDescription</key>
<string>We need camera access to take photos</string>

<key>NSPhotoLibraryUsageDescription</key>

Use this skill in a project

Open any RiverX project, search the Skills panel for cap-go/capgo-skills/cordova-to-capacitor, and install it in one click.

Use this skill