How to use the checker
- In Bolt, open the code editor and copy
package.jsonfrom the project root — or download the project and open the file from the zip, or copy it from the GitHub export. - Paste it into the checker, or drop the file on it. Add
capacitor.config.tsif the project already has one. - Fix anything amber or red. Each row says why it matters; the prompt at the end bundles the fixes for Bolt or Cursor.
Bolt projects that wrap cleanly — and the ones that do not
- Vite + React (the default) builds to
dist. Capacitor wraps it as it is. - Next.js templates run a Node server by default. Inside an app there is no server, so you get a blank screen. Switch to a static export (
output: 'export'writes anoutfolder) before wrapping. - Expo templates are React Native, not a website. They ship with Expo’s own build service rather than Capacitor, so this checker is not for them.
vite-plugin-node-polyfillsshows up in many Bolt projects. It is a browser shim, not a native plugin: it does not give you the camera, files or push.
What the checker looks at
| Check | What it means | Why it matters |
|---|---|---|
| Capacitor present | @capacitor/core and @capacitor/cli are installed | Without the native shell there is nothing to upload to TestFlight or Google Play |
| Versions match | All @capacitor/* shell packages share one major version | Mixed or very old versions fail at cap sync or in the store build |
| iPhone and Android packages | @capacitor/ios and/or @capacitor/android | Each store needs its own native project; you can start with one |
| Website kind (SPA vs SSR) | A static build (a folder with index.html) or a Node server | A phone has no Node server: server-rendered apps open on a blank screen |
| Build folder (webDir) | The folder the app loads after npm run build | Wrong folder, blank app |
| App id | A com.studio.myapp-style id | It becomes the bundle ID and package name, and is permanent once the stores know it |
| Live URL | server.url in capacitor.config | Loading your live site instead of the build is the classic Guideline 4.2 rejection |
| Native plugins | Camera, share, push, haptics… | Phone features people actually use are what make a wrapper feel like an app |
From Bolt to TestFlight
Push the Bolt project to GitHub, then connect it in CapWrapp. CapWrapp adds Capacitor with a pull request if it is missing, builds the iPhone app on GitHub’s Mac machines, and uploads to TestFlight and Google Play testing — no Xcode on your computer. Before you submit, run the Guideline 4.2 self-audit.
