Remix.run Logo
agentifysh 4 days ago

Really bizarre to see all the dogpiling on Flutter/Dart, it's fine. Google isn't giving up on it and we aren't going to suddenly switch to something else. In fact I have no desire to use React Native which the community seems to always point to Expo, a paid tool with metered usage.

My only gripe is that there is no 3D game engine for Flutter, again Dart is great, lots of solid packages like GetX just make the overall development progress as advertised.

People also sleep on the fact that Flutter can do web application and target all 3 desktops and this shit is all free without needing a 3rd party tool like Expo because the RN core experience is lacking and you need to depend on another vendor.

satvikpendem 4 days ago | parent | next [-]

> My only gripe is that there is no 3D game engine for Flutter, again Dart is great, lots of solid packages like GetX just make the overall development progress as advertised.

Yeah they're going to work on 3D afterwards (potentially, the main dev for 3D left the Flutter team and is back on Android if I recall correctly), it's not a huge priority right now. Also, it's not recommended to use GetX, there are some issues with it, a major one being it's like a framework within a framework, and it essentially rewrites a lot of Flutter. Better to use Riverpod, Bloc, Signals, ReArch or something else.

For 3D however, I've been looking at Dioxus which is in Rust, they're making a native renderer the same as Flutter (ie not webviews) called Blitz, and they're making good progress on the mobile side. This renderer can embed Bevy, a game engine also written in Rust, and Bevy can also embed Dioxus native, which I thought was really cool, it's bidirectional embedding.

I didn't know Expo explicitly made you pay, I thought it was only optional. Now that I look at it, seems like it's for high priority builds but still, can't we just build on our own servers? If not then that's a big con, I don't want to rely on an external service just to build my app.

What are you making in Flutter?

aleph_naught 4 days ago | parent | next [-]

You can build on your own machine. I have github actions that trigger a local macos runner for local expo android/ios builds.

3 days ago | parent [-]
[deleted]
tcoff91 4 days ago | parent | prev [-]

Expo is free, that was misinformation. EAS costs money but is optional.

3 days ago | parent [-]
[deleted]
never_inline 4 days ago | parent | prev | next [-]

> lots of solid packages like GetX

I haven't touched flutter in two years, but isn't getX a kitchen sink library disliked by everyone?

agentifysh 3 days ago | parent [-]

11k likes on github means everyone hates it? it is anti-pattern which might turn people off sure.

RantyDave 4 days ago | parent | prev | next [-]

Likewise. It took me a while to "get" flutter but now I'm here, I 'aint leaving.

tcoff91 4 days ago | parent | prev [-]

Calling Expo a paid tool with metered usage is just flat out misinformation. You can promote your preferred tech without lying about alternatives.

Expo is a free open source framework that costs absolutely no money to use. You do not need to pay expo any money ever.

Expo Application Services is a set of cloud services that you do not have to use to use Expo. You can set up your own on-prem build infrastructure with fastlane and never use EAS Build. You can self-host your own EAS Updates server. You don't have to use EAS Hosting for web apps. Expo is far less coupled to EAS than Next.js is to Vercel.

Flutter for the web is terrible compared to React Native Web. It's a great way to get your company sued for violating the Americans with Disabilities Act. It literally renders to a canvas almost like the Macromedia Flash apps of old. There's also React Strict Dom now which absolutely blows flutter's web support out of the water while still supporting react native: https://facebook.github.io/react-strict-dom/

I just looked up an example flutter web app and it's completely invisible to the screen reader when I enable VoiceOver: https://flokk.app/#/ . The screen reader literally announces 'web content is empty'. You can't even select text to copy it!

Also, as far as integrations with game engines:

https://github.com/calico-games/react-native-godot

If you want complex 2D graphics like you can do with flutter, react native can also use the Skia rendering engine just like flutter with react-native-skia.

Qiu_Zhanxuan 4 days ago | parent | next [-]

Flutter for the web is lacking but for iOS/Android/Windows it's ideal.

tcoff91 3 days ago | parent [-]

The DX may be ideal but they are not very ideal for your iOS users. Painting pixels vs composing native views is not great.

I’d rather put up with the more painful DX of react native because I care more about the quality of the app vs the DX

3 days ago | parent [-]
[deleted]
agentifysh 3 days ago | parent | prev [-]

saying Expo is "free" is disingenuous. sure, you can self-hosts and duct-tapep pipelines together on-prem, but at that point you're just paying in devops hours (https://github.com/expo/expo/issues?q=is%3Aissue%20state%3Ao...) instead, something which is not part of flutter DX

your comparison for web is a lazy trope. If a Flutter app is invisible to VoiceOver, thats on the developer for ignoring the semantics tree, not the framework

ironically, your point on React Strict DOM actually shows how much of a mess RN web approach is. Flutter solved cross-platform consistency at the engine level years ago while React is still trying to force the DOM to behave.

I much prefer a compiled language than the runtime uncertainty of RN. composing native views sounds ideal until an iOS update changes and breaks your layout, or JS bridge chokes during a complex animation edge case that will get you digging through github issues. Flutter is rendering natively on the GPU without the overhead. I prefer shipping a consistent app over debugging why some react-native-* is dropping frames on a budget phone because of JS thread

Overall, I find your blatant marketing advertisement of Expo, very suspicious, digging through your past comments I see similar promotion of Expo and RN. You can see Expo's pricing (https://expo.dev/pricing#plan-features) which clearly shows its a classic open-core funnel scheme to get developers to build dependence and end up paying for build credits

tcoff91 3 days ago | parent [-]

Those github build issues you've linked have nothing to do with funneling people to EAS Build. EAS build doesn't make your builds more reliable than just using fastlane and building on your own infra. Most build issues are due to react-native itself and when you have those issues it fails in EAS build as well. Giving Expo money doesn't save you from any of the build issues that plague React Native.

I have years of experience building react-native apps that use Expo in CircleCI and making them available to developers in our company with Diawi without paying Expo a dime.

Saying that I'm 'suspicious' because I have a good opinion of the technology I use in my day job at a SaaS company is ridiculous.

Is it great that Flutter probably has 10x less build issues than React Native? Yeah it is. A lot of things about Flutter's DX are better than React Native. But the fact is that you can produce a way better web app with React Native Web than you can with Flutter unless complex game-esque 2d graphics are the focus of your experience.

If you rebuilt twitter's website with Flutter (it's currently react-native-web) it would 100% be a worse experience.

It's not fair to blame accessibility issues on devs and just say it's a skill issue when other frameworks give you a baseline level of accessibility for free.