React Native vs Flutter vs Native - Let's Talk Engines

130,023
0
Published 2022-07-10
I'm done with this topic forever hopefully. Please make responsible decisions with your mobile frameworks.

React Native is fine. Stop asking me about Flutter. Please.

timestamps:
00:00 intro
00:30 what’s the problem with flutter?
02:10 code push
04:28 ios render stack
06:55 react native render stack
09:54 flutter render stack
12:53 problems users are gonna have
17:59 flutters bad decision
22:32 the important points
23:34 summary & outro

All Comments (21)
  • @kahanx10
    He sounds like he built React Native alone by himself but his ex girlfriend came up with a somewhat better solution.
  • @tcurdt
    I am not even a Flutter fan, but "code push" is really a Apple/Google problem. The same problem exists for fully native apps. TBH I am surprised Apple even tolerates "code push".
  • As a React Native Developer i have to say that the developer experience in React Native sucks! Debugging native code is just pain in the ass. In React Native, except Flipper (which is the most incapable and worst debugger tool ive ever used), there is absolutely no good debugger out there. Additionally, your React Native app is relying completely on either third party libraries developed by a single person or your own custom native code which increases the risk of additional bugs and glitches for both platforms. Using libraries and components from a single person is very risky, since there is no guarantee, that the developer keeps maintaining the library. Flutter solves a lot of those problems and it makes me (as a React native developer) a little jealous of the developer experience in Flutter. This whole video is just complaining about Flutter in two aspects, while mentioning "downsides", which do not impact the user's experience, nor the developers experience. I think Flutter uses a different solution and it is not a bad solution, only because it does not use native provided elements (UIKit...). Apple and Google provides Hardware and Software and a preferred way of writing performant apps (Kotlin, Swift), but it doesn't mean, that other technologies are bad! Instead of roasting Flutter in another video, i would be very interested in covering the vulnerable points of React Native. If you're the opinion, that React Native is Heaven on Earth, than you're just ignorant, stubborn and "not living in reality". I want you to defend your opinion and talk about the developer experience (debugging, library version management, JSON Serialization via Bridge...) in React Native, because it is far from good.
  • @DavidCZ2051
    opens app App: "update for a new big feature!" updates app Resolved
  • @JoRyGu
    I really wish content creators weren't so invested in these "the thing that I use is just better than what you use, and you are stupid for using what you use" videos. You have a ton of solid arguments. If you framed this in a way that argued for react native and what it brings to the table that Flutter doesn't, that's a great piece of information for someone trying to determine which tech stack to go with on their project. As soon as you start saying things like "Flutter devs don't live in reality" it takes away from your otherwise extremely good points. Edit: Dude your outro was spot-on. More of that type of even-keeled takes please.
  • @chastriq
    Just to be clear, this logically extends to "It is irresponsible to your users to build the app in Native iOS/Android" right ? Or is there a codepush capability there ? They are both compiled.
  • @Kapendev
    First example for not using Flutter: The worst-case scenario for any app. Ok bro.
  • Definitely disagree. Some valid points for sure, but "dying on a hill" for the take of "hurting your users" in this context is... extreme. Dare I say... "not realistic?" I have experience shipping multiple RN apps (varying in size and complexity) professionally, and with one Flutter app as a freelance project. The Flutter experience has been my favorite by far. 1. CodePush - yeah it's super handy. In the last 6 months we've probably codepushed a fix out for our RN app a few times (maybe 4-5). Wish we could do this with Flutter, but again, not HUGE for me. 2. Web - Sure Flutter web isn't great, but my questions is... does it hurt your users more if there simply is NO web app, or if the web app is a Flutter port of your mobile experience and it's a few extra MBs for them to download? My reality (which apparently doesn't count) is that my freelance project would have no web app for users in any acceptable time frame if we were not able to port it over with Flutter. 3. Using the platform - good points here. Recreating the whole platform is goofy. HOWEVER I've spent SO MUCH time fixing rendering bugs for RN where the Android version just didn't line up with the iOS version. It's very irritating. Haven't had this issue on Flutter given the way it renders. A lot of people in the comments bring up the DX. Flutter is so much better in this regard in my experience. The RN toolchain is just so brittle. The whole thing feels like a hack to make React/JS work on native mobile platforms. I guess this is all your opinion though. Flutter certainly isn't perfect. Maybe you should try and make an app with Flutter, sounds like you haven't. I think the "non-reality" for some flutter devs is working at companies or on projects that don't have a budget to built a bespoke web app, mobile, and desktop app all for maximum user experience. It'd be awesome if everyone could, but ... that doesn't seem like reality either.
  • Having used both react and flutter, i find flutter's plugin ecosystem and inbuilt widgets far more better (and less toxic fanbase)
  • @Gaijin101
    having used both RN and flutter for company apps. flutter was much easier and cheaper to maintain. atleast for a small team of non hardcore RN nor flutter dev.
  • @st-jn2gk
    Your point on code push is valid but it isn't a fault on flutter's end as much as it is a super cool perk on RN's end, but still a valid point. Performance wise, Flutter is amazing. Your point on the iOS glitches were from early 2021 and have been fixed. I work on a Flutter project at my company and we haven't had any performance issues (even though the code was ridiculously far from well written) Dart VS JS, I love dart. It feels like the best parts of javascript mixed with the best parts of java, but again, I don't want to be that guy just stubbornly arguing. Code push is fucking amazing, and I wish we had that especially on an issue we're dealing with right now on Google Play Store. The native UI calls... cool I guess. I mean if you like them, awesome. we use the flutter ones and they work perfectly fine. I haven't found a difference between them and the native buttons. As for flutter for web, i think it is further from production ready than you understand. Everything behaves exactly how you expect it, technically, but its a canvas. If you build a hello world web app, and use your browser to search for hello world, it wont find it because they're canvas pixels, not text. Flutter for desktop has been amazing so far. Very small binary sizes and much much much better performance than electron, but we will see. I think for web, React is just better than Flutter. For mobile, Code push gives react a beautiful edge, and if you dont care about code push, then its rather subjective what you choose. For desktop, I think flutter is actually perfect and works very very smoothly, even on linux which i thought would be its weak point because very few people use linux compared to mac and windows. If you read this far you're truly amazing, even if you disagree with everything I say. I hope this channels pops off. The quality is rather consistent and you support your points with logic. (and drawings)
  • The Flutter team deliberately chose to not ship code push, this is not because of a technical limitation. They made a document about this. One of the reasons is that code push can go against App stores policies
  • @rid9
    If code push is so important, then I'd say this is not even going far enough. Stop writing apps altogether and just ship a PWA in a WebView, then your app will be an evergreen version 1.0 forever.
  • @rickdg
    The next step for maximum flexibility is just a cordova web view so you can easily inject both JS and CSS. Fortunately, since we're getting push notifications on iOS, the other step is to ship a PWA and forget about store approvals altogether.
  • Well. Idk. I’ve been working with RN and Flutter for a long time and RN is a pain in the ass for the most of the time. You spend more time fighting with RN rather than working on the actual project
  • @catsby9051
    Code push is like a massive, MASSIVE, security vulnerability. Like I get that it is convenient but it is terribly dangerous.
  • Theo, you're a smart dude, and you definitely know more about web development than I do. But this Flutter rant is so ridiculously hyperbolic its not even funny. Flutter straight, up has better performance than RN. Is that difference negligible in most cases? Sure. Is CodePush a good reason to use RN over Flutter? Sure, if that's a priority. That video you showed is with Flutter in debug mode, so not at all fair, and they've since replaced Skia with Impeller to address those issues anyway. They're both perfectly viable options as it gets harder and harder to justify going native. "Harming your users" ,"Flutter devs not living in reality" Ridiculous.
  • That code push… i have no idea how the app platforms can allow that. Seems to be an easy way to get malware onto phones
  • @pmoohkt
    Little one-man dev here, writing "tailor made" applications for small businesses in my neighbourhood, with very simple user interfaces: data entry forms, reports. Flutter absolutely rocks for me, as I can develop apps that run on anything, either mobile, web or desktop application. Not everybody is developing apps for fortune 500 companies with one million users ! 😄 (although I would like to)
  • @neociber24
    How is this different than creating your app natively in Android and/or iOS? You will have the same "no code push" problem.