Most active commenters
  • gunian(4)

←back to thread

324 points onnnon | 14 comments | | HN request time: 0.814s | source | bottom
1. prophesi ◴[] No.42730929[source]
I'm surprised that there was no mention of Expo. In the past, I would say bare-metal is better than Expo-managed React Native projects because of the limitations when it came to native modules. Fast forward to today, and anything you can do in a bare metal RN app can be done with Expo.

The biggest game-changer recently is Expo's Continuous Native Generation[0]. You can configure all of your native modules and ios/android files with a simple config file (which has its limits, whereby you'll need to write an Expo Config Plugin[1]). You will no longer commit the ios/android native code to your repository, and instead let it be procedurally built.

This resolved a lot of environment issues developers would often run into, and greatly simplified onboarding new devs. You can build your iOS/Android apps through the CI with ease. And you'll no longer be afraid of upgrading React Native, as Expo will handle all of the breaking changes in the native code for you.

My guess is that Shopify started with bare metal React Native apps (which I would have done the same 5 years ago), and now migrating back to Expo-managed projects is nontrivial. At my work we only manage one app, and it was well worth migrating back.

[0] https://docs.expo.dev/workflow/continuous-native-generation/

[1] https://docs.expo.dev/config-plugins/introduction/

replies(1): >>42732798 #
2. gunian ◴[] No.42732798[source]
What are your thoughts on Flutter vs Expo vs React Native for someone that wants to build a native app for fun?
replies(4): >>42732845 #>>42733920 #>>42736576 #>>42737723 #
3. EddieRingle ◴[] No.42732845[source]
None of those will get you a "native" app, but they might get you most of the way to a cross-platform app.
replies(1): >>42733050 #
4. gunian ◴[] No.42733050{3}[source]
fair point but coin toss it is what I'm getting they are all equally good/bad?
replies(1): >>42735361 #
5. reddalo ◴[] No.42733920[source]
> Expo vs React Native

Expo is React Native with some nice things sprinkled on top. I'd go with Expo.

replies(1): >>42735370 #
6. wiseowise ◴[] No.42735361{4}[source]
Flutter has THE best dev experience out of all platforms, including native. Hands down, Dart tooling + Flutter tooling are just on another level.
replies(1): >>42736548 #
7. gunian ◴[] No.42735370{3}[source]
why Expo over Flutter? do React Native and Expo provide better abstractions over the Java/ObjC native APIs? again I've never done native dev just curious sorry if this isnt HN worthy comment
replies(2): >>42736440 #>>42738170 #
8. oakesm9 ◴[] No.42736440{4}[source]
The tooling for Flutter is better, but Expo brings React Native much closer.

I fend that React Native app "feel" more native because they're actually using native components, but controlled via a JS runtime. Flutter on the other hand mostly renders to a canvas and re-implements native controls (although it can also wrap native components like RN does).

This leads to there being less of an "uncanny valley" in React Native apps compared to flutter. It also means that all the little details from the system (the text selecting and editing interactions in text inputs being a major one) are idential to native apps when using React Native, because it IS the native component.

The downside to this is that you need to consider platform differences more with React Native, which is one of the things which leads to developers without mobile experience having issues with it.

As the article says, you get the most out of React Native if you're a mobile developer, or at least have someone on the team who is. You can't abstract away all the details of a mobile platform without some tradeoffs.

9. mdhb ◴[] No.42736548{5}[source]
Agreed, I know people get incredibly pissy at Google on this site but Flutter is hands down the best app development experience period in 2025.
10. deergomoo ◴[] No.42736576[source]
React Native renders actual native widgets to the screen, so for example on iOS you would write to cross-platform abstractions but you’d still get real UIKit components on the screen.

Flutter draws its own components that can look superficially like the target platform (or not, it’s up to the developer) in a manner closer to a game engine. HN seems to love Flutter and apparently the developer experience is excellent, but as a user I find Flutter apps to be in general a poor experience. They rarely look or act quite right (assuming the developers even try; I’ve used a number that look like someone has transplanted an Android app onto iOS).

replies(1): >>42745369 #
11. sdflhasjd ◴[] No.42737723[source]
My thought is that Expo prioritises web compatibility too much to the point that it leans into conventions with things like navigation that are web-oriented and these contribute towards an app not feeling like a native app.
12. dboreham ◴[] No.42738170{4}[source]
Not apples comparison imho. Flutter requires using a new fringe language and while it might be a very nice language it's a heavy lift in most businesses contexts to march off into a new language just to use a mobile framework.

So, the main reason for Expo (there are others) is: get to write in the language most developers already know.

replies(1): >>42756505 #
13. gunian ◴[] No.42745369{3}[source]
This is fascinating how does Flutter try to make up for the performace hit that comes with adding a layer of abstraction?
14. maeil ◴[] No.42756505{5}[source]
Fringe but incredibly similar to Typescript. I don't think there exist any other language that is not a direct dialect of Javascript that's as similar. I didn't find there to be any language barrier, especially now with LLMs who are perfect for answering one-off questions about the few diffefences. The tooling is better as well, which means even less of a barrier.