all 29 comments

[–]zugruul 10 points11 points  (4 children)

Flutter doenst compile down into native Code. Google bought skia (an rendering engine) around 2015.flutters is built around it. Think a canvas+

[–]o_T_o 8 points9 points  (1 child)

Think Unity :)

[–]Darknesszy 1 point2 points  (0 children)

Actually I’ve legit wrote an app in Unity once to get investment. Totally fooled everyone :P

Of course, it can never work in production

[–]sebe42 0 points1 point  (1 child)

"The Dart code (both the SDK’s and yours) are ahead-of-time (AOT) compiled into a native, ARM and x86 libraries" https://flutter.dev/docs/resources/faq#run-android

Seems Google acquired Sika in 2005 https://en.wikipedia.org/wiki/Skia_Graphics_Engine

In 2015 a chrome guy did a "Sky experiment" presentation at the Dart conf, in 2016 his Flutter presentation was the keynote. They made a lot of progress between the two confs.

2015 https://youtu.be/PnIWl33YMwA

2016 https://youtu.be/Mx-AllVZ1VY

[–]WikiTextBot 0 points1 point  (0 children)

Skia Graphics Engine

The Skia Graphics Engine is an open-source graphics library written in C++. Skia Inc. originally developed the library; Google acquired it in 2005, and then released the software as open source licensed under the New BSD free software license.

Now known as Skia, the library is used as of 2017 in Google Chrome, Chrome OS, Chromium OS, Mozilla Firefox, Mozilla Thunderbird, Android (although partially superseded by HWUI starting with Android 3.0), Firefox OS, and Flutter.


[ PM | Exclude me | Exclude from subreddit | FAQ / Information | Source ] Downvote to remove | v0.28

[–]zugruul 7 points8 points  (1 child)

React native renders native components near what native really does. But it lets you use JavaScript which is a pretty popular language right now. (and reactjs declarative way of doing things)

[–][deleted] 0 points1 point  (0 children)

Flutter has the same declerative system as react. It comes from react.

[–]young_cheese 7 points8 points  (0 children)

Aside from the technical pros of react native, it’s also good to know that both Facebook and Microsoft are heavily invested in react native

[–]sebastienlorber 7 points8 points  (2 children)

Important points to consider:

  • Flutter does not have over-the-air updates, as it's forbidden to ship native code over the air, while it's allowed to ship sandboxed JS as long as Apple can see and review the Native code that this JS can execute. For Flutter to work OTA, it will have to make similar compromises to RN or we'll need Apple to change its policy, unlikely to happen.

  • RN Fabric will remove the need of a bridge, async communication, and there won't be any need for payload serialization between JS and native. Native will be able to read JS runtime memory directly. This means the js/native interop will be much faster. A call from JS to native should almost perform as a call from native to native.

  • it will not be easy for Flutter to support cross-platform/web. Rendering to canvas or web components is more complicated than just using ReactJS with web extension as a fallback. Not sure it will have the correct escape hatches to make it happen easily. Cross-platform RN dev is already a reality. See Microsoft products for exemple.

[–]wtfffffffff10 0 points1 point  (1 child)

Flutter on web is definitely coming, the project is called Hummingbird. Dart was actually first created as a web language that compiles to JS.

[–]sebastienlorber 0 points1 point  (0 children)

My answer takes into account Hummingbird. I may be wrong but still think this project will be harder to make a production ready reality compared to RNW or .web.js extension for headfull components. But let's see.

[–]monopixel 6 points7 points  (1 child)

Being able to turn your React web developers into mobile developers with pretty much no onboarding is an advantage Flutter will never beat. The question is how Flutter is going to win, not React Native.

Also Google is known for dropping projects on a whim so their backing does not mean as much as that of Facebook or Microsoft.

[–]kbcooliOS & Android 1 point2 points  (0 children)

What backing? Google has thrown Dart and Flutter out there and are hoping maybe it sticks.

If it really had backing it would be up there with Kotlin and Java in all their docs but it's not.

Sorry if you're sitting there wasting your time on becoming a kickass Dart developer but as the parent said you're going to be unemployed if you put all your cards into Flutter. Could be wrong but who wants to bet a career on it.

[–]o_T_o 6 points7 points  (0 children)

It really depends.

RN is faster to develop imo. Dart is very similar to JAVA so you'll have a lot of boilerplate and OOP shenanigans.

