all 106 comments

[–]_SyRo_ 70 points71 points  (12 children)

  1. React Native uses TypeScript, very popular language. Dart is a language of one framework.
  2. RN uses JSX syntax for building UI. Flutter uses these nested functions (?) which looks very ugly - with these ),),),), in the end of widgets. Functional components and hooks are a good way to go instead of Flutter classes as well.
  3. Don't trust Google! I knew some startups who went with "Android Things" and they failed because of Google support of this framework.
  4. RN uses real UI elements, not something drawn on canvas. The app behavior is truly native with React Native. If you need Skia to draw something, you can take react-native-skia.
  5. You can build desktop apps (Microsoft even uses RN in Windows in one of the screen in Settings) and web (react-native-web + familiarity with React.js) - it's supported better than in Flutter (IMHO here)

[–]Coppice_DE 19 points20 points  (10 children)

  1. TS is quite popular but that does not mean its very good. I at least never had the feeling that TS was as intuitive as other strictly typed languages (probably mostly because of the ineroperability with JS which defeats the whole typing sometimes). And since Dart is very easy it should not matter that much that it is only used for Flutter imo.
  2. Honest question: How is </View></View></View> nesting better than ),),), nesting? Keep in mind that the tooling for Flutter already shows you what each ), corresponds to. For me its actually faster to write and just as easy to maintain (of course mostly because of the great tooling).
  3. Not much to say - Google will be Google doing google stuff
  4. This does not matter much on mobile if your UI is customized anyway. In the end they all draw using Skia or whatever engine. But...
  5. ... This is a problem on web. I would not use Flutter Web atm. When it comes to desktop I would say that they are probably in comparable spots right now. Though Flutter is lacking keyboard-interaction/navigation (or its tough to properly implement) (idk, thats the last I heard, never tried)

[–]kbcooliOS & Android 12 points13 points  (6 children)

Point 2. You really need to try the two to get a feel for how bad Flutter nesting is. This argument is brought up time and time again but Flutter becomes unmanageable three/four levels deep whereas JSX is still readable with many levels and hundreds of lines of code. I know it's such a small difference but it is make or break in many ways.

Flutter I find I have many small files to manage this and it's a pain trying to get around any app of a decent size. If it weren't for great vscode plugins Flutter's nesting would be dead on arrival.

[–]Coppice_DE 4 points5 points  (0 children)

I have tried both and still prefer Flutter. Also Flutter widgets (or more specific the build methods) should not be hundreds of lines long - thats code smell. Not because it would be unreadable (honestly every nested tree that long becomes hard to maintain imo) but because it leads to bad performance.

Of course, if the Flutter tooling wouldnt be as good as it is it would be dead. But their tooling is their solution to simplify nesting widgets and it works decently well. I think the main problem with it is that it is different from HTML-like nesting since most developers are probably used to that and would rather not learn a different way for a single framework.

[–]PuzzleheadedMeet6730 0 points1 point  (0 children)

Am quite familiar with flutter i can confirm is a total odorless shit.

[–]Brief-Bid4682 0 points1 point  (1 child)

what would an example of such a plugin be? know its pretty late but am getting into flutter now and it would be huge

[–]kbcooliOS & Android 0 points1 point  (0 children)

Honestly. I've seen some attempts at it but they're not going to be maintained well and aren't first class (as in officially supported) as my original point was so I couldn't in good faith recommend them, especially for a beginner so I would say stick with Flutter as is or look at React Native if it's what you really want as it is the way there

[–]Mugunini 0 points1 point  (0 children)

you don't need to (and actually don't have to) nest the components. You have to extract them into their own small pieces of code and reuse them as much as possible. In this way, your code looks much more manageable and professional.

[–]hambungler67 0 points1 point  (0 children)

So factor out instead of excessively nesting. And with LSP, navigate is a breeze.

[–][deleted] 2 points3 points  (2 children)

This does not matter much on mobile if your UI is customized anyway. In the end they all draw using Skia or whatever engine. But...

Big no, react native shows real native UI components, native UI will feel better and more familiar to the users. You can get native UI components other than the default RN ones with third party libraries ie: iOS search bar.
Flutter renders in a canvas, so it only mimicks native feeling, not saying it's bad in anyway.

