A Capacitor app is a web app with two native shells, and building it means three toolchains in the right order: Node for the web build, Xcode on a Mac for iOS, the Android SDK with the right Java for Android. VibeView cloud builds run all three from one command, from Windows, Linux or a Mac.

The build doesn’t end as a download. It lands in your app on VibeView and opens on a live device in a browser tab, so you can check the native shell, the plugins and the web app inside it together, share the running build as a link, or run a recorded test against it.

What the builders have for Capacitor and Ionic

Web build

Node.js 22 with npm, Yarn and pnpm. The install step follows your lockfile, and your build script runs before cap sync.

iOS

A managed macOS toolchain with a stable Xcode release and CocoaPods. A project with a Podfile builds the workspace; cap sync installs the pods.

Android

The Android SDK with Java 17 and 21. Capacitor 7 and later need Gradle to run on Java 21, and the suggested command switches to it for you; Capacitor 6 stays on Java 17.

Ruby

Ruby with Bundler on both platforms, for a Gemfile-pinned CocoaPods or a Fastlane lane in the build command.

Every build log starts with the versions it ran, and the cloud builds docs list what each one needs.

How it works

  1. Commit the native projects. Keep the android/ and ios/ folders that npx cap add creates in git. The build syncs your web app into them; it doesn’t create them.
  2. Run the build from your project root. The CLI recognizes the project by its capacitor.config file or the @capacitor/core dependency and suggests commands that install, run your web build, sync and build natively. Your answers are saved to vibeview.json.
    npm install -g vibeview
    vibeview build --cloud --platform all
  3. Open it on a cloud device, then ship it. The simulator and emulator builds open on a cloud iPhone or Android phone in your browser. For Google Play, add the signing block the App Signing docs show to your Gradle file, build with --production and upload with vibeview submit; an iOS release goes to TestFlight the same way, with an archive command you write once.
    vibeview build --cloud --production --platform android
    vibeview submit --platform android --latest --track internal

Then run the build on a live device

Here the device is part of your plan, not an add-on. Every simulator or emulator build lands in your app’s build history and opens on a cloud iPhone or Android device in your browser. Share it as a link with someone who has no Mac and no account, run your recorded tests against it, or let your coding agent install it, tap through it and check its own work.

What it doesn’t do

iOS release builds need your command. The CLI suggests the Android release command but not the iOS one, because iOS signing is set up per project. The guide shows the archive command.

No live updates. VibeView builds, signs and uploads native binaries. It doesn’t push web-layer updates to installed apps over the air.

Phones and tablets. Capacitor apps build for iOS and Android. Capacitor doesn’t target Apple TV, and the CLI suggests no Android TV command.

The store upload is the binary only. Store listings, screenshots and review stay in App Store Connect and Play Console.

What it costs

Every plan includes cloud builds each month — 15 on Free, 25 on Dev, 65 on Starter and 330 on Pro. Beyond that, each build draws from usage credit: $1.50 per iOS build and $0.75 per Android build on paid plans, $2 and $1 on Free. Builds canceled while queued, or that fail for a reason on our side, are not charged. See pricing for everything each plan includes.

Keep going

Moving off Ionic Appflow? Ionic Appflow alternative sets out where the two differ, with sources.

Frequently asked questions

Can I build an Ionic app for iOS without a Mac?

Yes, when it uses Capacitor. vibeview build --cloud runs your web build, cap sync ios and the Xcode build on a managed macOS toolchain, from Windows, Linux or a Mac. The simulator build opens on a cloud iPhone; a production build is a signed .ipa that vibeview submit uploads to TestFlight.

Which Capacitor versions work?

The suggested commands handle Capacitor 6 and later. Capacitor 7 and later need Gradle to run on Java 21, so the CLI adds a JAVA_HOME switch when the project’s Gradle wrapper is 8.5 or later; Capacitor 6’s older Gradle stays on Java 17. If you upgrade Capacitor later, add the switch to the saved command yourself.

What does the build command do?

It installs your dependencies the way your lockfile says, runs your package.json build script, copies the result into the native project with npx cap sync, then builds with Gradle or Xcode. A project without a build script skips that step.

Does VibeView do live updates like Appflow?

No. VibeView builds, signs and submits the native app and runs it on cloud devices; it doesn’t push over-the-air updates to installed apps. The Ionic Appflow alternative page sets out what moves over and what doesn’t.

Do Cordova projects work?

The CLI suggests commands for Capacitor projects only. A cloud build runs any shell command you give it, so a project whose tools install from the build command can build too; it needs to produce a simulator .app or an emulator .apk to run on a cloud device.