Engineering3 min read
Flutter vs React Native vs native: what we use and why
Flutter, React Native or native iOS and Android? Why we built rallyp0int in Flutter, moved FlatMatch to React Native and Expo, and how we choose.
By Blank Software
In this article5 sections+
We have shipped apps more than one way, so this is not a pitch for one framework. rallyp0int, our events map, is built in Flutter. FlatMatch, our rental platform, moved its mobile app to React Native and Expo in September 2026. Here is how the three options compare and how we decide.
The three options in brief
| Approach | Language | How it draws the screen | Codebases |
|---|---|---|---|
| Flutter | Dart | Draws its own widgets on every platform | One for iOS and Android |
| React Native | TypeScript or JavaScript | Uses the native interface components of each platform | One for iOS and Android |
| Native | Swift for iOS, Kotlin for Android | Uses the native interface components of each platform | One per platform |
Why rallyp0int is built in Flutter
rallyp0int puts local events onto a single live map, with clustering that keeps thousands of pins readable. Most of the app is that map and the custom screens around it. Flutter gave us one codebase and full control over how every screen looks, and it works well with the Google Maps and Firebase services the app runs on.
Why FlatMatch moved to React Native and Expo
FlatMatch started on the web. Renters, landlords and property managers all use it in the browser, and its rules are detailed: six roles enforced on the server, an auditable match score, and rooms and whole properties on the same system. For the mobile app, the biggest risk was those rules drifting apart between web and mobile.
React Native lets the mobile app share one TypeScript package with the web app for types, validation and business rules. A rule changes once and both apps get it. Expo takes care of much of the build and release work for iOS and Android, which keeps a small team moving.
The honest trade-offs
- Flutter: one codebase and a consistent look everywhere, and well suited to custom, animated interfaces. The catch is Dart. Most web teams do not use it, so little code is shared with a web app written in TypeScript.
- React Native: one codebase in TypeScript, the same language as most modern web apps, so types and logic can be shared across web and mobile. The catch is that some features still need native code or a third-party library, and upgrades take care.
- Native: full access to every platform feature as soon as Apple or Google release it, and the most platform-true feel. The catch is two codebases to build, test and maintain for every feature, often by two different specialists.
How we choose for a client
- If you also need a web app that follows the same rules, React Native with a shared TypeScript package is usually the best fit.
- If the app stands on its own and is mostly a custom, highly visual interface, Flutter is a strong choice.
- If the app depends on deep platform features, such as advanced camera work, Bluetooth or heavy background processing, native can be worth the extra cost.
- For most business apps any of the three can do the job. The deciding factors are the code you already have, who will maintain it and what else it has to connect to.
Whichever we recommend, we explain why before anything is built. We run apps on both Flutter and React Native ourselves, so the advice comes from living with both.
Planning an app?
Tell us what you have in mind. We will scope it with you and send a written proposal.
Start a project