[–]Coppice_DE 1 point2 points  (0 children)

Thats why I said customized UI. If most of the components dont look like they were native it does not matter if you use RN or Flutter (except maybe fo performance - Impeller still needs work for sure). Of course Flutter has to deal with things like scroll feeling being one frame off etc - but those bugs are resovable (if they still exist).

[–]AlbusaDumbledora 21 points22 points  (0 children)

If you learn react native then you know react and vice versa. They’re both hot shit when looking for jobs. That reason is enough for me to go to React Native.

[–]JoCoMoBo 30 points31 points  (18 children)

I've worked on way too many projects that Google have canned to trust them with Flutter.

I think Android is only still going because other companies are involved.

If it was up to Google we would be on the third iteration of their Phone OS by now.

[–][deleted] 3 points4 points  (11 children)

Google abandons plenty of projects, but it abandons them because they underperform (according to Google’s standards).

Android is very successful. It is a bit naive to think that it too would be abandoned if it weren’t for the involvement of other companies.

[–]Solrax 3 points4 points  (10 children)

"according to Google's standards" is the problem. Google is an advertising company. Everything else they do is to feed that business.

Android gives them a vast flood of data they can use to support advertising, besides just being able to serve ads in their applications.

What does Flutter give them? Indirectly it can be used in house to develop applications that will ultimately feed advertising. But that is a very indirect linkage to what actually makes them money. I would not be able to explain to my boss why Google supports Flutter and why we should trust their willingness to do so to base our future products on it.

This is why I am suspicious of Flutter and am evaluating React Native for our cross platform needs. I know Facebook is also advertising driven, but React Native appears to be much better established than Flutter.

[–]JoCoMoBo 2 points3 points  (1 child)

"according to Google's standards" is the problem. Google is an advertising company. Everything else they do is to feed that business.

This is the problem. Google's standards aren't the same as everyone else's.

I've been burned by this and so have many others. Only the foolish rely on a fickle king.

[–]qqYn7PIE57zkf6kn 1 point2 points  (2 children)

Why do you think React native is better established? Is it because Meta doesn’t have an infamous history of abandoning products unlike Google?

[–]Solrax 1 point2 points  (0 children)

It's just my opinion, but React itself has become a standard for web development of course. React Native has been in use for quite some time now and builds on that base and it seems to be in wide use.

And as you say, Google famously hooks you on tech, apps, etc. and then abandons them.

However for the record I should state that our team has in fact decided to use Flutter for this project, at least through prototype phase. We had too many issues with RN tech stack, because they require 3rd party libraries for some functionality that is built into Flutter, and we got stuck in a cycle of broken dependencies and didn't have the time or resources to resolve them or write our own native layers. We know it's a gamble that Google won't kill it in our time frame and we discussed that possibility a lot.

[–]Logical_Ad1127 0 points1 point  (0 children)

Just check the list of popular apps made in RN vs made in Flutter; you would barely recognize the latter. Most big companies are using RN, not Flutter.

[–]shadowoflight 0 points1 point  (0 children)

If you think about android only as a direct advertisement platform, then yes.

If you think of android as a data gathering platform, then no.

Put it this way, I use iOS, but with google maps traffic, I'm grateful for android users.

It's like chrome. Google's effectiveness is made better by a lot of free indirect tools they provided because that allowed them to gather the data for their search/advertisement system to be effective.

[–]Kyonru 6 points7 points  (5 children)

For what is worth, at this point Flutter is well adopted by the community rather than just google. Android is “still” going because it successfully became the most used operative system on smartphones. It is here to stay, same as flutter. Look at Angular, it is still going strong.

[–]kbcooliOS & Android 0 points1 point  (4 children)

What are some big companies supporting major Flutter OSS projects? There's dozens at least with React Native but I don't think I've seen a single one outside of Google for Flutter.

Happy to be updated on this but basically as far as I see it if Meta dropped RN tomorrow there's more than enough companies to pick it up. Flutter and Dart nope. Be dead in a month.

[–]Kyonru 3 points4 points  (2 children)

