Cross-platform app development
One codebase, both stores, the same features on the same day.
Acasa Labs does cross-platform app development: one Expo and React Native codebase that ships to the App Store and Google Play together, usually on the same backend as your web app. GymFast's staff, member, and trainer apps, NoteTube, and Kraftr's companion app are all built this way.
The problem
Two native apps means two teams, two release schedules, and two sets of bugs.
Building iOS and Android separately doubles the work and almost guarantees drift: a feature lands on one platform first, a bug is fixed on one and not the other, and support has to ask which phone the customer has. For most business apps, the hard parts are the same on both platforms: accounts, data, payments, and offline use. Writing them once and shipping them twice is the sensible default.
What we build
- 01
One app for iOS and Android
Expo and React Native with shared screens, logic, and tests, and native modules where a device feature needs them.
- 02
Several apps from one monorepo
Separate apps for staff, customers, or partners that share components, an API client, and a design system, each released on its own schedule.
- 03
A shared backend with the web app
One API and one database behind the web app and both mobile apps, so a change in one place reaches every client.
- 04
Over-the-air updates
Fixes that do not touch native code reach users without waiting for store review.
From production
From cross-platform apps we ship.
Three apps, one monorepo
GymFastGymFast ships separate staff, member, and trainer apps from a Turborepo monorepo, on a token-authenticated mobile API shared with the web dashboard.
One setting themes every app
GymFastEach gym's brand colors theme the web dashboard and the mobile apps from one setting, so members see their gym's colors, not ours.
Mobile beside web and an extension
NoteTubeNoteTube's Expo app for iOS and Android sits beside a Next.js web app and a Chrome extension, all calling one FastAPI service that holds the AI keys.
A companion, not a copy
KraftrKraftr's Expo app gives fashion brands their wardrobe, model library, collections, and credit packs on the phone, while generation runs on server-side queues.
Honest trade-offs
When native is the better call
Go native when the app is built around one platform's features, such as widgets, background processing, or heavy on-device work, or when only one platform matters for now. Pullsy's iOS app is native SwiftUI for that reason. Flutter is also a fair cross-platform choice. We use React Native and Expo because they share a language, and often code, with a React or Next.js web app.
What we reach for
- Expo, React Native
- TypeScript
- Turborepo
- Expo over-the-air updates
- RevenueCat
- Supabase, FastAPI
- Sentry, PostHog
Proof
Shipped, not pitched.
01Our product
GymFast
Members, billing, classes, and workout plans for a gym, in one platform and three apps.
Gym management software for gym owners and personal trainers. A web dashboard and a staff app run members, plans, invoices, enquiries, and classes; members get their own branded app; GymFast Pro gives independent trainers the same tools for their clients.
Web dashboard · iOS · Android · Staff, member, and trainer apps
02Our product
NoteTube
A lecture becomes a study system: chat, flashcards, quizzes, all grounded in the source.
An AI learning platform that turns PDFs, YouTube lectures, recordings, and notes into a structured notebook with grounded chat, spaced-repetition flashcards, and graded quizzes.
Web · iOS · Android · Chrome extension · MCP server
03Our product
Kraftr
One flat-lay photo becomes catalog-ready 4K on-model imagery.
An AI catalog studio for fashion and jewelry brands. Upload one flat-lay or hanger shot per SKU and get on-model imagery at up to 4K, in ten aspect ratios, sized for Amazon, Myntra, Flipkart, and Shopify.
Web · iOS · Android
Questions
Cross-platform app development questions we get asked.
Will a cross-platform app feel native?
Yes, when it is built well. React Native renders real native components, and we follow each platform's conventions for navigation, gestures, and system UI. GymFast and NoteTube install from the stores like any other app.
Is cross-platform cheaper than two native apps?
Usually, because one team writes the logic, the screens, and the tests once. Some platform-specific work remains, such as store setup, notifications, and the odd native module, but it is a fraction of a second app.
Can the app share code with our website?
Often, yes. With a React or Next.js website, types, API clients, validation, and business rules can be shared through a monorepo.
React Native or Flutter?
Both are mature. We build with React Native and Expo because the same TypeScript skills and code cover the web app and the API client. If you already have a Flutter app, we will tell you honestly whether to keep it.
What if we need a native feature later?
Expo supports custom native modules in Swift and Kotlin, so a native feature is added to the same app, not a rewrite.
Cross-platform app development
Building for iPhone and Android?
Tell us who uses the app and what it has to do. We will tell you whether one codebase fits and what we would ship first.