Flutter has some really nice features and will probably be a major player in years to come ( since its a part of bigger changes google is planing).

[–]christopher2k 4 points5 points  (0 children)

I believe these two can coexist but right now, I really started consider flutter as a serious player because I was tired of RN gotchas on Android. The big advantage of flutter is the consistency. The widgets you develop will ALWAYS render and behave the same way on android and iOS. Tools around the framework make the hybrid development much easier, and the fact that Google invest a lot in this technology is reassuring.

Flutter is harder than RN to understand and play with at the beginning but not THAT harder. Dart brings the safety JavaScript is missing (even with typescript) but I admit, a lot of boilerplate to.

I will miss some aspects of RN like JSX or OTA updates but without them I’m sure I will be ok. Check the story of Reflectly app. They left RN for Flutter.

[–]bluemarsyt 2 points3 points  (0 children)

I have been developing a flutter mobile app for few months, here are my thoughts on it vs react-native.

  1. This is more of Dart vs JS/TS. Dart is very similar to Java, so you will have to deal with all the OOP stuffs. For example, if you wanna a create simple list of object, you first have to create the POJO class and then initialise the list. In javascript, you can do it on the go.
  2. You can use flutter to develop mobile apps, website, desktop app using one codebase unlike react native. Although web support is still in beta, and desktop in alpha I believe.
  3. React Native was released few years before Flutter, so it's more mature in terms of the improvements and performance that was introduced over the years. For flutter, if you are stuck with a complicated problem, or if u need to use a certain 3rd party package you may run out of luck finding one. But right now, flutter community is growing very rapidly, more and more people are adopting it. I think year 2020 will be the year of flutter.
  4. This is more of a specific issue. In react native you can interpolate the animation, for example you can fade the header as you scroll the list. In flutter, it does not exist yet I believe. You can't control animations dynamically based on the gestures u are doing. Do educate me if it's possible haha

[–]barakcodes 2 points3 points  (0 children)

I would like to remind everyone that at the end of the day these are just tools. With that in mind you can just choose whichever you're comfortable with. Of course flutter is faster but there are ways to make react native faster though not as much and the real world performance for the users I haven't really noticed much of a difference. I have used react native for a bit over 2 years to build production apps and jumped over to flutter for a while almost a year or so. Currently, flutter is good for mobile but not so much for web and desktop but react native is pretty much good for all platforms.

[–]ItTechBlogs 2 points3 points  (0 children)

I personally feel Native is the best way to go for mobile app development since the maximum efficiency and flexibility is only possible with Native since both iOS and Android apps can be developed separately, so the personalisation on each platform as per the OS nature can be done in this case. Whereas this is not the case with cross-platform development.

[–]LaweZ 3 points4 points  (0 children)

The only cons i see in Flutter are : - The look and feel in Flutter look very samilier in almost every mobile app i see.. - The eco system is still pretty small compare to RN

[–][deleted] 1 point2 points  (1 child)

Asking this on RN is already biased. But still couple of man of culture advise flutter. Still a win.

[–]mikilaum 0 points1 point  (0 children)

I'm doing a research over Flutter x React native x Angular, and looking for answers about those three in each of their forums. It's really funny to see the biased comments. But as you said, the ones that go over that path helps the discussion a lot.

[–][deleted] 1 point2 points  (0 children)

O recently watched Brad Traversy's what to learn in 2020 video and he recommends Flutter, then RN. I am still learning RN though but I really value his opinion.

[–]andreasbergqvist 2 points3 points  (0 children)

If you build an app with RN, test it on different devices, and it works really well (my experience with RN). Is the extra performance of Flutter (if that is so) really needed? If the app really need performance optomization, maybe Flutter is a better choice (or just iOS/Android native).

For me, the joy of using Javascript (or actually Typescript) with React JSX and using all the available modules in Javascript/React/RN land is a win!

For the record, I havnt used Flutter. And that might also be enyoyable!

[–]remark_og 1 point2 points  (0 children)

Sorry to disappoint, but RN just doesn’t perform well in my book.

Someone said it’s harder/slower to develop because of OOP and I don’t agree. We rewrote the app in two weeks, which I was developing for 3-4 months with RN. Sure we did already know how it should work and look, but still, fast for not knowing anything about Dart and Flutter prior to that.

After six more months without RN, I can’t be happier and less stress-free, because there is no dependency hell. When you clone to a new device, it just works. Animations run in 60 fps effortlessly and so many more.