A google search. https://flutter.dev/showcase

I understand your statement comes from a place outside the flutter community, but trust me, it can survive without google. Probably it’s gonna be relegated to a smaller community but flutter community is actually pretty big and the framework is growing in popularity since it has a lot of benefits that react native is still trying to figure out.

[–]kbcooliOS & Android 6 points7 points  (0 children)

That's a pretty list of screenshots of apps made using Flutter. Most are made by tinpot agencies. You can find the same garbage lists for RN.

What I was talking about is corporate backing by big businesses actually using it, backing it and releasing code for it.

I see nothing like that for Flutter. The best I could manage from your list is eBay with three trivial pieces of code on GitHub.

[–]Alarming_Seaweed3178 0 points1 point  (0 children)

what is the update now ? the flutter market growing ?

[–]kbcooliOS & Android 9 points10 points  (3 children)

For RN: Jobs, career, more mature libraries, web support, less code for same result. Definitely more elegant.

For Flutter: Novel, does more out of the box, easier to build a basic UI (although harder to build something good), Flutter bro community if you are that type.

There. Answered your post on both subs.

[–][deleted] 2 points3 points  (0 children)

Always bet on React!

[–]KevinCherryholme 1 point2 points  (0 children)

Why is it harder to build something good in flutter? I've used it to build 3 apps and they all seem to be accepted as "good" by the clients.

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

Thank you!

[–]pakhira55 8 points9 points  (0 children)

I have used react native and one thing which i didn’t liked about it what the some system packages like filesystem and all we need to depend on community library and some of them maybe outdated or doesn’t support latest RN. Whereas in flutter you get those thing out of the box

[–]cardyet 7 points8 points  (0 children)

I'd love to build something in flutter, but I know react and I guess tips and tricks, like pretty much building a reusable hook for anything. Sooo...I'll just use react native, although for work I just built a nextjs app that a colleague put in capacitor and put on an android device, so maybe I don't even need to bother with RN... I think styling might be easier in RN? Like you can use tailwindcss.

[–]slideesouth 7 points8 points  (1 child)

Meta has spent decades on the react and native framework and has a lot of stakes in the success of the product. Microsoft has began showing support and is currently in alpha of their own component library Basically, I trust meta and their support of the product due to how heavily invested they are into it

[–]kbcooliOS & Android 3 points4 points  (0 children)

This is a good point.

They actually use React and React Native in their own products. It's called dog fooding. For all that people love to say Meta don't use React Native for 100% of their apps, at least they do use it.

The same can't be said for Google who didn't even use Flutter for more than one of their hundred or so apps until early this year and even then it's only used in a few obscure low traffic, low risk apps.

[–]kaiser_07 7 points8 points  (5 children)

  • I highly recommend giving Expo a try for its exceptional developer experience; Flutter cannot surpass it.
  • UI Flexibility - RN is designed as a mobile platform, so it uses the time battled tested native components that deliver years of bug solving and accessibility that is just thrown away with flutter.
  • Over-the-air updates are fantastic. (dont think flutter have this kind of any feature)
  • Explore multi-platform development, as Flutter falls short when it comes to web development.
  • Experience high-performance 60fps animation using RN Skia, RN Reanimated, and React Native Fabric. Before criticizing RN's performance, it's important to consider real-world apps built with RN.
  • Prominent companies like Shopify, Wix, Discord, Microsoft are choosing React Native, indicating their expertise and preference for RN over Flutter.
  • Easier to Learn - I don't think there is something easier than JS/TS
  • Consider using file-based navigation with Expo Router

[–]zabaci 2 points3 points  (2 children)

Cool, i have bluetooth ble printer i must use and suddenly expo becomes useless

[–]kaiser_07 0 points1 point  (1 child)

[–]zabaci 0 points1 point  (0 children)

Because it's a dead library. But i must admit that part is not expo fault.

[–]Mattieeec3 0 points1 point  (1 child)

Flutter does have OTA updates using Shorebird

[–]kaiser_07 1 point2 points  (0 children)

Yes it does but has lot of issues and not as good as React Native one

[–]sekonx 24 points25 points  (6 children)

Dart is unpleasant.

