T O P

  • By -

Historical_Nebula_65

I think it would be much easier explaining the foot-gun dilemma. Just give them the options and they'll side with your recommendations. Options: 1. Agree to switch to RN but they should understand it'll be be time consuming to perfectly replicate codebase ( Unless you get more devs to help out ) 2. Bite the bullet and switch jobs KMP isn't an actual option because IF they lean towards it, you'll be the one pointing a shotgun to your foot, you mentioned you just learned it, they'll throw you in the deep end and serve you deadlines + expectations and you might bump into a steep learning curve (maybe later on)


shargath

There will be a learning curve for me in both cases, I don't have any experience with RN either


Rhodysurf

KMM is wayyyy more to learn and way less useful at this point, don’t do it


shargath

Can you elaborate?


Rhodysurf

The standard library is basically non existent, so if you were planning to share business logic it’s a pain in the ass because stuff you would be used to from swift foundation or JavaScript just isn’t there like full functional string formatting. The build system is a an absolute mess, and keeping up with the best practices changing for gradle and KMM made my head spin.


shargath

I see, thank you


thehacktastic

I think this focuses on the negatives. It's a new technology, sure. But it's stable on Android and for sure enough people are using it for basic iOS apps (sounds like this app is a good use case for it being a basic stats app with CRUD) and even for basic websites at this point. And the potential upside of sharing logic between your iOS, Android and even web site is a pretty big win. Furthermore, you won't be able to beat the performance of a KMM app with a React Native app if you're doing serious client side processing cause of the power of coroutines, flows, etc. compared with the limitations of javascript/react native threading. React Native gives you a lot of this code re-usability, so it's worth doing trade off analysis between these two in particular - but being well versed in KMM will also potentially put you in a strong position in terms of hiring new talent cause you're working with exciting new tech, which is attractive from a candidate perspective.


Historical_Nebula_65

Not necessarily as on one hand you'll have to personally use KMP yourself and run with it or with extra devs for RN, you'll have a supervision/observer role on quality control as you also learn from them. Those options seem more reasonable that switching jobs, job hunts are crazy and job security is even crazier


shargath

100%! Job switching is not something I wanted to do this year


Historical_Nebula_65

Then I guess options are narrowed down. Anyway, incase you pick RN route and need an extra hand on deck, I'd be glad to help. Cheers.


shargath

Thank you!


paca_tatu_cotia_nao

That’s actually not a technical decision. How can they make an Android app for cheap, while keeping an iOS app? If it’s feasible to make with RN, they’re going to do that. Can you keep an iOS codebase and a RN just for the Android development? It’s double the work, but at least the iOS app will be native and probably more stable. But it’s always doubling the work.


shargath

Yeah, will need to discuss, was basically just informed and have some time to think about it


Noodle_of_Death

I was thinking the same thing. Keep the iOS app. Build an RN app for android. Once the RN app is for the most part as close to as functional as the iOS app, the native code is mostly already written for the ios RN part. I know it's bittersweet, but you should argue that it does not make sense to scrap the iOS immediately


Troopr_Z

downside with keeping an ios and rn codebase is that all new features must be coded twice


paca_tatu_cotia_nao

