Mobile app (iOS)
How to build the open-source Multiflow iOS app on your own iPhone — no App Store yet.
Multiflow's iOS client is open-source and lives in the main repo alongside web, desktop, and backend. It isn't on the App Store yet — until that changes, anyone who wants it on their iPhone builds from source. The build takes about 10–20 minutes the first time and ~2 minutes after that, and it talks to the same backend as multiflow.ddragon.org so your existing account just works.
This page is for personal use. App developers should read apps/mobile/README.md in the repo — it covers the dev / staging variants and the full script matrix.
What you need
-
A Mac with Xcode installed (free from the App Store).
-
A free Apple ID added under Xcode → Settings → Accounts. A paid Apple Developer Program account is optional and only extends the 7-day signing window to 1 year — see 7-day limit below.
-
An iPhone connected via USB cable, with Developer Mode enabled (Settings → Privacy & Security → Developer Mode).
-
The Multiflow source code checked out:
git clone https://github.com/multica-ai/multica.git cd multica pnpm install
If anything in that list is missing, walk through Expo's Set up your environment (pick Development build → iOS Device) — it's the canonical setup guide for everything except the repo checkout.
Build it
One command:
pnpm ios:mobile:device:prod:releaseXcode signs the build with the "Personal Team" your Apple ID automatically owns — this team is created silently the first time you sign into Xcode with any Apple ID, so it's there even if you don't remember setting anything up. This is a Release build: no Metro dependency, splash → app, exactly like an App Store install.
The first build downloads CocoaPods + compiles React Native from source — expect 10–20 minutes. Subsequent builds reuse Xcode's cache.
That's it for the typical path. If signing fails, jump to Troubleshooting.
7-day signing limit
A free Apple ID signs builds for 7 days. After that, the app refuses to launch on your iPhone and shows an "untrusted developer" error. Plug back into your Mac and re-run the same command to re-sign — your data stays put because it lives on the backend, not in the app.
The only way to extend this is an Apple Developer Program account ($99/yr from developer.apple.com). Signing is then valid for 1 year between renewals, and you can also distribute to other devices via TestFlight.
Updating
There is no auto-update yet. When the Multiflow codebase moves forward, pull and rebuild:
git pull
pnpm install
pnpm ios:mobile:device:prod:releaseSubsequent builds are fast because Xcode caches the native compile.
Why no App Store yet
The iOS app is still moving fast — the team prefers ship-and-iterate over App Store review cycles right now. A TestFlight beta is the most likely next step before a full App Store release. Until then, the self-build path above is the only way to use Multiflow on iOS.
Troubleshooting
"No matching provisioning profiles found" — Xcode refuses to sign the default bundle id ai.multica.mobile with your Apple ID. Rare, but happens if someone has registered that prefix on Apple's developer portal. Pick any reverse-domain you control (com.yourname.multica is fine), export it, and re-run:
export EXPO_BUNDLE_IDENTIFIER_PROD=com.yourname.multica
pnpm ios:mobile:device:prod:releaseThe id doesn't have to mean anything — Apple just needs it to be unclaimed by other teams.
"Could not launch <app>" / "Untrusted Developer" — either you've hit the 7-day limit (re-run the build) or you need to manually trust the developer profile on your iPhone: Settings → General → VPN & Device Management → tap your Apple ID → Trust.
Build hangs on Pod install or compiles forever — first build is genuinely 10–20 minutes because CocoaPods downloads dependencies and Xcode compiles React Native from source. Subsequent builds are much faster.
App can't reach the backend — confirm apps/mobile/.env.production hasn't been modified (it ships with EXPO_PUBLIC_API_URL=https://multiflow.ddragon.org). If you changed it, restore with git checkout apps/mobile/.env.production.