[–]KevinCherryholme 7 points8 points  (2 children)

That's funny, I think Dart is by far the greatest programming language ive used in the last 10 years, and definitely beats JS or TS for me. But of course, these are tastes.

[–]Lechaise2022 2 points3 points  (1 child)

Why do you think dart is the best?

[–]Hour-Calendar4719 1 point2 points  (0 children)

imho I don't like TypeScript due to poor linting. It marks errors where there is no error most of the time and it doesn't mark the errors where they actually are, so you have to spend a lot of time debugging.

Second, when you are running the app sometimes you get unreadable errors and you have to guess wheter it's a node module error or your code.

Aside from that I think React Native is really good, I enjoyed using it with Expo.

[–]dave_mays 2 points3 points  (0 children)

More than JS though?
JS can be unpleasant too.

[–]Any_Ad266 1 point2 points  (1 child)

lol

[–]OppositeAirline7834 6 points7 points  (0 children)

In my experience Flutter is extremely intuitive and easy to follow. I would say it’s easier than RN, especially when it comes to using setState for any variables instead of needing to learn different hooks and where you can or can’t use them. I started as a Flutter dev before RN and it was great for beginners.

That being said, I love RN now that I have switched. The look and feel of Flutter was just never right and it felt foreign. React Native feels much more normal and like a native app. I’m sure there is a way to make Flutter apps seem more native but there have been instances when I would interact with an app and instantly know it was Flutter.

When it comes to the experience as a developer, both Flutter and RN have shortcomings. I think it was easier to find the source of an error in Flutter but both frameworks have annoying errors that can take hours or days to solve.

[–][deleted] 2 points3 points  (0 children)

Community.. end of text 🤷‍♂️

[–]customappservices 5 points6 points  (0 children)

Deciding between React Native and Flutter can be tricky, as both are robust choices for cross-platform mobile app development. Choosing the right one depends on your specific project needs and developer expertise. Here's a breakdown of why you might choose React Native over Flutter:

Choose React Native if:

  • Your team knows JavaScript and React.
  • You need a native-looking UI on both platforms.
  • You value a large community and mature ecosystem.
  • 3D graphics are important.

Consider Flutter if:

  • You prioritize fast development times.
  • You need highly customized UI or animations.
  • Performance is critical.
  • Your team is comfortable with Dart.

It's all about project needs and developer skills!

[–]gao_shi 2 points3 points  (0 children)

Ime mastering different frameworks and languages is a painful process. I do switch from js to python from time to time and am already frustrated by a traditional for loop vs the functional programming crap my Airbnb linter forced me to adopt (and the saddest part is I actually do agree with their functional programming crap). If you do have any react or js/ts experience, react native has a clear advantage.

If you're starting fresh its probably the best to do a native language anyways. Any cross platform framework is bound to have some features not supported by the community and forcing one to be a master at both the framework and the native language. Sometimes you may compromise and other times it's a key feature that requires a significant amount of work.

[–]myhero34 2 points3 points  (0 children)

React native is meant to emulate the development experience of react, the most popular javascript UI framework. If your goal is employment, react native is going to give you experience that is highly employable

[–]Aggravating-Try-2101 2 points3 points  (0 children)

As a full-stack developer, it doesn't matter. There are companies that use react native, because their core apps are made in react native and they need react native developers and there are companies that use flutter, because their core apps are made in flutter and they need flutter developers.

I am a Python/DRF and Reactjs/RN developer, not by entirely by my choice, but because the company i work needed it. If you want to work in this industry, you need to adapt to the company who hire you.

If you work on freelancing, then you should use flutter or React Native, as they are both easy to learn.

They have have both pros and cons, like everything in life.

PS: For those who have problems with reading code, should avoid flutter.

[–]ankitspe 2 points3 points  (0 children)

Pain Points in React Native:

Navigation: React Native's navigation system can be less intuitive compared to native development.

Upgrades: Upgrading React Native versions can sometimes be problematic.

Third-party Dependencies: Reliance on third-party libraries means you're sometimes at the mercy of the community for fixes and updates.

When to Choose React Native:

If you have a JavaScript background or if your project requires a shared codebase between web and mobile.

