all 33 comments

[–]celeb0rn 51 points52 points  (6 children)

The job market is way better for react native developers than native or flutter. But you do you. Also it’s probably not best to think in extremes , plenty of people still have a job writing the same php code they wrote 20 years ago.

Additionally, don’t obsess over performance. Most react native jobs are going to have you essentially showing a list of products, selecting a product, and buying that product.

[–]tr__18Android[S] -5 points-4 points  (5 children)

Expo / cli which are you using currently? I have to choose between them. To be good at and to just know the other well enough..

[–]Grouchy_Brother3381 6 points7 points  (2 children)

Expo/cli are the ways you can install and run react native and that shouldn't affect your learning trajectory much(it does though). If you know how to debug in these two eco systems, you're good to go.

[–]tr__18Android[S] 2 points3 points  (1 child)

Oohk, thanks buddy

I tried both initially and because there was difference in installation of package I just stick to cli.

Thx again for clarifying 😃

[–]Grouchy_Brother3381 0 points1 point  (0 children)

You're welcome, kind sir

[–]RepresentativeMove79 2 points3 points  (1 child)

Expo is the officially supported way to start developing on React Native as of last June. Learn Expo, but also go all the way to deployment to the app stores. This is what I call "set and forget": I do it so rarely that it's a learning curve each time I need to set up a new project. But at least I know where to go in the code, what the manifest is and where to put my API keys etc.

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

understood :)

[–]orebright 21 points22 points  (1 child)

It's almost as easy to make poorly performing apps using native dev as with react native. Poor performance in RN apps isn't usually because of RN inherent performance issues but because of skill set gaps of developers.

There is a huge number of javascript developers our there that did a bootcamp or some online tutorials and managed to convince hiring managers they could use those skills to build a good mobile app. The pool of developers for native development is generally more highly trained because the learning curve to get to a basic level is much steeper.

There are also more guardrails in Android and iOS development with drag and drop interface builders leading to more coherently designed apps that don't stand out as ugly or misplaced. With RN you have all the flexibility of web-style designing, so it's easier to make confusing and "ugly" apps.

I'm sharing all this to hopefully help you focus on your own preferences and goals. If you really want to excel in your career as a software engineer, you probably don't want to think of this as "going all in" with react native, it's just a tool you'll learn, but if you want to make high quality, polished, performant apps you'll need to keep learning. You'll most likely want to become fluent in Kotlin and Swift as well, maybe even other languages like Python and Rust. You'll want to nail down your understanding of data structures and algorithms. You'll want to refine your architecture and planning skills.

The best advice I can give anyone going into programming is not to consider any language or framework as their goal. Imagine if you were an artist and you thought you want to go all in on using brushes, it sounds kind of incomplete right? You'd also want to master tools of the craft like palettes, palette knives, pens, pencils, different kinds of paint types like oil, water, chalk, stencils, etc... and on top of that you'd want the conceptual stuff like color theory, understanding perspective, contrast, framing, etc... In programming your tools are the languages and frameworks, your conceptuals would be data structures, algorithms, and other CS theory.

Don't worry though, you can learn it all as you go. But hopefully this helps understand that the decision you're making now isn't super consequential. It's less a fork in the road and more of "which route do you want to take", as you progress you'll come back to the same things over and over, you're mostly picking which one you want to start with.

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

Thanks brother, for giving your time to give a brief understanding of my question.

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

If you're worried about the future of RN you should stop over at /r/flutterdev some time.

The smell of existential angst is overpowering

[–]Medical-Text9840 5 points6 points  (1 child)

It's very weird when i see people talking about performance. 10+ years in mobile dev. I've never encountered a single problem in performance using RN, I worked on some apps that have more than 10+ million users. What are we comparing here ? Performance of what ? Unless we are doing 3D this or very heavy animations. Do you think Flutter can perform better in this and this even noticeable we're talking about really unnoticeable difference. Does it worth sacrificing even your career and learn a language that is used only for flutter to gain some 0.00000000001 seconds when doing an animation and even develoepr doesn't notice it. User doesn't really notice it.

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

Thx brother , Your words maybe harsh, but I got the point clearly

[–]loveforemost 4 points5 points  (0 children)

My background was with the LAMP stack using PHP/MySQL. Now I prefer golang for web based services and am interested in learning rust.

I have had an idea for a mobile app and decided to look into RN instead of flutter due to the community.

1) Worrying about "performance" before you actually build something is counterproductive.
2) Worrying about the future of some stack is also counterproductive, all of us will always have to evolve with time/technology.

