llms.txt
# CapWrapp
> CapWrapp turns a web app on GitHub into iPhone and Android apps, ships builds to TestFlight and Google Play, and sends them to App Review from one dashboard. No Xcode or Mac required.
CapWrapp is a control desk for shipping a phone app from a web app. Connect a GitHub repo (Lovable, Bolt, Cursor, Vite, or any site you already have). If it is still a website, CapWrapp adds Capacitor. You pick a commit in the dashboard; CapWrapp starts GitHub Actions that upload test builds to Apple and Google. From the Releases page, you send a tested build to App Review or promote it to production on Google Play.
Anyone can start a 14-day free trial at https://capwr.app/login (Google or GitHub sign-in, no credit card). Plans are priced by active apps, not seats: Founder $29/month (up to 3 apps), Pro $99/month (10), Agency $249/month (50), cheaper billed yearly; see https://capwr.app/#pricing. This site is English-only for now.
- Site: https://capwr.app
- Markdown homepage: https://capwr.app/index.md
- HTML docs: https://capwr.app/docs
- Guides: https://capwr.app/guides
## Landing pages
- [Lovable to App Store](https://capwr.app/lovable): Connect a Lovable GitHub repo. CapWrapp adds Capacitor if needed, then ships TestFlight and Play testing builds.
- [Lovable markdown](https://capwr.app/lovable.md)
- [Capacitor without Xcode](https://capwr.app/capacitor): Classify the commit, open a Cap PR if needed, ship TestFlight / Play from GitHub Actions.
- [Capacitor markdown](https://capwr.app/capacitor.md)
- [CapWrapp for teams](https://capwr.app/teams): For agencies, startups and public sector teams shipping several Capacitor apps. A Fastlane + GitHub Actions pipeline per repo, vaulted signing keys, previews, TestFlight / Play builds and store releases from one desk.
- [Teams markdown](https://capwr.app/teams.md)
## Guides
- [Leaving Ionic Appflow?](https://capwr.app/guides/leave-appflow): Appflow sunsets Dec 31, 2027. Live Updates parity → Capawesome. GitHub → Capacitor → TestFlight without Xcode → CapWrapp.
- [Leave Appflow markdown](https://capwr.app/guides/leave-appflow.md)
- [Guides hub](https://capwr.app/guides): Practical guides for Lovable and Capacitor to the App Store.
- [Guides markdown](https://capwr.app/guides.md)
- [Lovable to App Store: GitHub → Capacitor → TestFlight](https://capwr.app/guides/lovable-to-app-store): The real path to TestFlight and Play, Guideline 4.2, and where CapWrapp fits.
- [Guide markdown](https://capwr.app/guides/lovable-to-app-store.md)
- [App Store submission checklist](https://capwr.app/guides/app-store-submission-checklist): First iOS app, from the Apple Developer account through App Store Connect forms to submit for review. Last verified Oct 2026.
- [App Store checklist markdown](https://capwr.app/guides/app-store-submission-checklist.md)
- [Google Play submission checklist](https://capwr.app/guides/google-play-submission-checklist): First Android app, from Play Console signup through the 12-tester closed test, Data safety, and production. Last verified Oct 2026.
- [Google Play checklist markdown](https://capwr.app/guides/google-play-submission-checklist.md)
## Free tools
Free, no signup, run in the browser. Each page has a plain-markdown twin (same URL + .md) with the full checklist and FAQ.
- [Free tools hub](https://capwr.app/free-tools): Twelve free tools for taking a Lovable, Bolt, Base44 or Cursor web app to the App Store and Google Play. [Markdown](https://capwr.app/free-tools.md)
- [Is your Lovable app ready for the App Store?](https://capwr.app/free-tools/lovable-capacitor-checker): Paste package.json. Checks Capacitor, iOS/Android packages, SPA vs SSR, webDir, appId, version alignment and server.url; writes a fix prompt for Lovable. [Markdown](https://capwr.app/free-tools/lovable-capacitor-checker.md)
- [Is your Bolt app ready for the App Store?](https://capwr.app/free-tools/bolt-capacitor-checker): Same checks, tuned for Bolt.new Vite projects and Next.js templates. [Markdown](https://capwr.app/free-tools/bolt-capacitor-checker.md)
- [Is your Base44 app ready for the App Store?](https://capwr.app/free-tools/base44-capacitor-checker): Same checks; explains that Capacitor wraps the frontend while the Base44 backend stays hosted. [Markdown](https://capwr.app/free-tools/base44-capacitor-checker.md)
- [Can this GitHub repo become an iPhone and Android app?](https://capwr.app/free-tools/github-repo-checker): Paste a public repo URL; runs the same checks through GitHub’s public API, no login. Results are shareable with ?repo=owner/name. [Markdown](https://capwr.app/free-tools/github-repo-checker.md)
- [Capacitor appId and bundle ID validator](https://capwr.app/free-tools/capacitor-config-validator): Validates an appId as an iOS bundle ID and Android package name at once (no hyphens, no underscores, no Java keywords), plus webDir and server.url. [Markdown](https://capwr.app/free-tools/capacitor-config-validator.md)
- [Will Apple reject your app as just a website?](https://capwr.app/free-tools/apple-guideline-4-2): Six-question Guideline 4.2 (Minimum Functionality) self-audit with fixes, plus the other rejections wrapped apps hit (4.8, 5.1.1, 3.1.1, 2.1). Not a promise of approval. [Markdown](https://capwr.app/free-tools/apple-guideline-4-2.md)
- [Why was my app rejected by Apple or Google Play?](https://capwr.app/free-tools/app-store-rejection-explainer): Paste an App Review or Google Play rejection; get the guideline or policy in plain English, step-by-step fixes, a reply to paste into App Store Connect, and a fix prompt for Lovable, Bolt or Cursor. Covers 17 App Review guidelines (4.2, 4.3, 2.1, 4.0, 2.3.3, 2.3.8, 2.3.10, 4.8, 5.1.1, 5.1.2, 3.1.1, 3.1.2, 1.5) and 10 Google Play policies. Also in the signed-in CapWrapp Toolbox. [Markdown](https://capwr.app/free-tools/app-store-rejection-explainer.md)
- [Do you need a Mac to publish an iPhone app?](https://capwr.app/free-tools/do-i-need-a-mac): No Mac on your desk — iPhone builds need macOS, but a cloud Mac (GitHub Actions, Codemagic, Bitrise) works. Lists accounts and costs. [Markdown](https://capwr.app/free-tools/do-i-need-a-mac.md)
- [App Store and Google Play screenshot sizes](https://capwr.app/free-tools/app-store-screenshot-sizes): Drop screenshots; see which App Store display (iPhone 6.9″/6.5″, iPad 13″) and Google Play rules (320–3840 px, max 2:1, no alpha) each fits, and export store-ready PNGs. Also in the signed-in CapWrapp Toolbox. [Markdown](https://capwr.app/free-tools/app-store-screenshot-sizes.md)
- [App icon generator for iPhone and Android](https://capwr.app/free-tools/app-icon-generator): One image (or text/emoji) to the iOS 1024 icon as a PNG without alpha (no ITMS-90717), Android legacy, round and adaptive icons for mdpi–xxxhdpi, and the App Store 1024 / Google Play 512 listing icons, zipped in Capacitor project paths. Also in the signed-in CapWrapp Toolbox. [Markdown](https://capwr.app/free-tools/app-icon-generator.md)
- [Google Play 12 testers, 14 days: when can you publish?](https://capwr.app/free-tools/google-play-12-testers): Personal developer accounts created after 13 Nov 2023 need a closed test with 12+ testers opted in for 14 consecutive days before applying for production access (review usually 7 days or less). Countdown with the apply date, a calendar reminder, a tester invite and draft answers for the production access questions. Also in the signed-in CapWrapp Toolbox. [Markdown](https://capwr.app/free-tools/google-play-12-testers.md)
- [Why did my iOS or Android build fail?](https://capwr.app/free-tools/build-error-explainer): Paste a failed Xcode, Gradle, fastlane, npm or GitHub Actions log, or an App Store Connect / Google Play upload error; get the cause and the fix for 40 known failures. Also in the signed-in CapWrapp Toolbox. [Markdown](https://capwr.app/free-tools/build-error-explainer.md)
### Build error guides
Each known failure has its own page, with a markdown twin at the same path plus .md.
- [No signing certificate "iOS Distribution" found](https://capwr.app/free-tools/build-error-explainer/no-signing-certificate): No distribution certificate to sign with. [Markdown](https://capwr.app/free-tools/build-error-explainer/no-signing-certificate.md)
- [No profiles for your bundle ID were found](https://capwr.app/free-tools/build-error-explainer/no-provisioning-profile): No matching provisioning profile. [Markdown](https://capwr.app/free-tools/build-error-explainer/no-provisioning-profile.md)
- [Xcode: signing requires a development team](https://capwr.app/free-tools/build-error-explainer/requires-a-development-team): No development team selected. [Markdown](https://capwr.app/free-tools/build-error-explainer/requires-a-development-team.md)
- [Provisioning profile doesn't support the capability](https://capwr.app/free-tools/build-error-explainer/provisioning-profile-missing-capability): The profile is missing a capability. [Markdown](https://capwr.app/free-tools/build-error-explainer/provisioning-profile-missing-capability.md)
- [Podfile.lock is not in sync with the sandbox](https://capwr.app/free-tools/build-error-explainer/podfile-lock-out-of-sync): CocoaPods is out of sync. [Markdown](https://capwr.app/free-tools/build-error-explainer/podfile-lock-out-of-sync.md)
- [CocoaPods could not find compatible versions](https://capwr.app/free-tools/build-error-explainer/cocoapods-could-not-find-compatible-versions): CocoaPods can’t resolve versions. [Markdown](https://capwr.app/free-tools/build-error-explainer/cocoapods-could-not-find-compatible-versions.md)
- [PhaseScriptExecution failed with a nonzero exit code](https://capwr.app/free-tools/build-error-explainer/phasescriptexecution-failed): A script inside the Xcode build failed. [Markdown](https://capwr.app/free-tools/build-error-explainer/phasescriptexecution-failed.md)
- [Undefined symbols for architecture arm64](https://capwr.app/free-tools/build-error-explainer/undefined-symbols-for-architecture): Native code is missing when linking. [Markdown](https://capwr.app/free-tools/build-error-explainer/undefined-symbols-for-architecture.md)
- [ITMS-90725: iOS SDK version is too old](https://capwr.app/free-tools/build-error-explainer/itms-90725): Built with an iOS SDK that’s too old. [Markdown](https://capwr.app/free-tools/build-error-explainer/itms-90725.md)
- [ITMS-90189: Redundant Binary Upload](https://capwr.app/free-tools/build-error-explainer/itms-90189): This build number was already uploaded. [Markdown](https://capwr.app/free-tools/build-error-explainer/itms-90189.md)
- [ITMS-90186: Invalid Pre-Release Train](https://capwr.app/free-tools/build-error-explainer/itms-90186): This version number is closed. [Markdown](https://capwr.app/free-tools/build-error-explainer/itms-90186.md)
- [ITMS-90683: missing purpose string in Info.plist](https://capwr.app/free-tools/build-error-explainer/itms-90683): A permission message is missing. [Markdown](https://capwr.app/free-tools/build-error-explainer/itms-90683.md)
- [ITMS-91053: Missing API declaration](https://capwr.app/free-tools/build-error-explainer/itms-91053): The privacy manifest is missing a declaration. [Markdown](https://capwr.app/free-tools/build-error-explainer/itms-91053.md)
- [ITMS-90717: app icon has an alpha channel](https://capwr.app/free-tools/build-error-explainer/itms-90717): The App Store icon has transparency. [Markdown](https://capwr.app/free-tools/build-error-explainer/itms-90717.md)
- [Authentication credentials are missing or invalid](https://capwr.app/free-tools/build-error-explainer/app-store-connect-authentication-invalid): App Store Connect rejected the API key. [Markdown](https://capwr.app/free-tools/build-error-explainer/app-store-connect-authentication-invalid.md)
- [Android SDK location not found](https://capwr.app/free-tools/build-error-explainer/android-sdk-location-not-found): Android SDK not found. [Markdown](https://capwr.app/free-tools/build-error-explainer/android-sdk-location-not-found.md)
- [Android Gradle plugin requires Java 17 to run](https://capwr.app/free-tools/build-error-explainer/android-gradle-plugin-requires-java): Wrong Java version for Gradle. [Markdown](https://capwr.app/free-tools/build-error-explainer/android-gradle-plugin-requires-java.md)
- [:capacitor-android project could not be found](https://capwr.app/free-tools/build-error-explainer/capacitor-android-project-could-not-be-found): The Android project was never synced. [Markdown](https://capwr.app/free-tools/build-error-explainer/capacitor-android-project-could-not-be-found.md)
- [Android resource linking failed](https://capwr.app/free-tools/build-error-explainer/android-resource-linking-failed): Android resources failed to compile. [Markdown](https://capwr.app/free-tools/build-error-explainer/android-resource-linking-failed.md)
- [Keystore was tampered with, or password was incorrect](https://capwr.app/free-tools/build-error-explainer/keystore-was-tampered-with-or-password-incorrect): The upload keystore can’t be read. [Markdown](https://capwr.app/free-tools/build-error-explainer/keystore-was-tampered-with-or-password-incorrect.md)
- [Duplicate class found in modules](https://capwr.app/free-tools/build-error-explainer/duplicate-class-found-in-modules): Two libraries ship the same classes. [Markdown](https://capwr.app/free-tools/build-error-explainer/duplicate-class-found-in-modules.md)
- [Could not resolve all files for configuration](https://capwr.app/free-tools/build-error-explainer/could-not-resolve-gradle-configuration): Gradle couldn’t download a dependency. [Markdown](https://capwr.app/free-tools/build-error-explainer/could-not-resolve-gradle-configuration.md)
- [Play: version code has already been used](https://capwr.app/free-tools/build-error-explainer/version-code-has-already-been-used): This version code was already uploaded. [Markdown](https://capwr.app/free-tools/build-error-explainer/version-code-has-already-been-used.md)
- [Android App Bundle is signed with the wrong key](https://capwr.app/free-tools/build-error-explainer/app-bundle-signed-with-the-wrong-key): Signed with the wrong key. [Markdown](https://capwr.app/free-tools/build-error-explainer/app-bundle-signed-with-the-wrong-key.md)
- [Play: bundle was signed in debug mode](https://capwr.app/free-tools/build-error-explainer/signed-in-debug-mode): The bundle is signed for debugging. [Markdown](https://capwr.app/free-tools/build-error-explainer/signed-in-debug-mode.md)
- [Google Play: Package not found](https://capwr.app/free-tools/build-error-explainer/package-not-found): Google Play doesn’t know this app yet. [Markdown](https://capwr.app/free-tools/build-error-explainer/package-not-found.md)
- [Play: the caller does not have permission](https://capwr.app/free-tools/build-error-explainer/caller-does-not-have-permission): The service account can’t upload. [Markdown](https://capwr.app/free-tools/build-error-explainer/caller-does-not-have-permission.md)
- [Play: app must target a higher API level](https://capwr.app/free-tools/build-error-explainer/must-target-api-level): Target SDK too low for Google Play. [Markdown](https://capwr.app/free-tools/build-error-explainer/must-target-api-level.md)
- [npm ci needs an existing package-lock.json](https://capwr.app/free-tools/build-error-explainer/npm-ci-package-lock-json): No package-lock.json for npm ci. [Markdown](https://capwr.app/free-tools/build-error-explainer/npm-ci-package-lock-json.md)
- [npm ci: lockfile is out of sync with package.json](https://capwr.app/free-tools/build-error-explainer/npm-ci-lockfile-out-of-sync): The lockfile doesn’t match package.json. [Markdown](https://capwr.app/free-tools/build-error-explainer/npm-ci-lockfile-out-of-sync.md)
- [npm ERESOLVE unable to resolve dependency tree](https://capwr.app/free-tools/build-error-explainer/npm-eresolve): Conflicting package versions. [Markdown](https://capwr.app/free-tools/build-error-explainer/npm-eresolve.md)
- [JavaScript heap out of memory](https://capwr.app/free-tools/build-error-explainer/javascript-heap-out-of-memory): The web build ran out of memory. [Markdown](https://capwr.app/free-tools/build-error-explainer/javascript-heap-out-of-memory.md)
- [Rollup failed to resolve import](https://capwr.app/free-tools/build-error-explainer/rollup-failed-to-resolve-import): A package is imported but not installed. [Markdown](https://capwr.app/free-tools/build-error-explainer/rollup-failed-to-resolve-import.md)
- [error TS: TypeScript errors stop the build](https://capwr.app/free-tools/build-error-explainer/typescript-error-ts): TypeScript errors stop the build. [Markdown](https://capwr.app/free-tools/build-error-explainer/typescript-error-ts.md)
- [Could not find the web assets directory](https://capwr.app/free-tools/build-error-explainer/could-not-find-the-web-assets-directory): Capacitor can’t find your web build. [Markdown](https://capwr.app/free-tools/build-error-explainer/could-not-find-the-web-assets-directory.md)
- [Capacitor: Invalid App ID](https://capwr.app/free-tools/build-error-explainer/invalid-app-id): Capacitor rejected the appId. [Markdown](https://capwr.app/free-tools/build-error-explainer/invalid-app-id.md)
- [GitHub Actions: job not started (billing)](https://capwr.app/free-tools/build-error-explainer/github-actions-billing): GitHub Actions has no minutes left. [Markdown](https://capwr.app/free-tools/build-error-explainer/github-actions-billing.md)
- [Resource not accessible by integration](https://capwr.app/free-tools/build-error-explainer/resource-not-accessible-by-integration): The workflow token lacks a permission. [Markdown](https://capwr.app/free-tools/build-error-explainer/resource-not-accessible-by-integration.md)
- [GitHub Actions job exceeded the time limit](https://capwr.app/free-tools/build-error-explainer/github-actions-exceeded-maximum-execution-time): The job ran too long. [Markdown](https://capwr.app/free-tools/build-error-explainer/github-actions-exceeded-maximum-execution-time.md)
- [Input required and not supplied](https://capwr.app/free-tools/build-error-explainer/input-required-and-not-supplied): A required secret or input is empty. [Markdown](https://capwr.app/free-tools/build-error-explainer/input-required-and-not-supplied.md)
### App Store and Google Play rejection guides
Each known rejection has its own page: what it means, the fix, and a reply template, with a markdown twin at the same path plus .md.
- [App Store Guideline 4.3 Spam rejection](https://capwr.app/free-tools/app-store-rejection-explainer/guideline-4-3-spam): Spam: the app looks like many others. [Markdown](https://capwr.app/free-tools/app-store-rejection-explainer/guideline-4-3-spam.md)
- [Guideline 4.2 Minimum Functionality rejection](https://capwr.app/free-tools/app-store-rejection-explainer/guideline-4-2-minimum-functionality): Minimum Functionality: it looks like a website in an app. [Markdown](https://capwr.app/free-tools/app-store-rejection-explainer/guideline-4-2-minimum-functionality.md)
- [Guideline 2.1 App Completeness rejection](https://capwr.app/free-tools/app-store-rejection-explainer/guideline-2-1-app-completeness): App Completeness: it crashed or something didn’t work. [Markdown](https://capwr.app/free-tools/app-store-rejection-explainer/guideline-2-1-app-completeness.md)
- [Guideline 2.1 Information Needed: demo account](https://capwr.app/free-tools/app-store-rejection-explainer/guideline-2-1-information-needed-demo-account): Information Needed: give App Review a way in. [Markdown](https://capwr.app/free-tools/app-store-rejection-explainer/guideline-2-1-information-needed-demo-account.md)
- [Guideline 4.0 Design rejection: sign-in in Safari](https://capwr.app/free-tools/app-store-rejection-explainer/guideline-4-0-design): Design: a poor experience, often sign-in in Safari. [Markdown](https://capwr.app/free-tools/app-store-rejection-explainer/guideline-4-0-design.md)
- [Guideline 2.3.3 Accurate Metadata: screenshots](https://capwr.app/free-tools/app-store-rejection-explainer/guidel