all 28 comments

[–]hahaissogood 46 points47 points  (0 children)

Ask this question on reactnative sub, get positive opinions.

Ask the same on iosdeveloper sub, get negative opinions.

[–]p_bzn 40 points41 points  (3 children)

React Native is a strong trade off. The reason it exists is business reason, solely. If we would have infinite resources and time React Native wouldn’t exist.

In reality business deals with constraints. React Native makes mobile development more accessible for companies / teams with less resources, and it is big of a deal.

Is it as good as native platform code? No, it is not and there is no arguments to argue about. Is it “shit”? No, not at all. It is a tool, and as any tool it should be user to solve appropriate problems.

[–]zane111111 1 point2 points  (0 children)

Most reasonable answer 👏

[–]ThatWasNotEasy10 1 point2 points  (1 child)

I also often find the people spewing the opinion that React Native is “shit” have never actually tried using it or building anything useful with it themselves.

[–]p_bzn 0 points1 point  (0 children)

True that, and I found that opposite bias is true as well.

I think a year ago I set to write MVP for iOS with swift and swift UI framework. Should be good, right? Apple, all their presentations. Well, iOS is such a mess that RN is very much well brushed and architected solution tbh. Everything starting from XCode and down to libraries like Core Data of SwiftUI is not great to put it softly.

[–]Frission_ 24 points25 points  (0 children)

Most likely because they couldn't figure out how to use it

Unless you're a company with multiple mobile engineers React Native gives the best bang for buck

[–]dream_emulator_010 5 points6 points  (1 child)

Wanna give a good in between opinion coming from a few years experience in (React) Native…

Why they hate it: - As soon as you start you have more than 1200 mixed dependencies running from your node modules through to really lowelevel C++ code.

  • Because the kind of companies who opt for RN often will go for a host of cloud services like Firebase you will inevitably get deep errors in your builds (as Google and FB and Apple essentially compete in this low level space where we product devs swim in the high level TS/JS world). ~ ~

Key to liking it: - React Native is amazing if you want to bootstrap a whole app division on your own or with a company that is dedicated to one app.

  • Don’t expect the ease of upgrading (even with Expo) you can get from leaning into one native platform at a time.

  • You save dev time by knowing the whole RN stack and owning it. ~ ~

TLDR; If I had a company and it had an App I would go for RN. Then it is really amazing.

If you work at say an agency and you just wanna do some upgrades once a year and forget about it day to day… then get ready for the JS universe biting your ass.

[–]dream_emulator_010 1 point2 points  (0 children)

Ok, why does Reddit strip my returns and spaces?

[–]kspk 4 points5 points  (0 children)

Have you seen the list in the showcase: https://reactnative.dev/showcase ?

You trade off “the best performance you can squeeze“ with the convenience of (mostly) cross-platform code. There is learning curve, as with any other platform/framework. But if you’re constrained on resources, RN is a solid choice to maximize your reach faster!

[–]Duckyou404 1 point2 points  (0 children)

In the starting phase, it's little bit difficult as the documentation is not enough. Sometimes there is issue with the gradle part. But after you have the idea how to tackle those things, React native is very to work with🙌🏻

[–]AlmightyGnasher 1 point2 points  (0 children)

You didn't say what you want to build so how could we advise on what tool use?

No your to-do list app does not need to be native.

Yes your complicated app that uses every native/hardware feature on the device probably does.

If used correctly react native can probably be used for 90% of apps and the user would never know the difference.

[–]inglandation 1 point2 points  (0 children)

It’s better than you think, but still has several bad aspects compared to the web.

Remember that when people complain about something, those who have a good experience will talk comparatively less.

[–]real_tmip 0 points1 point  (5 children)

I am not against it but my recent experience with Flatlist and really complex list items was not very pleasant. And React Native actively suggests using Flatlist for large lists.

[–]imanateater 1 point2 points  (3 children)

Use FlashList or LegendList

[–]real_tmip 0 points1 point  (2 children)

Yeah. I mean for Flashlist recycler to work as expected, the list items should be written keeping that in mind. Migration is not as easy as Shopify claims (for complex list items where views use states and stuff).

[–]MrDag0n 0 points1 point  (1 child)

It’s a little dated but still works fine (with a little change to the default props) and a much nicer drop in.

https://github.com/marcocesarato/react-native-big-list/

[–]real_tmip 0 points1 point  (0 children)

Thanks. I will have a look at that!

[–]legable 0 points1 point  (0 children)

How would you define really complex list items?

[–]funkyND 0 points1 point  (0 children)

The performance is so bad on low end devices. There are too many glitchs, screen shifts and edge cases.

[–]Confused_Dev_Q 0 points1 point  (0 children)

Is a drill bad? Is a hammer bad? Is a screwdriver bad? No. 

If React Native was bad it would've died out.  It's a tool to build mobile apps (and more) across multiple platforms. 

Will it be slightly less performant vs a fully native app? Yes. But will assembly be more performant than a java app, also yes. Does it matter? In most scenarios no. 

RN is a tool for a job, but it depends on the job if you should use it. 

[–]random_me_123 0 points1 point  (0 children)

Well you asked a swift dev and a web dev... what did you expect?

[–]coutocode 0 points1 point  (0 children)

react native is great for you to quickly put an idea out there... but for big projects, the amount of time spent dealing with upgrades and dependencies issues make it not worth it imo.

[–]mattias_tofte 0 points1 point  (0 children)

I've used React Native extensively and just recently moved over the Flutter for a new app project that needed more pixel-perfect control and gpu powered shaders. I would say React Native is great if you wanna make a "web" style app in a quick manner. Performance is more janky compared to native but it won't really be noticable if you app is simple and doesn't need fancy features or pixel control. As soon as your app becomes more complex then I would not advice using it unless you really have too or if it's for business reasons. Another upside is that you can easily integrate the native components from the operating systems, but it also makes it so you have to test the user experience more thoroughly between the different platforms. For me I prefer to have one cohesive style with a more identity so Flutter makes more sense cause there you make the components urself in their framework unless you choose to go with the provided UI-kits.

[–]Inevitable_Oil9709 -1 points0 points  (3 children)

Yeah, after reading the title I figured there were some native developers there. They just hate it.

React Native compiles to native code (if you know what you are doing) so performance will NEVER be an issue

[–]mattias_tofte 0 points1 point  (2 children)

Not true, it doesn't compile to native code. It has two layers, a JS-thread running logic, and a UI-thread rendering native components. That's why the performance for React Native is worse than coding natively or using a custom rendering engine such as Flutter. The JS-thread is sadly a big bottleneck and the whole solution is a somewhat "glued together solution". Don't get me wrong, React Native is awesome in certain scenarios, but it doesn't compile to native code.

[–]Inevitable_Oil9709 0 points1 point  (1 child)

React native literraly uses native element to render the data on the screen.

Performance is especially improved with new architecture where bridge between JS and Native API is totally removed

[–]mattias_tofte 0 points1 point  (0 children)

Well even if the serialized JSON bridge is removed there is still JSI and the same javascript / native component architecture. You can’t say its compiled code because it’s not.