Ask HN: What to use to build an iOS and Android app?

  • I haven't used React Native so I can't speak to that... but... Flutter is awesome!

    I have used Flutter to build an App which I distribute on iOS, Android, Web and MacOS using the same code. It is fantastic.

    Here are some of Flutters advantages.

    * Performance: Flutter's architecture, using its own rendering engine (Skia), leads to smoother, faster performance compared to React Native's reliance on native bridges.

    * Single Codebase: Flutter promotes a "write once, run anywhere" philosophy. You can build native-like apps for iOS, Android, web, and even desktop with the same codebase. This significantly reduces development time and effort.

    * UI Development: Flutter's declarative UI approach (building UIs with widgets) and its rich set of built-in widgets make it incredibly powerful for creating visually appealing and complex UIs.

    * Hot Reload: Flutter's hot reload feature allows for rapid development and iteration. Changes you make in your code are reflected instantly in the app, making development faster and more efficient.

    * Great for Custom UI: Flutter is a good choice for apps requiring a high level of customization, unique animations, and complex UI designs.

  • 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.

  • Why not PWAs?

    https://docs.pwabuilder.com/#/builder/app-store

  • flutter or react native are probably the best options

  • Compose multiplatform

  • Have a look at Flutter.