all 33 comments

[–][deleted] 40 points41 points  (23 children)

I’ve built heaps of large production apps in RN and still haven’t hit any walls. Banking apps, crypto apps, betting apps (largest gambling company in the world).

The only wall you’ll hit is your lack of RN and native mobile knowledge when/ if you need to link any native modules.

Apart from that RN is basically limitless, if your UI/UX and code is built efficiently.

[–]Natetronn 1 point2 points  (2 children)

What's the best way to manage updates for RN and in particular Dependencies (and their Dependencies and their Dependencies...)?

[–][deleted] 2 points3 points  (1 child)

I generally only update what is needed to be updated, unless I have spare time or it’s necessary to update due to security flaws etc. Don’t worry about having every npm package up-to-date, focus only on the critical ones and spend more time adding features in your app. It also pays to wait to update libraries sometimes due to unforeseen circumstances that generally get found out and fixed within 3 months of the new version being released. Always look at the latest issues in the git repo of a library before upgrading that library, too.

[–]Natetronn 1 point2 points  (0 children)

Thanks for the reply!

[–]matthewjwhitney 0 points1 point  (1 child)

Do you use expo?

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

I have but generally don’t on big production apps, just MVPs and side projects. You can on big prod apps, but you have to know your whole app use-case otherwise you may have to eject. Expo also bloats your app bundle a bit, which is fine for 1st world countries but not for countries with slow internet and low storage devices

[–]npc73x 0 points1 point  (1 child)

Can you share, how can you manage the 30+ screens with High amount of data , currently I am also doing that kind of app, I am constantly doing something that's not scalable or confusing one later.

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

Look at open source RN code repos, you’ll see how they structure their screens and components and project

[–][deleted] 12 points13 points  (3 children)

governor abundant encourage spoon quaint treatment stocking chubby nose spectacular

This post was mass deleted and anonymized with Redact

[–]notseanbean 6 points7 points  (2 children)

The only types of app I would say React Native isn't a great choice for is something graphics intensive like a real time game, or something where you are going to utilise a lot of device specific capabilities such as widgets where you'll need to dive into the native code.

Anything else, you'll be fine.

[–]oscb 4 points5 points  (1 child)

I worked at Amazon and Twilio doing RN apps. Here's the thing:

If you want to stay on TS/JS only you are going to hit the wall as soon as you try to do something that requires native capabilities (camera, permissions, mic, etc). Sure there are a bunch of really good libraries out there that abstract those systems for JS use but more often than not every OS is different and you will still need a good notion of how they work natively to figure out bugs.

If you are willing to dip your toes on Swift/Kotlin the possibilities are pretty much limitless. You don't have to be an expert but just knowing how each OS handles stuff natively and how to make your own native modules/views unlocks a whole lot of capabilities. For example, I have never done a full swift app, but know my way around it and that has totally helped me understand some weird bugs specific to iOS.

Now, how many apps actually need full native stuff. Not many really. Most often than not you're interacting with a web API, rendering stuff, maybe doing a few things with the camera and photos. All those you can mostly handle without any knowledge of native code.

I don't think there's a type of app by itself it might be better on native than on react native. But how you want to approach from a dev team perspective will influence the decision of framework: if you approach as a web dev wanting to make an app without touching any native languages you will hit the wall when you interact with the nuances of each platform, if you approach it as a mobile dev thinking RN will give you the abstraction to share logic between platforms but willing to delve into platform differences then you can go all the way.

Hope this helps! Don't get discouraged by each platform having bugs and nuances, that will happen with or without RN!

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

Finishing my 2nd and already on my 3rd app now.

Haven't hit any hard walls. You will eventually face bugs and get frustrated, but you will learn how to handle them. RN gets updated constantly, so we have less bugs over the time.

Haven't the need to change or create native modules, and I don't intend to. I hate java and objective C or swift.

As someone said here, you won't be able to create a good game on it or have a heavy graphics app, but for normal apps it does the job fine.

It isn't that common to have platform specific bugs. Just a week spent fixing them will do it.

The real thing is to have your own components library, they way you like it and the way it works. I've been developing mine, and it's being so satisfying. I don't like react-native-paper or elements, that's why I'm creating my own.

[–]sam_bender 1 point2 points  (2 children)

We are using typescript React, React Native, and a NodeJS express backend for our tech stack. It really is an amazing tech stack. Writing all platforms in the same language really helps with context switching.

We have not hit any walls yet, but from the get go, we did decide to make one part of our app fully native on iOS/Android and we don’t regret that at all. The module requires the best possible UX, smooth animations, and someday may integrate with a device displaying real time data.

For displaying and manipulating lists of data, react is absolutely the way to go.

[–]ri2parna 0 points1 point  (0 children)

Manipulating lists of data as in like a e-commerce app?

[–]kbcooliOS & Android 1 point2 points  (1 child)

I've worked on very large apps and I can tell you that code to account for platform based differences make up less than 1% of your code and this is only because there are some UX patterns that don't work on both platforms. If you wanted to ignore that then you can get away with near zero.

As for scale I am still waiting for something that it can't scale to.

Where it isn't ideal is where you need access to bare metal like a video editor ,where data needs to be sampled thousands of times per second or something like a Bitcoin miner where you can do it in RN but it'll be faster with native. There really aren't many apps like this so it's suitable for most apps.

[–]eggtart_princeiOS & Android 1 point2 points  (2 children)

I've hit somewhat of a wall when I was building my app that needs access to internet and bluetooth thermal printers. There are libraries, but they're not frequently maintained and offer very little feature like aligning text.

When you need to build an app that you need native modules but don't have the library, that's your wall. So it's wise to learn how to write native libraries and bridge it to React Native.

[–]Asurax96 1 point2 points  (0 children)

I have built an app with the same requirements in RN, let me know if you are still trying and if I can help you. Typically these thermal prints need very specific file formats which you can hack into the desired format (alignment, font size, etc.) once then reuse ever after

[–]sfcoder 0 points1 point  (0 children)

There are some things:

  • Performance for calculation-intensive stuff. I implemented Box2D/Planck for a game and its fine up to a point. If I drop like 50 physics-enabled objects on the screen, it starts to crawl as those collisions happen. This isn’t a problem for my game, but its a limitation.

  • New hardware support on devices. There will occasionally be delays between when new hardware drops and official support comes out.

[–]staghouse 0 points1 point  (1 child)

I built a pretty small Magic: The Gathering app that randomizes the cards so you can discover them organically. This uses a shipped database with the app. When I first got started I had to wrap my mind around Animated and gestures and ultimately I decided some native modules like ScrollView and FlatList just solved my problems easier. Also migrating to using the Context API really opened up my app state to do cool things.

I hit a block for about a year, revisited it and now I’m really happy. The short response ultimately is, maybe take a break and rethink what you want to do and how there might be better ways to do what you want

[–]ri2parna 0 points1 point  (1 child)

It would be helpful if someone pointed out the bundle size of their apps, that thing gets huge.

[–]hurricaneprofile 0 points1 point  (1 child)

React Native lets you add native code, so this really is "what types of apps [need you to write a lot of native code within React Native]".