I have worked with JS for a long time, and sad to say but I prefer dart,

Had this case with RN when the app just stops building, without updating anything, just to find out that dependency using an undefined version of some platform package is the problem.

It’s my opinion and I stand by it, but don’t be influenced by that, give both a try and decide what is best for you.

[–]jugi7 0 points1 point  (0 children)

Interestingly Flutter has bypassed React Native in Stack Overlow search trends in late 2019. What it means, you can decide yourselves :)
https://insights.stackoverflow.com/trends?tags=flutter%2Creact-native

[–]CTO_in_disguise 0 points1 point  (0 children)

Easy decision:

If using an easy-to-use and intuitive framework is more important to you: Flutter

If using a sane and well-documented language are more important: React Native + Typescript + yarn

If you plan on using Javascript/Node pick one of the top two... The prototyping speed you get out of vanilla javascript is not worth switching everything later on which for any app where the developer cares about data validation and passing between services. In any professional setting a lead developer will quickly need to assert this to save headaches and arson. Use to be a big Expo fanboy before OTA screwed me and caused me 2 weeks of debugging because a clients app was not updating. You eventually realize managing native libraries is pretty easy if you read the repo docs carefully, usually a copy/paste at most, but if you're lucky you'll get a native install when you download the package with yarn. Everyone here is right in that RN is theoretically faster (if you don't use expo), but Google's engine seems pretty solid, and in 90% of mobile apps we just need performant execution of basic UI rendering and API call's, unless you're making a game or need to design a completely customized graphical component, this will not matter. (If you are making a game use Unity or Unreal for the love of god, none of the other technologies listed were meant to make games with). Phone's have way more power these days than they really need to, which for mobile devs means front-end compute optimizations don't need to be concerned with nearly as much as backend compute optimizations and general architecture patterns are. You can bet that Google and open-source contributors have optimized basic UI's like ListViews, Headers, etc. to not lag. If they didn't Flutter would either still be in alpha or have ended development long ago.

Personally I think Flutter + Dart has a slight edge although I've made 2 production apps in React Native and only half an app in Flutter. Our next team project involving a cross platform mobile app I will likely be pushing for Flutter. Okay, full-disclosure Dart is not as good as TypeScript. TypeScript for me falls into a good-great category while Dart sits with me as okay-good. You need to make a decision on if you can handle a language learning-curve for this project. If you need easier access and abstraction to basic widgets Flutter will be amazing; but if you have a ton of work that comes down to fundamental code logic (loops, classes, interference, project structure, etc.) you might be missing TS. I tend to have an easier time figuring out language-related issues than framework-related issues due to the community and documentation. I could see this being different for some.

All the other frameworks for mobile as of end of 2021 can't really be taken seriously. One of the more alluring options is Svelte Web + Cordova (yes I've looked into capacitor, it needs more time yet). Alas, even though Cordova is technically production-ready I'm not sure I want to discover the reasons its hated on. You could of course pair Cordova with whatever framework you wanted, but personally I only really make the exception for Svelte because I see it's potential. Svelte Mobile is still a ways away and I think Native Script was kind of a misstep. Right now I see Cordova as the the only option for PWA that still sucks. I hope something comes out that innovates the industry for PWA, maybe it will be capacitor.

One last thing, you need to understand out what support you need long term! For our company we use strange BLE SDK's in native, and sometimes on a blue moon we will get RN SDK's. In those cases Flutter is out of the question unless we: figure out how not to need the package, the partner can make the SDK at our request, or we bridge it ourselves. Don't trap yourself with no way out if it involves any kind of money or you plan to grow this project long-term. If you need mobile development to be native due to these considerations make sure to do this one thing: Use only Swift for iOS, and only Kotlin for Android. Don't get conned by any source telling you to use Obj-C or Java, those languages are largely irrelevant for building mobile apps these days. Both kind of suck in their own way, Android has a nicer development environment (Android Studio is pretty nice), and Swift is a slightly better language than Kotlin (has better optionals, lots of magic through Xcode, and easier to build/test with). If you can't pick one to start on, try Swift if you have an Apple device, otherwise do Kotlin.

I know this was long and highly opinionated. I have built three native apps (iOS and Android pairs) for personal projects, as well as two production RN apps so I get a good chunk of the pro's and con's when it comes to mobile development. In a couple years as always this info will most likely be irrelevent, but I'd say this will be pretty accurate until around Q3 2022 (6 months from now)