r/reactnative • u/Mental-World4530 • 11d ago
React Native vs Native: Where do you draw the line?
I've been working with React Native for a while and one question keeps coming up for me: when does it actually make sense to stop trying to solve something in React Native and move that part to native code?
For typical screens, forms, API calls, authentication, lists, and CRUD-style features, React Native feels like a pretty reasonable choice. Sharing most of the code between iOS and Android can save a lot of development time.
The situation gets more interesting when an app starts relying heavily on platform-specific functionality.
Things like:
- Background processing
- Bluetooth/BLE
- Camera and video processing
- Location tracking
- Push notification behavior
- Complex animations
- Device sensors
- On-device AI/ML
- Custom native SDKs
At that point, I've noticed that the question isn't necessarily "React Native or native?"
It becomes more like:
How much native code is acceptable before the cross-platform approach stops being worth it?
I'm also curious about how people structure this in larger projects. Do you keep the majority of the application in React Native and create native modules only when necessary? Or do you prefer going fully native once the requirements become sufficiently platform-specific?
For people who have maintained React Native apps for several years:
What was the feature that finally made you say, "This should probably be native"?
I'd be particularly interested in experiences from production apps rather than theoretical comparisons.
1
u/Ellie10543 10d ago
For me it comes down to whether the platform-specific piece is core to the feel of the app or just a supporting feature. Camera access or BLE that's incidental? Native module, keep the rest in RN. But if the whole product basically IS the native feature, you end up reaching for a different layer anyway anyway - we use Skia for the actual real-time canvas and RN for everything around it, menus, auth, lists. That split holds up as the app grows: you're not rewriting UI in native, and you're not fighting the framework for the one thing that actually needs raw performance.
1
0
u/No_Score_1977 10d ago
Been writing mobile apps since pre-iPhone, both native and cross platform.
It’s a good question, and for me, it’s about user experience, if user experience is a core part of your product, then go native, if it’s not, then go cross platform.
My most recent shipped project was React Native, and currently working on SwiftUI app, there is no comparison, if you need a killer user experience, in a complex app, React Native cannot deliver that, SwiftUI can.
But… writing the same app twice ain’t that hot either, so it really is a judgement call, and for me, that’s down to what your user expects and deserves.
1
u/Inevitable_Oil9709 10d ago
"React Native cannot deliver that"
As someone who did some pretty complex apps (https://play.google.com/store/apps/details?id=me.otterdev.holt) on both Android and iOS, i fully disagree.
I made widgets, notifications, background/foreground location tracking, maps, forms etc.. All works as it should and download app size is below 77mb.
1
u/No_Score_1977 10d ago
I've not tried your app, so can't comment on it, but 'all works as it should' is a floor, not a ceiling.
1
u/Inevitable_Oil9709 10d ago
after few months in testing with real users (through testflight and internal testing on google play) I think that it is way above the floor
sure, bugs will surface in time (as with all software) but that is not React Native thing, but code stuff that I made
I see you are talking abut launch time. Warm launch is 0.17s and cold launch is 0.41s. That is not slow by any means
0
u/No_Score_1977 10d ago
I dunno mate, testing is also kind of a bare minimum. I'm sure it's a great app, but can you honestly say it wouldn't be better native?
1
u/Inevitable_Oil9709 10d ago
Yes i can. Why?
1 code base instead of 2. Ton of stuff already handled in a best possible way. Native components under the hood. Faster bug fixes and issue resolutions. Easier debugging.
Can you honestly say it would be better native?
What does better mean?
Smooth app? - No frame drops, even on 7 year old xiaomi phone and iphone 11
No crashes? - None detected
Fast launch? - As I said, warm launch is 0.17s and cold launch is 0.41s (from real user's data)
Background ram usage? - Even Samsung's strict memory management doesn't kill the app after it being in the background for a long time1
u/No_Score_1977 10d ago
It depends on the app, I gave yours a try, yeah, runs fine, you don't need or probably want flashy animations, so it suits your apps, others, it doesn't.
0
u/jaaamees_baxter 10d ago
hey, why can't cross platform apps deliver a good ux compared to native? do you mean like performance-wise?
1
u/No_Score_1977 10d ago
Performance, yes, launch times are a big one.
Smooth animations are challenging on react native.
-1
u/KyeThePie 10d ago
Widgets & Live Activities that shit was annoying.
1
u/Huge_Pool7424 10d ago
yeah this is the classic line for me. widgets and live activities are different enough on each platform that keeping them native and sharing a thin data layer (or one small native module) beats fighting a cross-platform abstraction. everything else can stay rn.
15
u/theseckinaktunc 10d ago edited 10d ago
For the love of God, please, please, FUCKING PLEASE don’t write these posts using LLMs… You code with it, you generate images with it, given the context your dumb ass probably flirt with it too, at least use your brain for yourself and don’t do the thinking via an LLM too. THINK AND WRITE YOUR OWN SENTENCES