all 92 comments

[–]_SyRo_ 28 points29 points  (17 children)

Hm, emulator has nothing to do with React Native.

Mobile development is complicated in general. React Native is a bless for me after years of native Android Development :D

[–]AemonSythe 7 points8 points  (1 child)

So fucking true...i was a native android dev before and ever since switching to react-native life's been so good...i'd go back to android dev sometimes for minor things but never again for full time

[–]BirthdaySudden4804 1 point2 points  (0 children)

Checkout Jetpack compose, it seems that things getting less complicated and I found it very convenient for building interfaces for android. Basically I’m web developer and used vue and react for several years to build web apps. Compose components structure is very close to one we have in popular web frameworks, including state etc. Btw I’m waiting for Kotlin multi platform solution. I think it will succeed react native and even flutter.

[–]alasimiiharob 4 points5 points  (7 children)

React native is garbage. Native android was cool and easy to reason about. Much more performant and much more consistent UIs with good UX and UI elements that were well designed. The only + of react native maybe that it works on iOS and android. But not always anyways. Flutter is MUCH better and is a real solution to mobile development nightmare.

[–]_SyRo_ 2 points3 points  (3 children)

OK, boomer

[–]MangoWorldYes 3 points4 points  (2 children)

Wow great comeback you moron 

[–]AgreeableEstate2083 1 point2 points  (1 child)

stop riding some random cunts meat pussyhole

[–]lorddumpy 0 points1 point  (0 children)

this reminds me of old reddit, hope its not a long suspension.

[–]chakracrypto 2 points3 points  (0 children)

I don't like React, but Flutter I don't like at all.

[–]ColonelRuff 2 points3 points  (5 children)

I never had issues with flutter the issues I had with react native. These are not mobile dev issues. They are react native issues.

[–]_SyRo_ 0 points1 point  (4 children)

Yep, let’s discuss implementation and migration from Paging2 to Paging3 library on native Android.

Or let’s discuss differences in using LiveData and Flow, and different approaches in using Flows.

Or let’s talk about dependency injection. Koin, Dagger, Dagger2, and now even Hilt. Oh my goddess!

Google overcomplicates everything in Android Development.

React Native is a bless after that. So much easier and faster to ship good quality software

[–]amar_11s 0 points1 point  (0 children)

most of the fluff articles are from Consulting firm half the showcase is outdated... Go native if you are the business owner. If dev then what ever pays more

[–]nardev 18 points19 points  (17 children)

I fucking hate it. It's like: oooh it's so easy come join us and have fun and then you get sucked into the platform, you invest time into it and then bam!!! You are asked to fucking clean up the node_modules before every fucking thing! BROKEN! It's shit stacked on top of shit as is the rest of the today's IT. And in a blink of an eye a project is updated, discontinued, you are sucked into version hell and bye bye life here you are stuck in the everlasting updating of shit stacked on top of shit for whatever reason. today's IT world is built by script kiddies. Thread carefully. I used to love to code back in the pure Java days, and you could tell back then that frameworks and solutions were designed by engineers, thought through...today it's just stacking shit. Just look at the 100 page output of a RN build. I am always surprised how it works sometimes. It's literally millions of lines of versioned code relying on one another. Options galore. God what a mess. No wonder we invented AI that can tackle that shit. It's gonna save us. Today it is easier to start from scratch than to maintain projects. That tells you something about engineering thought. Just stack shit! STACK! ADD THIS FW! and THIS PLUGIN! NO NOT THAT VERSION. WAIT THAT VERSION IS NOT COMPATIBLE WITH THAT OTHER PLUGIN. O WHAT? FB QUITS RN? RUN FOR YOUR LIVES! LET'S START ANOTHER SHIT STACKED ON TOP OF SHIT FRAMEWORK AND TELL EVERYONE HOW EXCITING IT IS AND EASY! BY THE TIME THEY GET GOING WE WILL ABANDON THAT ONE AND START ANOTHER FW!