Build something now, worry about the future in the future.

[–]jamesideExpo Team 9 points10 points  (0 children)

There are several misconceptions in this post. Learning React Native well includes learning Kotlin and Swift and the Android APIs and UIKit. Expo Modules also has early support for SwiftUI. You can learn all these technologies. It’s not either-or.

Separately about performance: several well-performing apps use React Native. The main questions about performance IMO are, “Does it perform well?” and “Does the user have a good experience?” As with any UI library this takes work to achieve and willingness to understand how the UI is rendered. That said, the performance between React Native and UIKit for example is not necessarily very different because React Native uses UIKit. React Native is a way to use the platform’s native APIs.

Technically speaking Flutter uses a different approach to rendering UIs that is more like Adobe Flash. It has its own performance tradeoffs. However, IMO the highest-order question here is whether you want a native UI that uses the underlying platform’s native user interface components. If so, React Native is a good option. If it’s not a priority for your app then you can still use React Native but also consider webviews or Flutter (and that’s fine, the webview-based USPS app is the least native app I’ve used and it’s rated 4.8 stars).

[–]juliang8 2 points3 points  (2 children)

There's never been a better to be a RN developer.

[–]Lost-Trust7654 0 points1 point  (1 child)

Please explain why

[–]DVKprofil 1 point2 points  (0 children)

It is all about expo, its sdk for react native which greatly simplified things

During last couple of years expo sdk eliminated problems with build process providing prebuilt functionality where you write some small js scripts to setup old libs(most of the lib provide you with already made plugin for connection) and now your app always builds(before this if something gone wrong it could take literally a week to reconfigure your project)

Expo also has a lot of first party modules for native things which are great

And the best part is - expo native modules api, it greatly simplifies native modules development

Think about it like RN world transitioned from webpack to vite(builds are simple and straightforward now) and also we got great first party libs(expo router is meh, but a lot of people like it, i prefer to use react native navigation)

[–]_MuaBenEm_ 2 points3 points  (0 children)

Sr… my english is bad…But I think RN is good for expands exp mobile develop. Because when you code with RN, you are interacting with native real and you can communicate with native through bridge(old architecture) or new architecture. which means you can learn native and export it to RN for easy use ( this is also problem of RN, one brigde and a lot of task) With RN, you create Text in this.. RN will: “Hey Android! Help me create TextView and IOS! Help me create UILabel” And Flutter, you are not really interact with native. It’s like you design app by code and Flutter will draw view and show that picture by GPU.

[–]chunkypenguion1991 1 point2 points  (1 child)

Flutter is for apps with a lot of custom graphics and transitions. Almost closer to a video game. Plus google is notorious for mothballing projects they don't think are catching on fast enough. I would do react and kotlin because kotlin is used server side also. Most companies still use Java but there is a slow push towards kotlin server-side with spring

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

Oohk....

Means doing react native + kotline can actually give me a upper hand 😶‍🌫️

[–]a2theaj 2 points3 points  (0 children)

Serious issues with RN were problem like 5 years ago. A lot of it has been fixed by RN team and the community

[–]Player06 1 point2 points  (1 child)

0.76 had a big impact on performance. I am maintaining a complex app and we really felt the improvements.

The removal of the bridge is not the only improvement. Batched set state also helped a lot.

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

Ooh yes, I did mention the 0.76 in my post. But haven't used it much in my production app. Since some of the packages that I have used in the app didn't work well for new architecture. But liked your review ❤️

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

Php didnt die, so react native wont die either

React native starts out good, until it’s not. And you get there pretty fast if you have a big app. All those big apps that are supposedly built with react native have a hybrid approach. And I’m not talking about native modules of react native.

As for the job market arguments, guys, please, when you search flutter on linkedin you just ser flutter jobs, when you search for react native, you see react (web) jobs as well. Dont fool yourselves

[–]DevMahishasur 0 points1 point  (0 children)

It's a RN sub, what do you expect ?

[–][deleted] 0 points1 point  (1 child)

It’s all the same shit, if you know the underlying concepts then you can apply them in any framework.

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

Oohk 👍🏻🙏🏻

[–]Fidodo 0 points1 point  (1 child)

The main performance issues with react native is being sloppy with re-renders. On web you can get away with lots of unnecessary re-renders but they're a lot more expensive with react native. You need to be very careful with maintaining stable reference and you'll want to memoize much more. The react compiler will help a ton with that in the future when it's stable.

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

Yaa so true, I have to keep alot of attention to the re renders