On this page8 chapters
If you're planning a mobile app, someone will ask early on whether it should be native, React Native or Flutter. It's a real decision: it affects what you pay to build, what you pay to maintain, who you can hire later, and how the app feels in your users' hands. Here's what each option means, in plain terms.
Native: Swift and Kotlin
A native app is built twice: once in Swift for iOS and once in Kotlin for Android, each with the platform's own tools. You get the most direct access to the device and to new operating system features, and the best possible performance.
The cost is two codebases. Every feature is designed once but built, tested and maintained twice, usually by two different specialists.
Best for: apps that push the hardware, like heavy graphics, augmented reality or deep integration with the operating system.
React Native
React Native builds iOS and Android apps from one codebase, written in TypeScript or JavaScript, and renders the platforms' own interface components. It comes from the same React ecosystem that many modern websites and web apps are built in, so there's a large pool of developers, and a lot the web and mobile sides of a product can share.
Best for: most business and consumer apps, especially products that have, or will have, a web app too.
Flutter
Flutter also builds iOS and Android apps from one codebase, written in Dart. Instead of using the platforms' own components, it draws its own interface, so it looks identical on every device, and its performance is strong. The trade-off is Dart: a smaller world than JavaScript, and one that shares little with a React website.
Best for: apps where an identical interface across platforms matters most, or teams already working in Dart.
Side by side
| React Native | Flutter | Native | |
|---|---|---|---|
| Codebases | One | One | Two |
| Language | TypeScript | Dart | Swift and Kotlin |
| Interface | The platforms' own | Draws its own | The platforms' own |
| Performance | Close to native for most apps | Strong | The best |
| Shares with a React web app | Language, skills, some code | Little | Little |
| Build and upkeep | One team, one codebase | One team, one codebase | Two of each |
Why we build in React Native
We build web apps in React, Next.js and TypeScript, so React Native lets a product's mobile app share a language, a way of working and often its logic with the web side. We use Expo for builds and releases. One codebase ships to both app stores, which keeps the build, and every update after it, more affordable, and for the kind of products we build it performs like a native app.
When we'd tell you to go native
If your app depends on heavy graphics, augmented reality, or operating system features the cross-platform tools don't reach yet, a fully native build can be the right call, and we'll say so up front. It's rarer than you'd think for a first version: most apps are forms, lists, feeds, payments and notifications, which cross-platform tools handle well.
Does the choice change the cost?
Yes. Two native codebases cost more to build and more to maintain than one cross-platform codebase. With us, a build starts from R 60,000 for a small proof of concept, R 100,000 for an MVP and R 150,000 for a full system, and most of what we build are web apps. Our guide to what an app costs in South Africa covers the rest of what drives the price.
Not sure you need a mobile app at all? Many products start as a web app and add mobile once the core is proven. See our MVP development and app design pages, or tell us what you're building.
Questions we get asked
Is React Native as fast as a native app?
For most business and consumer apps, users won't notice a difference. For graphics-heavy apps or deep operating system features, native still wins.
Is Flutter better than React Native?
Neither is better for every product. Flutter gives you an identical interface everywhere; React Native uses the platforms' own components and shares its language with React web apps. We build in React Native because most of the products we build have a web side too.
Can one codebase really ship to the App Store and Google Play?
Yes. Both React Native and Flutter build real apps for both stores from one codebase.
Can we switch later?
You can, but it's effectively a rebuild. It's worth choosing for the product you'll have in two years, not just the first version.
Do you build fully native apps?
We build mobile apps in React Native. If your product truly needs a fully native build, we'll tell you up front.