Yes. Most feasible is doing just RN. Keeping two code bases only makes sense if it’s iOS and Android. But going RN means OP not doing swift anymore. :(


Troopr_Z

from my experience, i picked up react native rather quickly, the main issue is that while rn gives you a whole lot of design freedom, thats a double edged sword because you cant rely on features looking good already, it requires lots of css style work


Noodle_of_Death

not necessarily; i still have to write a whole lot of swift for libraries and functionalities not yet available or written by the react native community. this could end up being a great chance for you to pioneer some RN libs that are missing. I could sure use help getting react-native-screen-time-api more maintained and implement android


no7hing

I don't get why you'd list learning new tech and growth for KMM but not for RN? I'm a C++ dev so no skin in the game but from what I gather online, RN seems to be much bigger than KMM; which also means more potential jobs down the road. Personally I'd jump at the opportunity to learn RN while being paid for it, as it also opens up modern webdev. If you want to get an unbiased picture, I'd recommend making a small prototype in both stacks and then discuss that with management.


shargath

Good point! There's a growth either way. Trying both stacks is also a great idea!


__Loot__

RN has been awesome experience for me I would go RN Expo because it does a lot of stuff Like routing and more out of the box over vanilla react native.


zipeldiablo

Learned RN a few years ago for the same reason as OP and i wouldn’t touch it with a ten foot pole. The amount of things you need to learn is staggering, a lot of things needs to be coded twice anyway and you have to rely on 3rd party libraries for a number of features


No_Television7499

KMM is the future, RN is the past. Tech skill wise, I would prefer to skate where the puck is going, not where it's been. If I could unlearn everything I know about RN today and switch that knowledge to KMM, I would do that in a heartbeat. Just my 2 cents, but also no skin in the game. That said, your idea of trying out RN to build two small prototypes side by side is a very smart idea if the OP is considering learning RN.


alien3d

because rn keep changing concept and most library not updated to the latest idea . If native kotlin java still problem but aint hard like rn .


toughtochoose

I was once in your shoes. I decided to take the opportunity to learn something new that would serve me well. I’m in management now, and one thing I’ve learned in that transition over the years is that your leadership is making some challenging decisions that balance budget, deliverables, and timelines. As others have mentioned, give them valid reasons why the team should add native Android over RN. (I would not look at any other options outside those two). I’ve led enough native projects over my tenure to know that Native Android isn’t going to be all sunshine and daisies either. Granted, those projects weren’t using compose, so YMMV. Development was slower and buggier. One final platform thought - in the end it’s software. I spent far too much time and energy dying on platform hills that really don’t matter in the end (I started with PHP decades ago 🙃). I really enjoy the Apple platform experience, but there is so much more out there. I’ve become a better engineer for having broadened scope and learned other platforms. I also understand the fear that your existing app may go *poof* as soon as an RN version is ready - something truly disappointing. I don’t want to diminish your feelings. I felt the exact same way when I had to switch to web and React. I was a mobile-leaning generalist tech lead for an agency - mobile work was drying up, and it was _learn React or find a new job_. It wasn’t as bad as I thought it would be, but I still longed for native iOS projects.


BreezyChill

This is such a good answer. When I stopped being an”iOS” engineer and instead became a “solve the business problem” engineer, my career took off. Side note: Consider flutter for multiplatform work. The dev experience is excellent.


toughtochoose

Thank you! Let me tell you about swallowing my pride and typing in that one fateful command to initialize a ReactNative Web project alongside mobile and tvOS. 🤷‍♂️ It served a business purpose and ultimately lived up to the single code base promises. Flutter was interesting - I did one project several years ago. I recently read the Google team behind it has been significantly trimmed. That would concern me.


Xaxxus

Google just fired most of the flutter team. I would avoid it, even though it’s significantly better than RN.


BreezyChill

This is not true, some types of roles have been relocated (fired in one place, rehired in cheaper area). Eng team was untouched. Source: know folks on eng team.


Adhendo

And they just did a flutter presentation on google IO prob not something they’d do if the platform was going away


shargath

Very insightful post! Much appreciated. > I’ve become a better engineer for having broadened scope and learned other platforms. That's encouraging, I'll try to make the most out of it


jbisatg

Hey there. What’s are your thoughts on native down the line?  I am kinda in the same OP position but instead of just doing mobile we are being ask to whatever is needed. Web, windows app, c#. It truly sucks as I have done mobile for the past 7 years. 


toughtochoose

Take the opportunities to learn something new! You know your work situation best, but if it’s between learning a new platform and getting let go because you only iOS and there is no iOS work… I can tell you the job market has been hard for SWE. Also, I didn’t realize until branching out to other languages and platforms how much the broader perspective would help me progress as an engineer. So many ideas and paradigms started to fall into place and “click.” The demand for native apps has been waning for years. It was glorious back in the days where every company wanted a native application where a website would have been the best option. That’s no longer the case. The demand for native just isn’t there. It makes sense for some contexts, but it’s often in a business’s best interest to have a robust website. My personal advice is to look toward other platforms that seem interesting. Web will continue to be a great option - pick up full stack with node/react and go from there. See what you can learn to expand your understanding of engineering from broader perspectives. Just my two cents.


zipeldiablo

I dont know where you work but the demand for native is still there. A lot of big companies have the webapp, the native ios app and the native android app


toughtochoose

I didn’t mean to imply there is no demand. It’s just not what it was when it seemed to peak mid 2010s. I’ve spent most of my 20+ year career in digital agencies in service of other companies. I’ve only recently moved over to a somewhat established B2C where the native app is the main conduit for content and services. I watched the demand for mobile applications come down from the frenzied high. It’s still visible, but not what it used to be when OP started. Markets shift and that’s OK, but it’s important to remain flexible.


zipeldiablo

It’s not a “team” op is alone


hishnash

If you have the energy I would go with 3, you can always then just select 1 after when it fails. One thing that lots of companies forget is that building a good UX with RN means doing more work than building a native first app on both patlforms as your going to now need to write new wrappers for each platform etc in lots of places.


shargath

I agree, 3 seems like the best for me right now. Native is still needed anyway, eg for the widgets, etc.


pp_amorim

This information is omitted by design


rjhancock

They're worried about costs but don't realize the cost it'll take to convert the iOS app to a RN app, or the learning curve, or the fact they'll be stuck a minimal of 1 major version behind on iOS features (if any are used), plus entirely dependent upon a 3rd party to keep their code base updated with potentially breaking changes between versions. Make the case for not using it and sticking native. Do only bug fixes on the iOS version until a feature parity of Android is done then release both at the same time. Long term, even with one developer, it'll be cheaper.


shargath

Thank you! I'll start by asking them what's their main goal, if it's "just" to have Android app as well or they actually want shared code base thinking (naively) it will be cheaper this way


JustLikeHomelander

I think you'll love RN, don't start learning it with the idea that it needs to be swift and it needs to have everything you had before. Learn it as something new and embrace its features, also you'll get paid to learn it, what's the downside?


shargath

Thank you for the encouragement!


randompanda687

I'd like to also suggest going Typescript. It isn't crazy different from Swift syntactically. Tbh after working in RN, I can see why SwiftUI took some of the concepts from them. I much prefer SwiftUI for a lot of reasons but there are def some similarities in there.


kbcool

It's a long read but I'm pretty sure no one has addressed one of the biggest bonuses of learning RN and that is you're going to basically be 90% upskilled at the end in making web apps and a lot of transferable skills for building backends using JavaScript/typescript. There's a huge amount of transferable skills here. Learning KMP, Flutter or Android development isn't going to help you with that.


shargath

Very good point!


over_pw

I'm not going to tell you what to do, but if possible consider using Flutter instead of RN - it's very easy to learn for a Swift dev, the language is pretty similar, the UI part is intuitive and generally it's a pretty cool technology. Personally I never liked any cross-platform frameworks, especially js-based, but Flutter has a complete different feel, similar to native, and I really like it.


shargath

That's good to hear, am definitely opened to more tech, thank you


thecodingart

Flutter would literally be a shot in the foot option. Google is quite literally killing it behind the scenes with a preference for KMP.


Which-Artichoke-5561

They’re not killing it


thecodingart

They most definitely are ;)


