| Just use what you know. React Native is not bad. If you have a large budget and want to go for the long term, I'd say go for native Android and iOS. You'll eventually get all kinds of weird bugs. Like this morning, I was looking at a bug with thousands of crashes on a very specific model of Vivo phone (involving 5 users); turns out it was from a way that Android does encryption and handles backups. The more layers of abstraction you have, the longer it takes to find and fix those kinds of bugs. Take note that Android is extremely fragmented and customized, especially in developing countries if that's your target market. Most of the bugs we deal with today are are 1) camera 2) file storage 3) locale (language, RTL, how numbers and currency are displayed). I haven't worked with Bluetooth, but I expect that to be major too. PWAs are a solution if you're basically just making a mobile site and don't need the above. Flutter is mature enough that most of the layers are running well. A lot of the cutting edge tech goes to Flutter, and I'd recommend it as the default. Half our native team are Flutter fanboys and I'm guessing there's a very good reason for that. Someone proposed KMP before. We gave it a shot and canceled it because it felt horribly unoptimized. This is just anecdote, though. I haven't used React Native and don't plan to, but my main worry is the number of layers and the people maintaining them. Mobile has a lot of breaking changes since Android 10 (2019). iOS's support window is probably 3 years. I don't know if we can extrapolate this to the following years, but Android 14 has had a major breaking bug that wasn't backwards compatible. If the layers are not being maintained, you end up with a mess like Cordova. We migrated to native after running the numbers and realizing that it's cheaper to hire 1 senior iOS and Android person rather than hire a single mobile person and a bunch of contractors to update plugins each time. Both platforms are also different in some ways. Code complexity increases exponentially, and `if (iOS)` logic will contribute to this by a lot. One code two platforms is not always a good thing in the long run. But if you want that, then Flutter is built for it. |
the app doesn't need extremely complex modules, it's crud with some extra steps. most of the magic is on the backend.
i'll take a look at flutter before deciding what to do.