How to ship a Lovable app to the App Store (the no-bullshit walkthrough)
A step-by-step playbook for taking a Lovable web app from URL to a real iOS listing — wrappers, signing, screenshots, privacy labels, the whole loop. Written from 11+ shipped apps.
If you built something in Lovable and now everyone keeps asking "is it on the App Store?" — this is the post I wish I had the first time I tried to answer that question. I've shipped 11+ apps, several of them Lovable-shaped (web first, mobile second), so what follows is the actual sequence I run, not a marketing tour.
I'm going to skip the part where I tell you Lovable is great. You already know. The interesting part is what happens between "it works in the browser" and "Apple sent me a download link."
What "shipping a Lovable app" actually means
Lovable produces a web app. The App Store ships native binaries. So shipping a Lovable app to iOS is really three jobs stacked on top of each other:
- Wrap the web app in a native shell so iOS can install it.
- Set up Apple's developer paperwork — accounts, certificates, identifiers.
- Pass review — screenshots, privacy answers, store copy, and the appeal you'll probably have to write at least once.
Skip any of those and you stop. The order matters. Most people start at step 1 and run into a wall at step 2 because nobody told them step 2 takes longer than step 1.
Before you touch anything: the 4 questions that decide your path
I ask every client these four before I quote a project. You should ask yourself the same:
- Does the app need anything native? Camera, push notifications, in-app purchases, biometrics, HealthKit, NFC, file system access, offline mode? If yes, your wrapper choice gets narrower fast.
- Do you have an Apple Developer account? It's
$99/yr, takes ~24–48 hours to provision, and longer if you're going through the Apple-Distribution-as-a-business path with D-U-N-S verification. - Is the web app actually responsive on a phone? Lovable defaults are decent but I'd say
~1 in 3projects I see have at least one screen that breaks at375px. Reviewers test on a real iPhone SE and they will reject for layout breakage. - Are you OK with the native shell branding being yours, not Lovable's? This sounds obvious but it's the question that catches founders who assumed Lovable handles the App Store side.
If those four are sorted, you're ready.
Step 1 — Pick the wrapper (Capacitor wins for Lovable, here's why)
Your two real options are Capacitor and Expo (with WebView). There are others — Tauri, native WKWebView from scratch, a half-dozen low-code wrappers — but for a Lovable app I default to Capacitor every time.
| Wrapper | Best for | Why |
|---|---|---|
| Capacitor | Lovable, Bolt, v0, plain web apps | Wraps your existing build with one config file. Plugins for camera/push/etc. Owned by Ionic. |
| Expo (WebView) | Teams already in React Native | Heavier, but you get RN ecosystem if you ever need real native screens. |
| Native WKWebView | Custom needs only | Most control, most work. Almost never the right call for a Lovable project. |
The reason Capacitor wins: a Lovable project already builds to a static dist/ folder. Capacitor takes that folder and wraps it. There's no rewrite, no port to React Native, no "rebuild your UI in SwiftUI." You ship the same web app you have, with native APIs available when you need them.
npm i -D @capacitor/core @capacitor/cli @capacitor/ios
npx cap init "Your App" com.yourdomain.yourapp
npx cap add ios
That's the entire setup. You then run npm run build (or whatever Lovable's export gives you), copy the build into the iOS project with npx cap copy ios, and open Xcode.
{/* DANIEL: drop in the screenshot of npx cap add ios succeeding here — the green checkmarks. */}
Step 2 — Apple's paperwork (this is where most people stall)
Here's the part Lovable doesn't help with. You need:
- Apple Developer account —
$99/yr. Personal or business; pick business if you want your company name to appear on the listing. - App ID / Bundle ID — has to be globally unique. Use reverse-DNS like
com.yourcompany.yourapp. Don't change it later or you start over. - Certificates — a Distribution certificate signed by Apple. Generated in Xcode or Apple's developer portal.
- Provisioning profile — links your bundle ID, certificate, and devices. Xcode auto-manages this most of the time.
- App Store Connect record — the listing itself. Name, subtitle, category, age rating, support URL, marketing URL.
The whole thing takes a confident developer about 2 hours if everything works on the first try. It almost never works on the first try. Common ruts:
- The Apple Developer email and the Apple ID email are different — your enrollment is technically pending but Xcode acts like you're enrolled.
- D-U-N-S verification for a business account adds
5–10 business days. - Two-factor on a phone you no longer have. Apple's recovery flow is
7 days minimum.
If any of those hit you, your project doesn't ship "this week." Plan accordingly.
Step 3 — Build, archive, upload
Once Capacitor has produced the iOS Xcode project and your signing identity is set:
- Open
ios/App/App.xcworkspacein Xcode (the workspace, not the project — common gotcha). - Pick "Any iOS Device" as the target, not the simulator.
- Product → Archive.
- Window → Organizer → Distribute App → App Store Connect.
The first time, this will fail. Probably the bundle ID didn't match the App Store Connect record. Probably the version number is 1.0.0 and the build number is 1 and you tried to upload 1 twice. Probably there's an icon size missing. {/* DANIEL: screenshot of the Organizer with a successful upload — the green "Distribute App" state. */}
Real talk: I keep a checklist I run before every archive. It saves me from at least one re-upload per project:
- App version is bumped if this isn't the first build.
- Build number is monotonically increasing (
1,2,3— never reused). - All
20+icon sizes are inAssets.xcassets. Capacitor does this for you if you give it a1024×1024source. - App Transport Security exceptions are gone unless you actually need them.
- Privacy keys (
NSCameraUsageDescription,NSPhotoLibraryUsageDescription, etc.) are inInfo.plistfor every native API your wrapper touches. Missing these is a guaranteed rejection.
Step 4 — Screenshots and the listing
You need screenshots in iPhone 6.9" (the current "primary" size) and iPad 13" if you support iPad. Apple says optional, but if you submit only one size you sometimes get reviewer pushback. I always submit both.
Screenshots can be raw captures from the simulator, but they look amateurish. I run my client work through a frame template — phone bezel, headline copy, brand background. Reviewers don't care, but conversion on the listing goes up roughly 20–30% from "screenshot of the app" to "framed screenshot with a one-line value prop." {/* DANIEL: link to the framed-screenshot template you use, or describe the tool. */}
Listing copy:
- App name:
30 charsmax. This is searchable, so put your category in here if you can: "Stretch — 5 min routines." - Subtitle:
30 chars. Searchable too. Don't waste it on "the best app for X." - Promotional text:
170 chars. Editable without resubmission — use this for limited-time offers. - Description: First three lines matter most. Reviewers and humans both stop reading after that.
- Keywords:
100 chars, comma-separated, no spaces. Don't repeat words from the name/subtitle — Apple already indexes those.
Step 5 — Privacy labels (the rejection trap)
Apple's privacy questionnaire has roughly ~20 data categories. Every Lovable app I've shipped collects at least three of them — usually email (Account), product interaction (Analytics), and an ID like a Stripe customer ID (Linked to user).
The trap: you answer "no, we don't collect any data," then your app actually does, and the reviewer rejects you. Once. They don't come back lightly.
Run through the questionnaire honestly. If your Lovable app uses Supabase, Stripe, or PostHog, you collect data. Acknowledge it. The penalty for collecting is approximately zero. The penalty for lying about it is real.
Step 6 — Submit and survive review
Reviews take 12–48 hours most weeks. Spikes around iOS launches push it to 5+ days. Your build moves through statuses: Waiting for Review → In Review → (Pending Developer Release / Ready for Sale) — or → Rejected.
The most common Lovable-app rejections I see, in order:
4.2 Minimum Functionality— the reviewer thinks your app is "just a website in a wrapper." This is fixable. I wrote the appeal letter here.5.1.1 Data Collection and Storage— your privacy labels don't match what your app does. Fix the labels.2.1 App Completeness— a button doesn't work, a sign-in fails on the test account, a screen breaks. Fix the bug.4.0 Design— the iPad layout is broken or you have a hardcoded375pxwidth somewhere. Add a media query.
You'll get one of these on your first submission roughly ~50% of the time. Don't take it personally. Reviewers are doing a 5-minute pass on hundreds of apps a day.
What this whole thing actually takes
Real numbers from my last batch of Lovable-style projects:
- Wrapper setup:
30 min – 2 hours. - Apple paperwork (assuming the account exists):
1–3 hours. - Screenshots, copy, privacy labels:
2–4 hours. - First archive + upload:
1–2 hours(longer if Xcode is being Xcode). - Review wait:
1–5 days. - Rejection appeal, if needed:
1–2 daysround trip.
End to end, plan for 7–14 days from "I have a Lovable app" to "it's in the store." Less if you're experienced; more if you're learning.
When to do this yourself vs. hire it out
I'm obviously biased — this is my job. So here's an honest split:
Do it yourself if: you've shipped at least one iOS app before, you have a working Apple Developer account, your app has no native API needs, and your time is less valuable than the project would be to ship without you.
Hire it out if: you've never seen Xcode, your Lovable app is your business and you need to be focused on customers not certificates, or you've already eaten one rejection and you're now afraid of the second.
If that's you, start a kickoff and I'll send you a quote and timeline within 24 hours. Or just read the pricing page — there's nothing hidden.
TL;DR — the sequence
- Wrap the Lovable build with Capacitor.
- Set up Apple Developer account, bundle ID, certificates.
- Generate
20+icon sizes from a1024×1024source. - Add the privacy keys your wrapper needs to
Info.plist. - Archive in Xcode → upload to App Store Connect.
- Fill in listing, screenshots, honest privacy labels.
- Submit. Survive review. Ship.
Total realistic timeline: 7–14 days. Total realistic budget if you hire it out: see pricing.