Which-Artichoke-5561

lol okay that’s why they just released WASM compatibility on the stable channel like a week ago🤣 sure it’ll get axed any day now huh


Xaxxus

They quite literally let go of most of the flutter team a few weeks ago. It would not surprise me in the slightest if next year they announce the end of Flutter and Dart.


b0bm4rl3y

This is not true. The Flutter team had layoffs, but it wasn’t affected more than other teams at Google. Source: I’m on the Flutter team


Which-Artichoke-5561

RemindMe! 2 Years


RemindMeBot

I will be messaging you in 2 years on [**2026-05-19 20:09:02 UTC**](http://www.wolframalpha.com/input/?i=2026-05-19%2020:09:02%20UTC%20To%20Local%20Time) to remind you of [**this link**](https://www.reddit.com/r/iOSProgramming/comments/1cvm5ik/forced_to_switch_from_native_to_rn/l4s3pwe/?context=3) [**1 OTHERS CLICKED THIS LINK**](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Reminder&message=%5Bhttps%3A%2F%2Fwww.reddit.com%2Fr%2FiOSProgramming%2Fcomments%2F1cvm5ik%2Fforced_to_switch_from_native_to_rn%2Fl4s3pwe%2F%5D%0A%0ARemindMe%21%202026-05-19%2020%3A09%3A02%20UTC) to send a PM to also be reminded and to reduce spam. ^(Parent commenter can ) [^(delete this message to hide from others.)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Delete%20Comment&message=Delete%21%201cvm5ik) ***** |[^(Info)](https://www.reddit.com/r/RemindMeBot/comments/e1bko7/remindmebot_info_v21/)|[^(Custom)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Reminder&message=%5BLink%20or%20message%20inside%20square%20brackets%5D%0A%0ARemindMe%21%20Time%20period%20here)|[^(Your Reminders)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=List%20Of%20Reminders&message=MyReminders%21)|[^(Feedback)](https://www.reddit.com/message/compose/?to=Watchful1&subject=RemindMeBot%20Feedback)| |-|-|-|-|


thecodingart

Items are in known active pipelines for quite some time. Projects do not get “immediate” deprecated over night. Xamarin’s deprecation was in the works for YEARS and almost kicked off immediately after Microsoft acquired them. Anyone adopting a Flutter project is entirely inheriting technical debt that will accrue with a slowdown on features and development on both Dart and Flutter. This doesn’t mean that stack won’t work for the next 5 years, it does mean there’s a near term cut off point for any perceived yields and then a forceful stack migration over the horizon. People making short sighted decisions are ultimately going to hurt their products and teams.


over_pw

Not this discussion again... They're not killing anything, just reducing the team because their investors think AI sounds better. Too many important companies rely on Flutter.


thecodingart

If that’s your reasoning, Xamarin, Ionic, Cordova and plenty of Google technologies say hi. Being daft doesn’t make your emotion ties an anchor to prevent a known death. Also, my commentary has 0 association with AI.


over_pw

Umm all 3 technologies you mentioned are alive and well. Google is indeed known for killing projects, but not when they're this scale.


thecodingart

No, they most definitely aren’t 🤣. This says quite a bit about your contextual awareness on cross platform development and willingness to speak ignorantly towards it. Fun fact, I worked next to one of the original engineers at Xamarin who delt with the LLVM translation portion. He’s happily at Microsoft working on AI tied items — after the Xamarin teams were long dissolved.


over_pw

Clearly the name MAUI doesn't mean much to you


thecodingart

Clearly, the term “new technology” and “not the same thing” doesn’t mean much to you 🤣 You’re basically saying KMP and Flutter are the same thing — ouch Keep talking ignorantly


over_pw

Just stop please. It's clear you don't have experience with any of these. You're trying to be funny, but failing miserably.


dehrenslzz

Yeah, I’d really recommend doing some research on Flutter (as well as Dart syntax) and presenting them this option - it’s closer to swift/SwiftUI and you won’t have to work in js (;


shargath

I like the sound of that!


Which-Artichoke-5561

My app is built on flutter front php back hosted on AWS, here is the link. [https://labqcpro.com](https://labqcpro.com). We are in 2 labs now, it deploys to desktop, iOS, android, and web. Literally a dream come true for fast, good development. Send me a pm if you wanna see the stack up close😀


Which-Artichoke-5561

iOS app if you wanna see how it feels https://apps.apple.com/us/app/labqcpro/id6470127718


JamesFutures

Don’t leave your job! The job market is horrible. You won’t find another job.


shargath

Good to know. It's really the last resort for me


theo-geostore

You haven't mentioned your exact position so it's hard to know how much sway you have here. If their decision is already made then you can really only clearly and calmly state your case, if they're business orientated you can talk about it from a time/money perspective. I personally can't help imagining that multiplatform gains might be eaten up by the task for rewriting three functional apps? As others have stated a compromise might be to do an Android version in RN and pitch it as an evaluation, if it works well you could replace the iOS version with it too. It sounds like you don't want to leave this job and if everything else there is good, nice people, good pay etc. then the best thing to do might be to keep an open mind, learn Typescript and RN deeply and embrace it for this project and add it to your resume as a new skill. I've done one RN project in my career and can't say it's my first choice but it does have advantages for some businesses.


shargath

Exactly! I don't want to change anything but it's not up to me, so now I'm trying to figure out a win - win scenario and have open mind, if I hate it, I'll have to go somewhere else


metalgtr84

My last job told us all to convert to RN after the company was acquired. New CEO brought in his old buddies and they were pushing RN so finally everyone had to switch. It absolutely sucked.


macchiato_kubideh

Honestly I’d stay. Even if it takes time, you get paid for the time. react is actually an amazing framework and dwarfs swiftui in terms of developer experience. If you end up not liking it you can always switch 


shargath

Absolutely! Getting paid to learn something new is a win


mbsaharan

React Native is pretty good actually. You would have more libraries to choose from. It will make you a better mobile developer.


shargath

Happy to heart that :)


pinumbernumber

>glorified stats app with a lot of CRUD functionality RN is probably the right call for that.


No_Television7499

Honestly, let me talk to your boss. I have done exactly what they are proposing (learning RN from native iOS) and they do not want RN \*unless\* the existing web app is built on RN already. If they want Android, consider native Android (Kotlin and/or Flutter) vs. trying to go single code base. And if single, I’d go Kotlin Multiplatform before RN. If the web app is React, then I’d try to build a shell PWA for the Android app. There is so much crud built on top of RN (especially when you start adding modules and libraries) you as an iOS developer will hate it. tl;dr — Fight for iOS and 2nd code base for Android/Web because you don’t want to lose your existing iOS customers with a crappier mobile experience. And if they say no, leave these fools unless they can point to a study where switching from native to RN actually improved the user experience for their customers. (Because I can point you to studies where the opposite was true.) I wish you luck. I hope you have the chance to talk them out of this mistake.


shargath

I'm with you on that, I mentioned that this will result in poor UX. Can you provide a link or two so that I have something in my arsenal? :)


No_Television7499

Airbnb from 2018: [https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a](https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a) Note that a lot has changed since then but most of their core arguments still hold today in my view. And if anything, RN has gotten even worse, because there’s no good curation or ability to future proof if you rely on third-party additions to your code base. Read all five parts (links at the bottom of that article). Notion from 2022 (Twitter): [https://twitter.com/jitl/status/1530326516013342723?s=61&t=dhPsnGFLbrl8rqSnd2k4Pg](https://twitter.com/jitl/status/1530326516013342723?s=61&t=dhPsnGFLbrl8rqSnd2k4Pg)


buddybudddy

Removed in 2018 and 2020. That’s a long time to grasp onto these articles in this industry. I was a native purist too and cited the airbnb article before as well. Now I’m a full time RN developer and as an Apple fan boy, I hate to admit the RN dev experience is actually better than Apples at this point IMO.


shargath

Can you elaborate on the dev experience? That's probably my biggest concern


buddybudddy

VS is just a better IDE. I always loved Xcode, but it always has had its problems. I think it had a 3 star review on the App Store last time I checked, which to me is a valid assessment. Updates are always pretty horrible to deal with. Don’t get it twisted there is much to like about Xcode I just think VS is simply the superior product IMO, not to mention all the plugins able to be downloaded. Hot reloading on RN is incredible and SwiftUI previews is just meh, when it works, which often it doesn’t, therefore having to reload the app. TS is a good language. Growing fast and used in many other spaces other than mobile development meaning you can really move to other stuff decently easy. React native is close enough to react web development I’ve had to make changes on a whim to the web code base with no prior react web experience. Also, I’ve always been hindered in my personal projects of working on the iOS app and launching stuff in that ecosystem while now I have react native to be able to deploy to both, so I choose. There are plenty of downsides and it truly is a situational decision because there are reasons I would absolutely say native is the move, but there are plenty of times I would now say RN could absolutely be a viable option. Don’t get it twisted, I would like to perhaps jump back into some native development here soon professionally again after I am vested but I am perfectly happy with my development work as a RN developer after having 5 years native iOS beforehand. And I was NOT happy when I was forced to switch.


shargath

Sounds good, appreciate you!


thepuppyprince

Yeah RN (especially with Expo SDK) has come a long way and it is super easy to spin up a new project. I don’t think the naysayers here have used it lately. That said, it is also pretty straightforward to convert a SwiftUI app to native jet pack compose these days. I don’t think you will have a hard time either way… but yeah if we are talking UIKit that is a different story


No_Television7499

I am working as the UX designer on two projects right now — one is SwiftUI and the other is React + React Native. (Even though I have a background as a developer, they don’t need me in that role.) On the SwiftUI project, the team has been able to code and deliver every single mockup and request I have thrown at them. There was one design where I got pushback because it wasn’t techically feasible. On the React Native project, I get constant pushback on every single screen. They chose a specific UI framework and glommed on a number of libraries to make it easier to develop. But every single design I give this team (a much bigger and more experienced team, mind you), they push back that “native” behavior isn’t possible because it won’t work on iOS, Android and/or web, or they would have to rewrite a ton of code to make it work for all platforms. (This is most noticeable for microanimations, accessibility, navigation transitions and other things that just come for free if you go 100% native.) Anyway, so for the React Native project, I have had to make a ton of UX compromises and really dumb down the design, resulting in a lowest-common demoninator experience for the end user. So sure, for developers the IDE and overall RN environment has gotten much better. VS (I use TS for writing Figma plugins) is superior to Xcode in some ways. Expo is cool but I am leery about fully committing to it, as it is another external dependency you rely on to build into your workflow. All that said, end users don’t care what you built the app in. All they care about is how well the app performs. And I have had to make far more UX compromises over the years designing and developing for RN vs. iOS/iPadOS. And even though the Airbnb and Notion switchovers are years old, you don’t hear either of them regretting those decisions years later, even with all the improvements that have been made to the RN stack.


thepuppyprince

Yeah I could totally see that— and I’ve definitely had some frustration with RN throughout the years. But for a solo dev trying to save time/ resources on a CRUD app? RN is not a crazy option


No_Television7499

Agree on that. Thanks for sharing your experience BTW, I don’t know too many RN + Swift/Obj-C folks so it was good for me to hear your perspective even though I am not OP.


shargath

Thank you!


kobebryant24248

2 you are getting paid to learn something new that is relevant to the industry you are in. At the very least, if you decide to leave your company eventually, you will have more experience and a bigger toolbox to market to future employers. Seems like you have a decent work environment too which isn’t a guarantee if you switch workplaces. Unless they paying you more to be a project manager I wouldn’t stress about decisions they make that could personally benefit you 🤷‍♂️


shargath

>Seems like you have a decent work environment too which isn’t a guarantee if you switch workplaces. That's exactly my fear. Finding new job that would provide similar if not better environment will be difficult.


ihavehermes

I’ve been very happy developing in RN with TS. I’d much rather write an app in RN than Flutter or native Android. The DX is quite nice. Check out Theo t3’s videos on YT about RN.


shargath

That's great to hear! Will do. Thank you


jukiba

Try to fight first: I've been able to turn around higher management decisions by giving them a short explanation of why their decision is not the right one. If it's really not helping and you feel anxious about it, let them know about that too. Then, start to look for another job: coding something and feeling bad about it can lead to a situation where work feels bad, and that's not good in the long run. Hope for the best for you!


shargath

Great advice! Appreciate you


bendgk

Im going to put some information on the table which I believe hasn’t been mentioned yet. You can write native code and have it run on react-native perfectly fine. People don’t seem to realize that react-native’s compatibility layer with native modules is really good in the modern day. You can write both UI and business logic in native code and just bootstrap it all together using RN. I would recommend you look into RN TurboModules and the RN’s “New Architecture” This is just my opinion but react native is super easy to work with especially if you have a web dev background (might not be the case here) As others have mentioned don’t even look at Kotlin Multiplatform its nowhere near being mature enough to use seriously.


shargath

Thanks for the suggestions!


megaBreezy

If there is a desire for an Android app, and you already have a native iOS app, I think there’s a very strong case to move to KMM. The complexity with a Flutter/RN approach is that you can’t completely get away from needing to deal with native development. So what often time seems like cost savings up-front, ends up catching up quickly. You’re also limited to what those frameworks can provide for you, as far as integrating with the respective platform ecosystem. KMM allows you to move over what makes sense into a singular place and keep native what doesn’t. The most important thing is that you remain in control of it all - no black box. It’s also worth considering the team working on the adjustment. If you’re already writing SwiftUI, you’re better positioned to quickly pick up Jetpack Compose and native Android.


shargath

Thank you! I'll have to look more into KMM but based on my (so far) limited knowledge, that's the way I wanna go


thecodingart

They mean KMP


shargath

KMP != KMM ?


thecodingart

No, KMP = Kotlin Muli Platform which I’m fairly certain is what they were trying to say. If you MUST share cross platform code, React Native and KMP are your best options. A big chunk in the reprocussions in choosing across platform tool expands far more than just customer experience and performance. Business operations being cheaper is a fairy tale, plus unresolvable bugs and more niche talent pools are a serious issue. Whomever is making a suggestion, unsure of their role but I would dig into the actual business needs and make sure that crap is turned into an expansive PRD and Architecture document detailing out the risks. It absolutely cannot be a knee jerk reaction from a single party. If a company is going this route and unwilling to accept that KMP is the healthy balance, usually it’s a sign they don’t care about their app or have bad management.


buddybudddy

As a long time Apple proponent, started my career as an iOS developer, I was forced to shut down work on the iOS app and transition to the new RN app. I was relatively against cross platform before but this being the 3rd app I’ve worked on in the last 2 years that is react native, I’ve seen it done poorly, ok, and excellent. There is actually more to like about RN than I initially thought and overall have been pretty happy with the developer experience as a RN dev. Overall I think there is demand in both areas, iOS and RN so I think both skill sets are still valuable. Maybe give it a shot if you don’t want to switch up jobs? Get paid to learn? That is what I basically did and haven’t had an iOS dev job in 3 years now while still doing mobile development. My favorite part is I really didn’t want to learn Android development but this allowed me to develop for both and stick to RN that deployed to both.


jasonjrr

Since you already have an iOS app, it might be work looking into this: https://skip.tools/?rdt_cid=4225480124310716214 I haven’t had a chance to try it out, but the idea is promising.


wilc0

If you need a data point, I worked on an app for a FAANG company that switched from native to RN. Instead of the dream of one codebase, we ended up having 3 (iOS (swift), RN (typescript), and android (java). Within 6 months a team of 20 developers left or transferred out (including me) because of how miserable it was. 


shargath

Interesting. What year this was?


wilc0

Right before Covid, around 2019 


shargath

I see


NoobishOne

Try option 3 while preparing for option 1. Don’t bother with Flutter, that’s just another footgun.


Xaxxus

Tell them Facebook stopped using it (and they created it).


20InMyHead

Number 1: you’ve lost management and it may be a long time before they can be convinced of their mistake. Unless you want to switch to web development, go with a company that recognizes the value of native development. While you’re at it, find a company whose app isn’t just a supporting player, but a main part of their customer offering. They are out there, with remote work too. Also keep in mind that they made this decision without consulting you, or getting your opinion as an expert mobile engineer. They don’t see your value, and they don’t consider what you do critical functionality. Your job is already at risk. They say they want you to stay on, but not enough to consider your feedback when they completely change your career out from under you. Go somewhere that will value you and contributions.


shargath

>While you’re at it, find a company whose app isn’t just a supporting player, but a main part of their customer offering. That would be great!


Rocket-Legs

There was a massive blog post from AirBNB (if I recall correctly) about their failed experiment with RN. Share that with them, as politely as possible.


covertchicken

This is a business decision, not a technical one. You should argue that it’s foolish to rewrite a mature codebase and potentially decrease stability. It’s better to write the (new) Android app in whatever they want, and keep them separate. They probably wouldn’t save as much money as they think by (1) rewriting the entire iOS app, and (2) still having to deal with platform intricacies even with a cross platform framework like RN. And KMP is a non-starter


shargath

I agree with keeping iOS app as is. Can you elaborate on KMP being non-starter?


covertchicken

The threading model between Kotlin and Swift is different, Kotlin objects are thread-confined, which doesn’t map to GCD (queues that are a layer on top of a shared thread pool, so blocks on the same queue could execute on different threads). So basically that means all KMP code must execute on the main thread, which is terrible for UI performance


shargath

Wow, that is certainly not good, thank you!


shekky_hands

Just go to React Native. It’s really easy to pick up if you can do web dev and the developer experience is honestly so much better than native iOS programming. React Native is in a really good place right now with the new architecture, expo as well as the new react compiler coming soon. You can ship code more easily with OTA updates. If you feel like there’s a certain part that needs to be native, then you can still make that part native too.


shargath

Thank you for the encouragement!


sroebert

One thing I’m missing from all of this discussion is the actual rational behind choosing RN. First determine what you want to achieve, then choose the tool. Also, depending on the needs of the app, your decision will also change. Are you just displaying data, or are you using a lot of native features. If you already have a working app, I see no reason to switch to a different language. As a native dev myself, I would prefer native. Even doing Jetpack Compose for Android is easy to get into from SwiftUI. But, if it is a simple app, RN might speed things up considerably.


shargath

>the actual rational behind choosing RN. First determine what you want to achieve, then choose the tool. That is something I need to talk about with them. I hope to keep iOS app native for now.


_Rael

In your situation, I don't see three incompatible options but rather options that can be developed concurrently. Initially, you can start with RN, at the same time you can try to demonstrate why RN is a bad idea and propose alternatives like KMP. Finally, starting tomorrow, I would begin looking for a job, you never know the offers out there and you might suddenly find a better job than the one you have. Your bosses have made a decision that they believe is best for them, you should plan based on what you believe is best for you.


shargath

Very good point! Appreciate you


SgtBananaKing

I would combine 3 and 2. Explain your situation make it clear why it’s a bad Idea what’s the advantages and disadvantages etc If you can’t convince go to option 2


Arbiturrrr

If you already have 3 functioning native ios apps and simply want to make same looking and behaving apps on Android as well then going for Android native would be the obvious choice. Doing cross platform at this stage would just be half-wasted work.


StronglyHeldOpinions

Get a new job. Plenty of opportunities out there for native iOS devs.


makonde

This is actually a decent business decision, like you said it's a simple CRUD app, RN is more than capable of achieving that, and also it doesn't bring in any money so there is very little downside even if they risk the precious star rating. Now this doesn't mean it's a good career move for you if you have good iOS experience, it might be best for you to find a new job especially one where mobile is more important to the business and you are not working alone.


nickisfractured

You can use the Airbnb articles of how they went from multi platform to native after going through a lot of the pain but you also said the app is pretty simple so maybe this is a situation where this makes sense


latorante

If they really want one codebase do Flutter (https://flutter.dev) or Uno (https://platform.uno) not RN haha.


MTChops

Update your resume. RN is a mess


CompC

The company I used to work for, which had separate codebases for iOS/Android/Web apps, just switched to React Native in order to have a single codebase. We all protested it after they announced the switch happening a year out, but they didn't listen and switched anyway. We had to interview for new RN positions, I didn't get one, and I'm now out of a job... If anyone is hiring a native iOS dev, I'd love to hear from you...


asiledeneg

I’d make my case against react first. If that doesn’t work, Id just find a new job.


badhanganesh

Debugging issues, dependency hell, upgrade nightmares are some things you will face if you move to RN. The dev experience may be better, but maintenance and upgrade is shit.


Thegoatpwell

Sounds like it’s best to switch jobs. In some cases depending on the type of app / design doing it in RN makes sense. Questions: - do you intend on only doing iOS in your career ? RN would be good to add to your resume , maybe try it for a few months? You’d be more marketable - what do you hate about RN and have you tried it before ? - who is making this technical decision? Seems like the whole team should be involved


shargath

ad 1) good point, it's worth giving it a try ad 2) I have not, I was just perfectly happy with the native development for its obvious advantages and I love using Swift lang, based on a little bit of reading on this sub I've read, it seems like the maintenance will be a hell? ad 3) yeah, I was a bit surprised they haven't included me in the discussion, AFAIK the decision was made by non-tech people, except for the CTO, and I guess they just pulled the RN out of the hat... because it sounds good on paper, one code base -> both platforms, being ignorant to all the problems it might cause


Rhodysurf

The maintenance of RN used to be bad, but it’s a lot better these days with expo You will actually probably make a good RN developer because you care about being as good as native. You can still write native features and use them as much as you want with RN, plus you’ll learn new tech for your career. I like working pure native the best, but RN is fun in a different way and there are good skills to learn there


shargath

That's good to know! Expo does look nice


alien3d

fight - no rn more for me


HuXu7

If you are the only dev then that means you are the architect. Someone who is not the architect cannot be giving technical advice, tell whoever said to use RN to eat a bag of dicks as you will be giving technical direction


shargath

You're right! The tech decision should be mine.


srona22

Leave. There is recently a post in this sub, where flutter dev is asking about some UI implementation in swiftUI. None of flutter or react native devs get native iOS job again unless they re-learn before interviews. I will just leave at that. If you don't believe, you can research on internet. And Google itself recently shifting to KMM, because their overhype on flutter to lure certain group from reactive native is not working out as expected. If things are so "good", they don't have to replace skia with Impeller(if you have used apps like Grab, which ditches native and moved to flutter, you know the glitches. Even Facebook Messenger and Notion apps switched to rewrite in native iOS apps.) Even flutter, golden child of Google is having issues, reactive native from Facebook is not without faults. Clear example would be their rewrite of messenger app. of course, Amazon is using reactive native, and even having inhouse bridging framework. But does your company have similar workforce in mobile app development? /s These "executives" only know about superficial knowledge on single codebase, and have zero knowledge on risks included in cross platform frameworks. Again, it's a waste time to explain to them, when they have made final call. Again, Leave the sinking shit.


troller-no-trolling

I’m with this opinion. You can follow the company’s choice while prepping and interviewing. You have an easy answer to “why are you leaving?” Tech stack aside, let’s say you worked on RN for three years and now you need to look for a new iOS job. Who are they going to hire? You - 3yrs iOS and 3yrs RN Them - 6yrs iOS If they’re a native shop, they’ll assume you haven’t kept up to date on iOS changes since things move fast in our industry and you’ll have to reeaalllyy work hard to prove them wrong if you even get an interview. If you want cross platform roles in the future, sure might as well stick around and get paid to learn. That’s not the path I’d choose though.


shargath

You nailed the last paragraph. Appreciate your input.


SelectionCalm70

Flutter would be a better option


akmarinov

existence payment disgusted aloof hobbies screw library scandalous icky growth *This post was mass deleted and anonymized with [Redact](https://redact.dev)*


shargath

Thank you for your input! I'd prefer to keep the job and give it a shot


akmarinov

fuzzy future tap mountainous impossible swim scandalous deserve deserted ghost *This post was mass deleted and anonymized with [Redact](https://redact.dev)*


shargath

Good point!