Claude Code · Build and ship
You asked Claude Code for an app, and now you have a folder full of code. How do you see it running? How do you build the version that goes to a phone? How does it reach TestFlight or Google Play?
This guide walks through that path, from the first look to the store upload. The examples use a React Native or Expo app. The same steps work for Flutter, Capacitor, Kotlin Multiplatform and native Xcode or Gradle projects; only the live reload part is specific to React Native.
What Claude Code does, and what it leaves to you
Claude Code is “an agentic coding tool that reads your codebase, edits files, runs commands, and integrates with your development tools” (Anthropic overview, checked October 29, 2026). The app it writes is ordinary source code in your repository. You own it, and any build tool can compile it.
Getting the app to a store is a separate job. Claude Code’s documentation doesn’t mention TestFlight, App Store Connect, Google Play or an Android emulator (we searched the full docs text on October 29, 2026). VibeView covers those steps:
| Step | Claude Code alone | With VibeView |
|---|---|---|
| Write the app | Yes | Yes, unchanged |
| See it on an iPhone or iPad | On a Mac: Desktop’s simulator pane (beta), or computer use from the CLI | In your browser, from Windows, Linux or a Mac |
| See it on Android, Apple TV, Android TV or Roku | Not in its docs | Live devices, driven by Claude |
| Send a running copy to someone | Not in its docs | A share link that plays the app in the browser |
| Build the signed store file | Not in its docs | vibeview build --cloud --production |
| Upload to TestFlight or Google Play | Not in its docs | vibeview submit |
Working on a Mac
Claude Code Desktop has an iOS Simulator pane, in public beta on macOS for paid Claude plans (checked October 29, 2026). It shows simulated iPhones and iPads next to the conversation, and Claude taps through your app while you watch. It needs Xcode, it works in local sessions only, and it can’t control a physical device. The same page says that from the CLI, Claude reaches the simulator through computer use instead. If you work on a Mac and only target iPhone and iPad, the pane is a good way to check your work.
The rest of this page covers what the pane doesn’t: working without a Mac, Android and TV, sharing a running copy, and the store upload. For a side-by-side look at the pane and VibeView’s devices, read Claude Code iOS simulator on Windows or Linux.
What you need
- A VibeView account. See pricing for streaming minutes and the build minutes each plan includes.
- Node.js 20 or later, on the machine where Claude Code runs.
- Your project in a git repository. A cloud build uploads every file git tracks, plus new files your
.gitignoredoesn’t exclude. That’s why the CLI needs a repository. If Claude Code started the project in a plain folder, ask it to rungit initand add a.gitignorethat keeps secrets such as.envfiles and keystores out. A first commit is optional. - For the store step only: an Apple Developer account, a Google Play developer account, or both.
From code to a store upload
-
Install the CLI and sign in. Run these yourself, not through Claude, because signing in happens in your browser:
npm install -g vibeview vibeview loginvibeview loginprints a sign-in link and tries to open your browser. If no browser opens, for example on a remote Linux machine, open the printed link on any device. You have two minutes to approve it, then the CLI saves your login. -
Connect Claude Code. Run one command to install the vibeview-agent skill, a set of instructions that teaches Claude Code the VibeView commands. It also offers to register the MCP server, the standard way agents plug in outside tools:
vibeview agent-setupIf Claude Code may run shell commands, you don’t need the MCP server. To share the skill with your team, add
--project: it goes into your repository’s.claude/skills/. Or install the Claude Code plugin, which adds both the skill and the MCP server:/plugin marketplace add vibeview/skills /plugin install vibeview@vibeview -
Ask Claude to set up cloud builds. A prompt such as “set up VibeView cloud builds for every platform this app targets” is enough. Claude adds a
developmentbuild profile tovibeview.jsonfor each platform. For a React Native or Expo project it adds apreviewprofile too: a release build with the JavaScript bundled in, so it runs on its own. Then it starts the builds:vibeview build --cloud --platform ios vibeview build --cloud --platform androidEach build runs on a fresh machine in the cloud, so the iOS one needs no Mac on your side. Builds are billed by the minute, and the skill tells Claude to ask you before starting one. A ready-made version of this prompt is on the Builds page under Get the prompt.
-
Look at the app on a live device. For your React Native app, ask Claude to run it live. Claude starts a session in the background:
vibeview dev --detach --jsonAsk Claude for the device link in the output, and open it in your browser. The device loads your JavaScript from Metro, your React Native app’s dev server, on the machine where Claude Code runs. A saved change shows up in about a second, with no rebuild. Claude can then read what’s on screen, tap and type, and check the app’s logs (
vibeview ui-tree,vibeview logs). You can tap the same device yourself at any time.For a Flutter, Capacitor or native app, each change means a new build. Claude starts a build, then opens it on a device when it’s ready, using the
app_build_idthe build reports:vibeview dev --standalone --platform ios --build <app_build_id> --detach --jsonAsk Claude to stop the session with
vibeview dev-stopwhen it’s done, because a running session uses streaming minutes. -
Send a running copy to someone. A React Native development build loads its JavaScript from your computer, so it won’t open for anyone else. Build the preview profile instead, which runs on its own:
vibeview build --cloud --platform ios --profile previewFlutter, Capacitor and native development builds already run on their own, so share those as they are. Then open Sharing in the dashboard, click Share an app and pick the app. Whoever opens the link uses the app on a live device in their browser, with nothing to install and no sign-in unless you turn that on. Their sessions use your plan’s streaming minutes. See Sharing your app.
-
Build for the store and upload. Do these once first: add your App Store Connect API key or Google Play service account key in Builds → Stores, and create the app in App Store Connect or Play Console (why). Then build and upload in one command:
vibeview build --cloud --production --platform ios --auto-submitThe first time, the CLI asks for your release build command and its output file, and saves them as the
productionprofile. VibeView can create your iOS certificate and provisioning profile from an App Store Connect API key, and it can generate an Android keystore for Google Play. See App signing. With--auto-submit, the build goes to its store as soon as it succeeds.To upload a build you already have, run
vibeview submit. Claude runs store commands only when you ask it to.
Steps only Apple and Google can do
VibeView uploads the build to the store. A few steps are done only in Apple’s and Google’s own consoles:
- Create the app record first. Apple accepts uploads only for an app that already exists in App Store Connect. Google’s API can update an app but can’t create one, so create it in Play Console before the first upload.
- App Store review starts in App Store Connect.
vibeview submitputs the build in TestFlight. Choosing it for a version and sending it for review happens in App Store Connect. - Store listings, screenshots, pricing and privacy labels stay in each store’s console.
The store submission docs list each of these with where to find it.
Building for Android and TV
The steps are the same on every platform. Pass --platform android, --platform tvos or --platform androidtv to vibeview build --cloud and vibeview dev. Your project must target the platform first: Flutter, for example, doesn’t support Apple TV. Production builds and vibeview submit work for all four; Apple TV builds go to TestFlight, and Android TV builds go to a Google Play track.
On a TV, Claude moves focus with the remote instead of tapping. How an agent shipped an Apple TV and Android TV app shows a full run. Roku channels skip the cloud build, because a channel is just a zip of source files, and VibeView doesn’t upload them to the Roku Channel Store. Claude drives the channel on a physical Roku; the Claude Code Roku guide covers packaging and reloading it.
Keep what Claude checked as a test
When Claude has walked through a flow that matters, such as sign-up or checkout, it can save that flow as a test that uses AI testing (beta): over MCP with create_test and run_test, or from a shell with vibeview create-test. For a ready prompt that covers your main flows, open Create test on the Tests page and use Write tests with your coding agent at the bottom. A test’s runs spend usage credit, so the prompt asks Claude not to retry a failed test more than once without asking you. See Coding agent prompts.
For a complete example of this path, read how an agent checked an Expo app on cloud phones and shipped it to TestFlight.
Frequently asked questions
Can Claude Code publish my app to the App Store? Not by itself. Its documentation doesn’t cover signed store builds or uploads. With VibeView, the submit command uploads your build to TestFlight, and you then send it for App Store review in App Store Connect.
Do I need a Mac to build the iOS version? No. VibeView builds the iOS version on a cloud machine, and you can start the build from Windows or Linux. For the signed build that goes to TestFlight, you still need an Apple Developer account.
Can I see the Android version while Claude works on it? Yes. Ask Claude to open an Android device instead of an iPhone. You watch it in your browser in the same way, while Claude taps and types.
Can I send the app to a client before it’s in TestFlight? Yes. Make a build that runs on its own, then create a share link in the dashboard. Your client opens the link and uses the app on a live device in the browser, with nothing to install.
Does this work with an app Claude Code didn’t write? Yes. Nothing on this page depends on who wrote the code. Any project in a git repository with a build command works the same way.
Related guides
In the documentation
Try it yourself
Open a live iOS simulator, Android emulator, Apple TV, Android TV or Roku in your browser.
Start free