Vibe code to app stores

Which Guide Should I Use?

4 min read

You built something with a vibe coding tool and you want it on the Play Store or App Store. The guide you need depends on what kind of app you have — and if you're not sure, this page will help you figure it out.

Step 1: What tool did you use?

Bolt.new, Lovable, bolt.diy, v0, Replit, or similar — these tools generate web apps. Your project is HTML, CSS, and JavaScript running in a browser. Go to Web Apps — Capacitor. ✓

A tool that generated a Flutter project — your project has a pubspec.yaml file and Dart code (.dart files). Go to Flutter.

A tool that generated a React Native or Expo project — your project has an app.json or app.config.js and imports from react-native. Go to React Native & Expo.

Not sure? Keep reading.


Step 2: Look inside your project

Download or export your project and unzip it. Open the folder and look for these files:

If you see this...You have thisUse this guide
package.json with a "build" script that outputs HTMLA web appWeb Apps — Capacitor
index.html at the root with no build step neededA web appWeb Apps — Capacitor
pubspec.yaml and .dart filesA Flutter appFlutter
app.json or app.config.js and imports from react-nativeA React Native / Expo appReact Native & Expo

If you still see package.json but you're not sure if it's a web app or React Native app, open it and look at the "dependencies" list:

  • Contains react-native or expo → React Native & Expo guide
  • Contains react, vue, svelte, vite, or next (but not react-native) → Web Apps guide

What's the difference anyway?

Web apps run in a browser. Vibe coding tools like Bolt.new produce web apps — the output is HTML, CSS, and JavaScript. To publish a web app as a mobile app, you wrap it in a native shell using Capacitor, which embeds your web app in a full-screen WebView. The result works, but it looks and feels exactly like your website does on mobile. If your site is mobile-friendly, the app will be too.

React Native apps are written in JavaScript/TypeScript but render native UI components — not a browser. The result looks and feels more like a native app. Vibe coding tools that target React Native generate .tsx files that import from react-native, not from the web platform.

Flutter apps are written in Dart and compile to fully native code. Flutter has its own rendering engine. The result is the most "native-feeling" of the three, but it's a completely different programming environment. Vibe tools that target Flutter generate .dart files.


Which approach is best?

For most vibe-coded apps, Capacitor (web app) is the right starting point. It's the fastest path from "I have a Bolt.new project" to "it's on the Play Store," and it requires no code changes to your existing app.

The trade-offs:

Web Apps (Capacitor)React NativeFlutter
Works with Bolt.new / Lovable outputYesNoNo
Feels nativeDepends on your CSSYesYes
Build complexityLowMediumMedium
Apple App Store approvalHarder (needs native features)EasierEasier
Google Play approvalEasyEasyEasy

On Apple's App Store: Apple rejects plain WebView wrappers that don't add native functionality beyond what a website provides. If you're targeting iOS, you'll need to add at least some native integration (push notifications, biometric login, etc.) to pass review. See the Android & iOS on macOS guide for details.