HACKER Q&A
📣 0xDEF

React Native vs. Flutter for iOS/Android apps in 2023?


I have some experience with React and Typescript. But my primary background is in C# so Dart looks really attractive.


  👤 JoeOfTexas Accepted Answer ✓
React Native suffers from package hell and is not native. Flutter is also somewhat in that scope. If you want C# you can try Xamarin, though I have zero experience with it.

In any case, I'd never use React Native again, and stick to Flutter or Xamarin.


👤 andrerpena
As a React developer, I tried, as much as I could, to like React Native, but in the end, every minute i spent with it was a waste of time. Every single day, something would go wrong and drive my attention away from my app. One day, I would do something that looks good in a platform but bad in another. Another day, Expo builds would fail for some bizarre reason. But like someone else mentioned, the package hell is real. You update one package and another package will fail in the most cryptic way possible. Stay away from React Native. This project is a mistake.

In the other hand, I had one of the best experiences in my life with Flutter. Everything is extremely well designed. 100% of the problems I had with Flutter dev, weren’t in Flutter itself. For example, sometimes I needed some magic out-of-flutter configuration to make Firebase authentication to work on iOS. Sometimes Java runtime problems would prevent the Android emulator to run. But with flutter itself, I had the best experience. It’s a god sent.


👤 fyzix
Flutter if you value your sanity. RN is clunky and my builds would fail with some cryptic messages after updating. This was 3 years ago though so things might have changed. Flutter is mostly smooth sailing apart from some hiccups on iOS in the past with animation heavy apps. Tooling(testing,debugging,packaging) is integrated and dart is getting better every year.

👤 neonsunset
If you have experience with C#, then you really don't need to go out of your way since you can use either MAUI or Avalonia (the former is the successor of Xamarin Forms, targeting native controls, while the latter offers a consistent look across all platforms).

👤 wh-uws
Would you rather work in the React and Typescript you know leveraging all that experience with a rapidly maturing platform (check out https://expo.dev/ for instance.)?

Or a framework few others use written in a language Google is likely to drop support for randomly?

React Native is the easy choice for me.


👤 YourGrace
Have you considered using Native? The reason I mention this is that Native mobile development has come a long way with recent additions like Swift+SwiftUI for iOS and Kotlin+Jetpack Compose for Android.

Some things to consider.

1. You will have to deal with the iOS and Android respective build systems and updates. Apple likes to force updates on developers (new to update Xcode + MacOS to leverage newer SDKs). Adding React Native or Dart/Flutter adds one more build system to learn along with another set of dependencies (node.js, etc) to keep up to date.

2. Both SwiftUI and Jetpack Compose are defined using Declarative UI, which you will find similar to what you experienced in React+Typescript. A lot of the paradigms translate well and I believe Swift and Kotlin are somewhat similar.

Overall, if I had to choose between React Native vs Flutter, I would choose React Native. It is a proven solution deployed by lots of production apps. The documentation is extensive and examples are readily online along with 3P libraries. Facebook is committed to React and its development, React has a large developer community, and you will benefit from using Native UI widgets and re-using your Typescript background.


👤 sandreas
[delayed]