Vibe code to app stores

Web Apps — Capacitor

2 min read

These guides walk through the full, manual process of wrapping a vibe-coded web app in a native shell using Capacitor and publishing it to the Google Play Store and/or the Apple App Store.

Lunadeck automates most of this pipeline (framework detection, builds, signing, and store upload), but these guides are useful if you want to understand what's happening under the hood, build locally before connecting to Lunadeck, or troubleshoot issues with your Capacitor project.

What is Capacitor?

Capacitor takes your built HTML/CSS/JS files, copies them into a native Android or iOS project, and wraps them in a WebView — a full-screen browser disguised as a native app. The result looks and behaves like your web app running in a mobile browser, with optional access to native device APIs via Capacitor plugins.

This approach works well for web apps that are already mobile-friendly. It won't make a desktop-layout app feel native, and Apple actively rejects thin WebView wrappers that don't add any native functionality — see the macOS guide for details.

Guides by operating system

PlatformStores coveredStatus
Android on LinuxGoogle PlayAvailable
Android on WindowsGoogle PlayAvailable
Android & iOS on macOSGoogle Play + App StoreAvailable

iOS requires macOS. Building for the App Store is only possible on a Mac — Apple's toolchain (Xcode, codesigning, the iOS SDK) is macOS-only.

What you'll need

  • Node.js 22 or newer
  • Java JDK 17 and Android Studio (Android builds)
  • Xcode 26 or newer (iOS builds, macOS only)
  • A Google Play Developer account ($25 one-time) to publish Android apps
  • An Apple Developer Program membership ($99/year) to publish iOS apps
  • At least 12 GB of free disk space (more on macOS if building for both platforms)