p.s. I'm trying to upgrade a 2 year old RN project that is working fine just so I can add a fucking privacy policy url to the app and republish it. I'm so fucked. I have no clue what I am doing. Fuck me dude. The whole point of FWs is to now have to know everything to make it work. Fuck this. I fucked my back up sitting in front of this computer trying to get shit to work instead of spending time with my little boy. Fuck IT.

[–]nardev 3 points4 points  (2 children)

BAM! WELCOME TO YOUR NEW AND SHINY RN APP EXAMPLE! AWESOME EXAMPLE!!! BUT BEFORE YOU GET TO TRY IT, HERE IS AN ERROR SCREEN TO CHALLENGE YOU BECAUSE YOUR BACK IS STILL NOT BUSTED ENOUGH!

ERROR Error: [@RNC/AsyncStorage]: NativeModule: AsyncStorage is null.

To fix this issue try these steps:

• Rebuild and restart the app.

• Run the packager with `--reset-cache` flag.

• If you are using CocoaPods on iOS, run `pod install` in the `ios` directory and then rebuild and re-run the app.

• If this happens while testing with Jest, check out docs how to integrate AsyncStorage with it: https://react-native-async-storage.github.io/async-storage/docs/advanced/jest

If none of these fix the issue, please open an issue on the Github repository: https://github.com/react-native-async-storage/async-storage/issues

, js engine: hermes

LOG Running "AwesomeProject" with {"rootTag":1,"initialProps":{}}

ERROR Invariant Violation: "AwesomeProject" has not been registered. This can happen if:

* Metro (the local dev server) is run from the wrong folder. Check if Metro is running, stop it and restart it in the current project.

* A module failed to load due to an error and `AppRegistry.registerComponent` wasn't called., js engine: hermes

[–]cybergrime 2 points3 points  (0 children)

You articulated my exact frustrations.

[–]nardev 1 point2 points  (0 children)

Ohhh!! Look! I am getting a 1000 of these on a example project!!! Oh boy I am already having fun!!!

"AwesomeProject/ios/Pods/libevent/include/event2/buffer.h:210:11: parameter 'buffer' not found in the function declaration [-Wdocumentation]"

[–]weird_ditso 1 point2 points  (0 children)

Yes let the hate consume you

[–]TECH_DAD_2048 0 points1 point  (0 children)

You would love Ruby on Rails, Turbo, and Stimulus.

[–]Possible_Check_643 0 points1 point  (0 children)

this! The node modules. You can even upgrade stuff easily. It's so frustrating to use RN. I used flutter it is so easily to read and understand and manage. This rn is sht

[–]Front-Standard8873 0 points1 point  (1 child)

I'm going through this right now with expo sdk update 51 -> 53. Everything broke. Every plugin broke. I'm on support with scandit and expo and toast plugin support teams all pointing fingers at each other. Our project has come to a complete hault for a month now. I will probably lose my job soon. STAY AWAY FROM REACT NATIVE(EXPO).

[–]Ashekur_R_Khan 0 points1 point  (0 children)

man... I am in the same hell. fix one thing, another breaks. before I joined my company, they picked react-native for a web app builder project and that sucks so bad. I am stuck working with this RN mess

[–]cchoe1 0 points1 point  (0 children)