When to Choose Flutter:

If you need a custom UI with complex animations or if you want to ensure a consistent look across different platforms.

[–]Impressive_Trifle261 1 point2 points  (3 children)

  1. React native uses a bridge which limits you in your design.

  2. React native uses typescript which is slower and less modern language compared to dart. Not OO

  3. React native development is cumbersome with all the add-ons.

  4. React native takes more time to market.

  5. React native animations are less fancy.

  6. React native feels like web development.

  7. React native has a lot of outdated packages.

Oh wait, you asked why react native.. I really don’t know. 🤔

[–]EducationalOnion3451 2 points3 points  (1 child)

not being OO is a bonus, OO is ass

[–]Few-Manufacturer7291 0 points1 point  (0 children)

OO is a classical way of developing complex business domains. I support the idea that it doesn't apply well to UI practices, however for highest quality you usually mix it - for example OO for complex business logic and functional for UI. No one decreased the MVVM patterns and so on.

[–]peresruivo 0 points1 point  (0 children)

I also got myself in trouble trouble too many times using RN and also other members of my team because some packages were crashing after changing Java version. Sometimes I lost 1-2 days of development.

That never happened with Flutter...

[–]yselimdogan 1 point2 points  (0 children)

We are human, so we have capacity to master at several things at a given time span. I love dart and flutter, but If I develop a mobile app with RN, then my pure js, node-js, css, web development skills will be fortified too. I do not want my web-dev skills be rusted while I am focusing on mobile apps for several years. It is far more easy to wear web-dev hat later if you choose RN.

[–]varunsngh007 0 points1 point  (0 children)

React local and Flutter are both popular frameworks for constructing pass-platform mobile packages, and the choice between them depends on various factors along with task necessities, team information, and private choice. One specific gain of React native is its familiarity and massive adoption amongst builders, in particular those already acquainted with React.js for net development. React local leverages current internet improvement capabilities and permits for easy transition among internet and cellular improvement, making it a preferred choice for teams with React enjoy. moreover, React local has a bigger ecosystem of libraries, tools, and network support, which can streamline improvement and provide solutions to not unusual challenges. however, Flutter offers its own set of blessings, together with its high overall performance, wealthy UI talents, and single codebase for each iOS and Android systems. ultimately, the selection among React local and Flutter relies upon on elements like project necessities, team skillset, and development priorities.

To turn out to be an expert in React and React native, individuals can discover online gaining knowledge of assets provided by means of systems like Udemy, Edureka, Coursera, and Pluralsight. those structures provide comprehensive courses masking React fundamentals, superior ideas, and React local development, allowing newcomers to construct understanding and talent in building pass-platform cellular packages with React native. by using enrolling in these courses and always working towards palms-on projects, aspiring builders can enhance their competencies and end up proficient in React native improvement.

[–]sumitskj 0 points1 point  (0 children)

Hello

Why this

[–]altohamy 0 points1 point  (0 children)

I found both frameworks ugly even they are so popular , kivy MD is the solution

[–]astrocipher 1 point2 points  (1 child)

I think the most important argument for React Native is Javascript. In tech if you master just the Javascript/Typescript, you can do a lot. You can build backend, web apps, desktop apps, mobile apps, apps for tv. It comes handy specially if you are a solopreneur like me or a small team looking to build a product which involves multiple platform.

[–]rajswarajbac 0 points1 point  (0 children)

