6 ms·
I disagree, Flutter is probably the worst choice. React Native is the all around best choice for targeting all platforms natively, otherwise use pure web tech (
by hunterb123 4y ago
I disagree, Flutter is probably the worst choice. React Native is the all around best choice for targeting all platforms natively, otherwise use pure web tech (Ionic + Electron)
The desktop and web targets for Flutter are laughable in their current state. Completely unusable so I consider Flutter to be a mobile only platform at this time.
Another downside is Flutter's emulated UI, it doesn't bridge to native controls like React Native, it's noticeable on iOS especially and will be hard to maintain the fake physics / styling.
React Native is ready for production now for all platforms, including Windows & Xbox via react-native-windows, Web via react-native-web, MacOS via react-native-macos or Catalyst.
Then there's the question as to why would you choose a Google only language and framework with their track record.
With React you can use TypeScript or JS, you don't have to learn a new language or get locked into a framework.
- realusername 4y ago> React Native is ready for production now for all platforms, including Windows & Xbox via react-native-windows, Web via react-native-web, MacOS via react-native-macos or Catalyst. All platforms ... except Linux. React-native-gtk is abandoned as far as I know.
- hunterb123 4y agoYou can wrap the React Native Web target in Tauri or Electron for Linux. There's also https://github.com/valence-native/valence-native https://github.com/valence-native/valence-native that can use either wxWidgets or Qt. All in all it's better than the current Flutter web / desktop implementation.
- realusername 4y ago> There's also https://github.com/valence-native/valence-native https://github.com/valence-native/valence-native that uses Qt. There's been more than a year without a commit in this project, I'm not going to say it's abandoned yet but that's not that far off I guess, good luck with the issues you'll encounter. > You can wrap the React Native Web target in Tauri or Electron for Linux. That's one of the only realistic solution for now in my opinion.
- hunterb123 4y ago> There's been more than a year without a commit in this project, I'm not going to say it's abandoned yet but that's not that far off I guess, good luck with the issues you'll encounter. Or it's stable? Look at the codebase, it's a pretty dead simple bridge. Make your app open source and all those Linux devs you're supporting can help you out! > That's one of the only realistic solution for now in my opinion. Yup, and you get it for free with if you build your app with RN and React Native Web.
- realusername 4y ago> Or it's stable? Look at the codebase, it's a pretty dead simple bridge. Make your app open source and all those Linux devs you're supporting can help you out! Even the simplest bridge needs upgrades, unless you want to be stuck with react 16. > Yup, and you get it for free with if you build your app with RN and React Native Web. That's better than nothing I'd say yeah. That's kind of the issue with react native, you need platform-specific rendering code and since companies don't really care that much about linux desktop it's not really there.
- mhoad 4y agoPolitely, I would point out that the makers of Ubuntu have said that as far as they are concerned Flutter is the future of desktop app development on Linux and all their projects moving forward will be using it by default because they believe in it so much. They just started in Ubuntu 22.04 by rewriting their installer (I.e the very first thing users see when coming into contact with Ubuntu) to be a Flutter app. It has proper first class support rather than the hacky and unofficial (and possibly poorly maintained) workarounds you suggested to do cross platform development.
- booi 4y agoDon't forget native targets for TVs (well android TV at least)
- the_duke 4y agoEvery experience I had with React Native was truly horrible. Gigantic, messy JS dependency tree. Constant build breakages after minor version updates. Random flakiness. Unmaintained or buggy native plugins. Questionable support for issues that didn't affect FB. I wouldn't touch it again.
- terandle 4y agoHighly recommend trying expo.dev sometime they have come a long way in providing support for native modules and take care of all that underlying "mess" for you.
- TotempaaltJ 4y agoI absolutely agree with this. At this point I don't really think there's much reason to _not_ use Expo. I found setting up RN without Expo absolutely awful, and switching to Expo was the only reason I didn't start rebuilding my app in Kotlin+Swift.
- hunterb123 4y agoThere's Expo if you don't want to setup your own stack. You certainly don't need it though, I have no issue with my React Native stack. Flutter has its share of similar tooling issues, most of the time its native things like CocoaPods that affect both projects. RN has a huge amount of plugins, a lot that are very good quality. It's up to the dev to pick quality dependencies.
- realusername 4y agoThat's the story with Javascript in general, the tooling is just terrible. This is one of the underappreciated part of flutter, 4 months of upgrade take me 30min of work and the hot reload just works, good luck with that in the JS world.
- hunterb123 4y agoI never really have issues with the JS side of things, care to elaborate on what specifically is "terrible"? Generally what breaks RN is the same stuff that breaks Flutter, native tooling like CocoaPods, Gradle, etc.