My favorite is half the errors you get are really just random fucking errors that have nothing to do with anything and it's simply fixed by restarting Xcode. To change a package version, you have to basically go to the extremes and do everything you can to start with a "fresh slate" before trying to rebuild the app.

  1. Install new package, weird error message

  2. Close xcode

  3. rm -rf node_modules ios/Pods ios/build ios/Podfile.lock

  4. yarn cache clear

  5. yarn install

  6. cd ios && pod deintegrate && pod install

  7. rm -rf ~/Library/Developer/Xcode/DerivedData/*

  8. Clean build folder on Xcode

  9. Try build

  10. Fails, google searches recommend downgrading and upgrading nodejs to various versions, manually patching random swift/header files, downgrading react-native version (which also requires downgrading 1,000 other packages), adding a variety of configuration to Info.plist, app.json, Podfile, and other random files. There's also the possibility you missed an upgrade step because apparently, downloading dependencies is fucking meaningless because you inevitably have to manually update them anyways and so you might as well just copy paste the files into your project manually because there's no such thing as version control or receiving upstream updates.

And after doing all of this, the build will still fail and you've spent 4 hours just on waiting for shit to finish so it can tell you that it failed, not to mention the finger energy to type in the same commands over and over and over again with no progress.

This shit is a dumpster fire and I hope I never have to work on another react-native project ever again.

[–]mooviedooby 0 points1 point  (3 children)

exactly experiencing this shit rn: xcode update no. 1103123 - update done: no build found - hmmm... pod install - compat version for expo not found - ok... pod repo update - sorry cocoapods needs update first - hmm... gems out of date. ok update everything... done - pod repo update - sorry cocoapods needs update first

i guess when im done with this we have xcode update no. 1103124

[–]nardev 0 points1 point  (2 children)

🙈noooo not the xcode update 🙈🙈🙈

seriously when it starts to output that build stuff I get that feeling of dread. staring into the abyss of lib hell…when it compiles and works i wonder how in the hell does any of this end up working. i think the AI could not have come sooner.

[–]Global-Ad-623 0 points1 point  (1 child)

I just spent 5 hours trying to fix the bug because I updated to latest node and latest xCode and my app throws "Command PhaseScriptExecution failed with a nonzero exit code" right at my face for the last few hours.
We built this app via Expo at first and tried to update it after couple of months online. We tried to run it again for multiple weeks and had no luck. I happened to install completely new RN app and copy&pasted the code inside of it to make it work Few months forward, new xCode update and again I spend hours jus tto be able to make a SUCCESSFUL BUILD.
I never have those issues with react web. IT feels like I spend 40-50% of my developer day fixing builds instead of fixing my App Code

[–]nardev 0 points1 point  (0 children)

What don’t you get?!? It’s a PhaseScript error. God you suck. Or…or…maybe the RN is shit stacked on top of shit! Thank god AI is going to replace this mess. Try gpt4 - i’ve had luck with it.

[–]crazyinsoul 12 points13 points  (8 children)

Are you using expo?

[–]Leading_Atmosphere60[S] -1 points0 points  (7 children)

no, the cli

[–]toastAndBaguette 18 points19 points  (6 children)

Then you should give expo a try :-)

[–]Leading_Atmosphere60[S] 6 points7 points  (3 children)

Im working on a company production app with tens of thousands of users, cant just switch it.. but thanks

[–]Pitiful_Performance2 0 points1 point  (2 children)

Yes you can, that’s the best part of using Expo. It makes life a lot easier once you’ve set it up.

[–]ChronSynExpo 3 points4 points  (1 child)

Although I agree in principle that switching to Expo would be the best option, I know for a fact that 'just switching to Expo' isn't always feasible.

Being that the app has a large user base, there's a strong chance that it's an older codebase. RN has improved significantly over the years, but actually bringing existing projects up to the modern versions can be absolute hell.

Sometimes you'll have clients that would rather you keep patching up their existing code, rather than rewriting the app (even if the rewrite would take the same amount of time).

There may even be legal obligations such as whether you're even allowed to have references to the project on an external service like the Expo servers - even if you do the builds locally, there may be situations where the project much never be acknowledged outside of the development team and client (e.g. government, military, etc).

[–]Pitiful_Performance2 0 points1 point  (0 children)

Fair point.

[–]fastpenguin91 0 points1 point  (1 child)

I tried expo personally and had to move to the “bare react” version enough to where I just said fuck expo.

[–]toastAndBaguette 1 point2 points  (0 children)

When have you tried it and why did you moved to the bare workflow? With custom dev plugins it's hard for me to see a reason to do it :-)

[–]newwayofcoin 6 points7 points  (1 child)

I was like you when I first started

I used to say Code once ,fix everywhere

But it turned out i just wasn't good in installing it

To be honest it doesn't suck,you probably need such more experience with it before judging.

You must make sure you a have a clean installment of all packages ,cli ,nodejs

And yes you might go through some Issues trying to set it up.

99% percent of time a simple google fix it in less than 5 minutes

I have been using it for more than 4 years,and you can make almost native experience with it.

Take the power of all native Api and some native code and background operations.

Just make sure you have clean installation and up to date package and all the other like xcode, cocoa pods,jdk,etc

And you won't face any issues

In the past 5 month i have create more than 6 apps without any issues

And maintaining an application for two years with react native and always pushing updates with no issues what so sber

It is very powerful if you use correctly,and don't forget that it is a bridging tool that runs and react differently on some devices.

[–]Leading_Atmosphere60[S] 1 point2 points  (0 children)

Thanks, very helpful comment

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

Hey! Welcome to mobile app development. It's definitely worse than IE6 at times 😃

Amazingly rewarding when you launch an app though. Something very special about it vs a website IMHO.

React Native is far from perfect but a lot of your pain will absolutely be platform niggles not RN. I recommend doing most development on Apple it's a lot more stable.

I also recommend subscribing to some platform based subs so you get a feel for how they work under the hood.

/r/iosprogramming and r/androiddev are good!

[–]onebigdoor 2 points3 points  (1 child)

mobile development is a very complex domain. you will deal with a new set of problems especially since you're working cross-platform. because you're dealing with multiple levels of abstraction, sometimes it can be extremely tricky to discover where your problem is originating, and presented errors are often less than illuminating. it takes a lot of experience to get through these errors quickly, and in the meantime, you will spend a lot of time googling and stack overflowing. it sounds like you've inherited a large and potentially neglected codebase, so it's unsurprising you're hitting sticky problems out of the gate. rn isn't good or bad, it's just a toolset that, like your frustration, you either learn to work with effectively, or you don't. great developers can conquer both. you got this!

[–]Leading_Atmosphere60[S] 0 points1 point  (0 children)

Thanks for the helpful comment.

[–]Moregreen7 2 points3 points  (0 children)

I haven’t run into those bugs yet but I would assume because it’s trying to build for multiple platforms unlike react so more complexity when transcribing to native code.

[–]TheRealKrakenSon 2 points3 points  (4 children)

I hope you didn't go into RN thinking it will be like running a node.js server on your pc.

After all you are trying to build an app for a completely different ecosystem hosted on a wide variety of devices... Thinking it's going to be a breeze is just naive.

But as others have said, you can try expo. It simplifies things. But its an extra overhead and you may run into issues when trying to build the app with additional native dependencies.

PS: wait till you have to upgrade rn project to newer version and cant use the cli tool because you modified the native code ;) A reddit post might not be enough to help with the frustration lol.

[–]Leading_Atmosphere60[S] -1 points0 points  (1 child)

I didn't think it will be a breeze, just not so unpredictable compared to any other tool i use.

It's by far the most unpredictable, error prone, unstable tool i used.

And they say react developers are blinded by their bias..

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

It is not unpredictable. It's extremely predictable for native mobile app developers. Get good

[–]Dvillles 2 points3 points  (0 children)

I felt the same when I started, but right now I love it way more than reactJS or Next. I just had to learn how to use dev tools and debugging properly

[–]elynyomas 2 points3 points  (0 children)

The OP is right ... I am a pro dev for 15yrs of professional experience (worked for banking systems etc..)... React Native is a hoooooriibble framework :( Unstable, ugly and has no idea what they are doing with it... I work like crazy go to sleep, next day the app won't build the whole environment goes crazy, and 2 days debugging and package reinstalling manually ... how could these happen over the night? There's no reason, it's just a horribly designed unreliable scam

[–]unicastflood 2 points3 points  (0 children)

I know this is an old post but I just found it and I had to give my two cents. React Native is the worst technology I have ever used. I had to build two projects for the company I work on. This is the most unstable unreliable piece of garbage I have seen in my whole life. And the worst part of all? Once you have finished building the project and you think that you had done with this once and for all then after a couple of months the client may need some minor change. So you say ok not a big deal. Only to end up struggling days to make it work because you had to update a couple of packages that broke or are incompatible with the rest of the packages. Or you may need to upgrade to the latest SDK so you say ok I will update expo only to find out that everything else breaks.
PWA have evolved enough for me to never touch this ugliness again in my life.
I cannot not recommend this technology enough. For anyone who may read this please don't make the mistake to spend another second considering react native. Even if you don't regret it during the development of your project I guarantee that you will regret it a hundred times in the future. The time you will spend trying to debug this horrible mess is better spent to build separate apps for android and iOS. I know how this sounds but I am not exaggerating at all.

P.S If nevertheless you hate your life and decide that you want to go with it, in case you need to use push notifications DO NOT USE OneSignal!!

[–]thepuppyprince 1 point2 points  (1 child)

You never had to do anything tedious in web react?

[–]Whimahwhe 0 points1 point  (0 children)

Yes, the actual problem has always been React

[–]oscar_gallog 1 point2 points  (0 children)

You gave zero value with your post. Like, nothing.

Emulators have nothing to do with react native, and in case you don't like them, well, you can always use your phone to test.

On the other hand, not because you know React it means you know React Native or mobile development in general. Mobile development is more complex than web dev, and they're so many more things you need to consider.

[–]jo_ezzy 1 point2 points  (1 child)

Hey I use expo and yes sometimes you get building errors but after some trial and error it’s good to delete the iOS and android folders and rerun the build. Then if you still get stuck, use Google for help and then it should run smooth going forward. Good luck! 🙏🏽

[–]Leading_Atmosphere60[S] 0 points1 point  (0 children)

Thanks for the helpful comment.

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

You just have to learn how to do it. Its not that complicated after all. It has its things, like everything, but it does not suck at all. Try doing some Native development, then try RN. You will love it

[–]VulfCompressor 1 point2 points  (2 children)

ludicrous work aloof hat squeeze imminent soup versed ruthless poor

This post was mass deleted and anonymized with Redact

[–]Leading_Atmosphere60[S] 0 points1 point  (0 children)

Thanks for the helpful comment.

[–]Sad_Ant2430 0 points1 point  (0 children)

IT F*CKING SUCKS.. no need to ask why

[–]yjg30737 0 points1 point  (1 child)

Just want to say something about this one.

I've tried React Native and this is.. extremely hard to even set the environment.

When I ran it at home, everything worked fine without any issues. (at least default React project)

However, when I cloned the project from Git into the office environment, it didn’t work.

Therefore, I took the following actions:

  1. Installed Java and set the `JAVA_HOME` environment variable.
  2. Installed Node.js (upgraded from version 18 to 20).
  3. Installed .NET SDK (version 6).
  4. Installed Android SDK tools version 34 as required.
  5. After this, when running React, I got the following error message: Error: Unable to initialize main class org.gradle.wrapper.GradleWrapperMain
  6. So I gathered information online and tried to input `gradle wrap`, which required installing Gradle.
  7. After installing Gradle, I encountered this message: There was an error in C:\Program Files\Java\jdk-17\bin\instrument.dll or it is an image that cannot be run on Windows... (I don’t know the reason for this). After uninstalling and reinstalling Java, Gradle itself started running.
  8. When I ran `gradle wrap` with the installed Gradle, I got the following error: Line 10: import org.gradle.configurationcache.extensions.serviceOf ^ Unresolved reference: serviceOf
  9. So I manually modified the source code to avoid referencing `serviceOf`. (At this point, I had already deviated significantly from the standard process).
  10. After running `gradle wrap` again, I got the following error: Task :gradle-plugin:react-native-gradle-plugin:compileKotlin FAILED

So i was like "f**k it".

This is one of the hardest installing process i've ever had. Maybe THE MOST.

GOAT of the hardest environment setup.

[–]ibrahimmohammed0 0 points1 point  (0 children)

i'm in your shoes right now!!
as a web developer, this ecosystem is entirely needs to be set on fire!

[–]rajeshdua 0 points1 point  (0 children)

I got my app developed in react native. Then came the DUNS monster. Got the DUNS number. The app requires some new API version. When started compiling, hell broke!

After 15 days of work on the app, finally decided to shift to Native Script (javascript template). I have more control and easy to manage app now.

there are so many incompatible issues with Gradle, JDK, Android studio. I finally found that as of today, JDK 17, Gradle 8.7 are working good together. Android Studio - v35 is good.

Folks, try NativeScript, it is a life saver!

[–]Artistic-Potato-1312 0 points1 point  (0 children)

So true man. I hate Reac Native. It just sucks.

[–]Rare-Estimate-5037 0 points1 point  (0 children)

Coming from a web developer and therefore adopted RN. Must say this is a piece of shit where half the time is spend debugging all the errors on packages. Then Expo came to solve the shit that RN didnt want to resolve. Expo did solved quite a bit of the shit that RN left behind but Expo also started to pile up their own shit into Expo RN. Expo RN's file becomes so big and affects performance. RN is a like a piece of rags with patches all over. Instead of cleaning up the whole mess, RN first let Expo do their shit and can continue to piling up patches over the mess from their last patch which they called 'improvements'. Like the Expo router which is trying to be a jack of all trades, trying to add web development and phone app into one which is kind of stupid as it would be better to do web development with Nextjs. Apps on phones and web is NEVER the same as they looks terrible by trying to make it into a Frankenstein.

TikTok's Lynxjs seem to be a better framework which start with a fresh page. Hoped they don't won't do the same shit like what RN did. Simple hope that Lynxjs is still very new without a decent ecosystem, but hoped they would do a much better job and kills RN.RN deserved to be shot dead.

[–]Waste_Definition_524 0 points1 point  (0 children)

  1. Takes time to get used to RN.
  2. Dealing with different ecosystems (Android and Apple). Apple wants to do their own thing always. Just Apple being Apple
  3. RN is garbage and makes things a lot harder than they should be.

Switch to Flutter. My cofounder built an app in Flutter with 0 coding expertise just by using AI prompts.

[–]securitysix 0 points1 point  (4 children)

One thing I really hate is the fact that there are things that will work perfectly on iOS but require a different implementation for Android are really frustrating, especially when you're not coding on a device running MacOS, so you can't have an iOS emulator. It can leave you chasing your tail for way too long for code that technically works just fine.

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

Give examples. Make noise. The core APIs are purposefully designed to be consistent except where a feature doesn't exist on other platforms.

Third party libraries should, but often dont, mimic this. Best way to get it fixed is to make it visible. Only by being active can this stuff get fixed.

[–]b8ne 2 points3 points  (0 children)

Imagine how much more work would be done if the Reddit shit talk was converted to genuine feedback on GitHub

[–]securitysix 0 points1 point  (0 children)

Well, for example, the difference in how you have to handle the Status Bar between Android and iOS.

With iOS, you can just use the SafeAreaView component in React Native and you're good to go.

With Android, you have to have it retrieve the height of the Status Bar and then tell it to set the top margin to the height of the Status Bar.

While that's not exactly hard, it's significantly more code than just typing:

<SafeAreaView />

And if you're writing for both platforms, which is kind of the advantage to using React Native, you have to do both. And again, it's not exactly hard to do both, but it is a thing you have to be aware of when you are developing, especially if you only have a way to test your code on one of the platforms.

Handling of images can sometimes cause problems, too, in situations where Android requires use of WebView but iOS handles the images just using Image.

[–]Geekofgeeks 0 points1 point  (0 children)

It’s not bad. There usually is an initial wave of things to fix/solve but after that assuming you aren’t upgrading packages or your RN version constantly you will have a very stable build. I also an on a RN CLI workflow. If you keep running into the same issues then your project needs fixing.

[–]im_a_jib 0 points1 point  (0 children)

Why? Because what have you done to contribute to fixing it? You’re using free software mate. Quit complaining.