Service

Cross-platform app development: one code base for Android and iOS

Cross-platform app development means shipping the same app to Android and iOS without writing it twice. We do it with Flutter: one Dart code base, compiled to native code on both platforms, with the UI, business logic and tests shared. All of CarrySo's published apps are built this way.

Framework
Flutter
Shared
UI, state, business logic, data layer, tests
Per platform
Permissions, store setup, native plugins where needed
Output
Native Android (APK/AAB) and iOS (IPA) builds

Why build cross-platform

  • One team and one code base instead of two, which cuts build cost and keeps features in sync
  • Fixes and new features ship to both stores at the same time
  • One set of automated tests covers both platforms
  • Consistent design across Android and iOS, with platform conventions where they matter
  • A single app to maintain when SDKs, store policies and OS versions change

Flutter, React Native or Kotlin Multiplatform?

We specialise in Flutter, and for most new business and consumer apps it is what we recommend. The table shows where each option fits.

Cross-platform options compared
FlutterReact NativeKotlin Multiplatform
LanguageDartJavaScript / TypeScriptKotlin
UIFlutter draws its own widgets; identical on both platformsNative components driven from JavaScriptShared logic; UI usually native per platform (or Compose Multiplatform)
PerformanceCompiled ahead of time; strong for animation and mediaJavaScript engine plus native modulesNative
Best fitCustom UI, media tools, MVPs, most business appsTeams already invested in ReactTeams with native Android/iOS developers sharing logic

What still needs platform-specific work

Cross-platform does not mean zero platform work. Each store has its own listing, review process, signing and privacy declarations. Permissions are declared differently on Android and iOS. A few features, such as home-screen widgets or specific hardware, may need a native plugin written in Kotlin or Swift and exposed to Flutter through a platform channel. We plan this in scope rather than discovering it late.

How our own apps are built

Every app we publish shares one Flutter code base with feature-first folders, a chosen state management approach (GetX, Riverpod or Bloc), and heavy image or video processing in background isolates. Platform differences are isolated in a small number of files, which is what makes an iOS release of an Android-first app a store and testing job rather than a rewrite.

Cross-platform project process

  1. 1. Discovery and scope

    We go through who the app is for, the one job it must do well, and what can wait. You get a written scope with the screens, features, integrations and release target.

  2. 2. UX flows and interface design

    We map the main user journeys before writing code, then design screens that follow Material guidelines on Android and feel right on each platform.

  3. 3. Build in short iterations

    The app is built in Flutter in small increments, so you can install test builds on a real phone early and change direction cheaply.

  4. 4. Testing

    Business logic, parsers and data layers get automated unit tests, and release builds are checked on physical devices before they reach users.

  5. 5. Store release

    We prepare the store listing, screenshots, privacy policy, Data safety form and release build, then handle review and the staged rollout.

  6. 6. Maintain and improve

    After launch we watch crashes, reviews and release age, keep SDKs and target API levels current, and ship improvements.

Evidence: cross-platform app development in our own apps

These are CarrySo's own products, published on Google Play under our developer account. Figures are taken from Google Play when this site was built; each card links to the case study.

Frequently asked questions

Is a cross-platform app slower than a native app?

Not in a way users notice for most apps. Flutter compiles to native code and renders at the device's frame rate. Our own apps do photo compression, background removal and video conversion on the device with Flutter. Apps that push hardware limits, such as 3D games, are the exception.

Can we launch on one platform first?

Yes. Many teams launch on Android or iOS first to keep store work small, then add the other once the core is validated. The code is shared either way.

Does cross-platform mean the app looks the same everywhere?

It can, or it can adapt. Flutter lets us use Material on Android and Cupertino patterns on iOS where users expect them, while keeping the underlying screens shared.

Guides on this topic

Mobile app development

Mobile app development from idea to app store: Flutter apps for Android and iOS, SaaS mobile apps, MVPs, UI/UX, backend APIs, store deployment and maintenance.

Flutter app development

Flutter app development for Android and cross-platform apps: architecture, state management, Firebase, on-device processing, testing and store release.

Android app development

Android app development with Flutter: apps built for real devices, published and maintained on Google Play, with Data safety, privacy policies and updates.

iOS app development

iOS app development with Flutter: iPhone and iPad apps from one code base, Apple Developer setup, TestFlight, App Store review, privacy labels and updates.

Tell us what you want to build. We'll reply by email with questions, and then with a proposed scope and estimate.

Start a project Email carrysoofficial@gmail.com