Hacker News new | ask | show | jobs
by melony 1530 days ago
React Native apps are slow if not engineered well. Naïve implementations of RN apps tend to scale really badly. FB is fixing this with their new architecture (Fabric Render and TurboModule) but the rollout and adoption is even slower than their apps. Flutter on the other hand performs reasonably well (generally speaking) even if you outsource the engineering to the lowest bidder in Eastern Europe or South Asia. Flutter also has better defaults for subtle details like transitions and animations with their material design stack. RN essentially gives you a blank canvas like a web page and YMMV depending on how much design talent your engineering team has. The third party RN design toolkits are rarely up to the standard of Google's massive design team where each pixel and transition is carefully scrutinized across all major platforms. RN is a great tech when you have entire teams of mobile staff engineers and designers. But if you just want to build something quickly that works reasonably well cross-platform, Flutter has the edge here.
4 comments

I consider it telling that Facebook doesn’t dog food React Native when it comes to their primary source of income (their application or their ads manager depending how you want to look at the problem) but Google Ads is totally done in AngularDart on web and Flutter on mobile.
> Flutter on the other hand performs reasonably well (generally speaking) even if you outsource the engineering to the lowest bidder in Eastern Europe or South Asia.

Discussion on Flutter Performance at r/cpp is enlightening: https://www.reddit.com/r/cpp/comments/u0ut2a/comment/i4b0lqt...

> "Unfortunately, Flutter is currently a pile of hot garbage from the performance PoV.

> Their own Hello World example, which has one animated button on screen, which updates the label when you press it (see their screenshot) in Release manages to stutter on Moto G7 Power, a phone from 2019. Which smoothly runs quite demanding 3D games.

> According to Android Studio's profiler, about 20% of the frames do not fit into the time slot when the button is pressed. I don't know how did they manage to achieve this with such a trivial example on a Snapdragon 632, but they did it. So, to run smoothly on not-latest phones, your app should somehow be even simpler than their Hello World example, which seems hard to do.

Unfortunately I didn't find it enlightening. It's just another anecdote. More likely a confirmation bias.

I am not a smartphone dev. So I don't care either way. But I want to see a proper benchmarking. Not another internet hot take.

I don’t understand all the marketing hype about Flutter’s good performance. I can often tell an app is written with Flutter just based on how slow it feels on my iPhone 13 Pro. I think the 120 Hz screen doesn’t help, but there are obvious stutters in even simple apps.

If a current generation flagship phone struggles, then I just can’t imagine how a more affordable phone that is a couple years old would fare.

See Google’s own Google Pay app as an example. Its performance is unforgivably bad. Perhaps it runs better on Android, but on iOS it feels bad.

On iOS there are issues with shader compilation that cause stuttering. A fix is being worked on for quite some time now.

The hype around performance is (I think) because it uses lower level rendering stack and a AOT compiler, but the comparision is being made mainly to JavaScript and web stack tech.

It could be fast as rendering speed depends mainly on how quickly can you rasterize and compose the graphic to the canvas. It uses Skia as the graphics backend, but Skia, while being very feature rich, is not the fastest. Dart is also not the fastest language around, but it has a lot of headroom for optimization. I'm also a bit skeptical about the performance impact of the immutable widgets tree, but maybe it doesn't have such a big performance impact as I imagine.

Overall, Flutter has potential to be quite fast. But currently, due to various issues, it's often not. I do love it though, due to how flexible is the rendering and due to the fact there is no markup language. It's really a joy to work with.

> React Native apps are slow if not engineered well. Naïve implementations of RN apps tend to scale really badly.

I think these statements are true for any application framework