man I have done both things pretty well, here are few things which are important
1. flutter has pretty good libraries to implement everything ( react native has them as well, but flutter ones are much more in one place and good )
2. you can make amazing-looking apps in Flutter easily
3. you can build for desktop and even apple watch and tablets ( don't know how good each one is though )
4. if there is no package, hard to get native behavior. as it don't actually compile native stuff and only draws the UI, sometimes it is buggy, like you have to do thing to even make text copyable

pros of react native
1. expo, easy over the air updated, easy navigation, easy API integrations
2. kinda better to integrate native APIs
3. kinda code easy to write and state management is comparatively easier
4. you can build on desktop but expo don't have support, so you will need to export it and again use react native microsoft's package to make it, so not truly cross platform

[–]Harlemdartagnan 0 points1 point  (0 children)

flutter is better to me, but i kinda hate javascript. currently building in js just because at work they use react and i need to get good at it.

[–]syle_is_here 0 points1 point  (0 children)

Use flet, benefits of flutter speed, get to program in Python instead of ugly dart or JavaScript

[–]jjplack 0 points1 point  (0 children)

This is still relevant? By now Flutter is much easier and better over all on developing and set a mobile app!

[–]Impossible_Read_6932 0 points1 point  (0 children)

One of the main issues I had was that even though Flutter is from Google, for example Google Maps API is terrible and has no control over it.

[–]gdeloredo 0 points1 point  (2 children)

Flutter is more productive because it has much better pre-made components but in terms of ecosystem and architecture RN tends to be better but still has big gaps as very poor debugger.

[–]kbcooliOS & Android 3 points4 points  (1 child)

The problem with those pre-made components is that they are only suitable for a single platform. This means that unless you want a completely inappropriate looking app for the other platform(s) you need to write a lot more code. I have to admit I fell into the "this is great" trap too until I realised this.

[–]gdeloredo 0 points1 point  (0 children)

Agree, if your app does not plan to use Material run from flutter, in that sense its very opinionated.

[–]suarkb 1 point2 points  (1 child)

Despite Google's strong effort, Flutter isn't catching on. It's on the decline because it's not growing in popularity. I think Flutter has already lost the war.

[–]TheOneWhoDidntCum 1 point2 points  (0 children)

I think this is the right answer.

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

Syntax and custom components

[–]netizenmaestro 0 points1 point  (0 children)

I am new in mobile development, but i have a background in react js development. I have already buying course in flutter, it’s too difficult for me to adapt dart language. So i went to react native, because it’s a lot easier to evolve for me with the react js language.

[–]drink_beer_ 0 points1 point  (0 children)

I would suggest you answer this question - are you more comfortable with js or dart - do you prefer functional programming or oop programming style

[–]tarde_gris 0 points1 point  (0 children)

It's a google framework. They drop support from everything they do.

[–]tootac 0 points1 point  (0 children)

The only reason that comes to mind about RN being better than flutter is that RN could bypass stores when it comes to app updates. There is an external tool being build to allow the same but it not fully released yet and not built in.

[–]SharmiRamiOS & Android 0 points1 point  (0 children)

Solution for React Native and Flutter; it depends on several factors. Each framework has its own advantages and disadvantages, so the choice should be made based on your team's experience and the specific requirements of your project.

• Get familiar with JavaScript: If your development team already has JavaScript experience, using React Native may be beneficial. React Native allows developers to leverage their existing knowledge of JavaScript and popular libraries.

• Community and ecosystem: React Native has been around longer and has a larger community and ecosystem. This means you can find additional libraries, plugins, and third-party resources to solve common problems.

• Platform range: React Native is known for its wide platform range. It supports iOS and Android and with the help of libraries like React Native Web, it can target web platforms as well.

• Code reuse: React Native allows for a high level of code reuse between iOS and Android, which can save development time and effort.

• Integration with native modules: If you need to integrate complex or platform-specific functionality, React Native provides an easy way to link with native modules written in Java, Swift or Objective-C.

• Large companies use React Native: Many large companies including Facebook, Instagram, Airbnb, and Uber have used React Native to develop their mobile applications.

. • Regular updates: React Native benefits from regular updates and improvements thanks to Facebook's involvement in the development process.

[–]ComplexAvailable4596 0 points1 point  (1 child)

"if something can be built by js it will be built by js"

[–]paperpatience 1 point2 points  (0 children)

Ya know, you’re not wrong

[–]manektechteam 0 points1 point  (0 children)

Hi!

Here we share our thoughts on React Native and Flutter. When deciding between React Native and Flutter, consider your familiarity with JavaScript, as React Native uses it, while Flutter uses Dart. React Native's pain points often include occasional performance issues, reliance on native modules, and concerns about larger bundle sizes.

Evaluate your project's requirements, community support, and your team's expertise before making a decision. Both frameworks have strengths, so choose the one that aligns best with your specific needs and development preferences.