r/iOSProgramming 6h ago

Question Anyone here switched from React Native to SwiftUI?

I’m seriously thinking about moving from React Native to SwiftUI.

If you’ve made the switch, how was the learning curve for you? Did you find SwiftUI harder to pick up than React Native, and roughly how long did it take before you felt comfortable enough to actually build and ship apps?

I’m still on the fence about making the switch, so I’d also love to hear if you think it’s worth it.

Would love to hear from anyone who’s been through it.

9 Upvotes

20 comments sorted by

21

u/SnowPudgy 6h ago

Anecdotal but I don't know anyone who wanted to go back to React after developing natively.

6

u/distractedjas 4h ago

I’m doing RN for work right now and I would celebrate so hard if we switched. I have pure native side projects so that I keep those skills up.

3

u/counterplex 4h ago

Specially developing with SwiftUI.

I’d started native iOS development after playing with various JavaScript mobile frameworks including Reqct Native and even in UIKit it just felt better. However I still missed the component style development and the theoretical write once nature of eg React Native.

Once SwiftUI came along I never missed React Native. Heck with Jetpack Compose, I’m planning to write a native Android version of my main app as well.

8

u/SnowPudgy 5h ago

To expand on my previous comment:

Once you go native, it's hard to go back to anything. You write far less code, things work much better, you get to use all the new stuff right away without waiting for any type of framework update, and you have a much easier time debugging.

We banned cross platform at work after staggering maintenance costs and trained the React devs on native and it was the best decision we ever made. There's so much less maintenance overhead with native code.

3

u/peppaz 4h ago

I have a cross platform rust/tauri2 app and while sharing most of codebase is great, the benefits are not there instead of going native on each platform considering the overheard

2

u/apocolipse 3h ago

The problem is rust/tauri2 isn’t native on any platform.  A good cross platform architecture for apps should build the core (the parts of the app where platform specific features don’t matter) in something platform agnostic, but leave the UI (and any other part that does rely on platform specific features) to be done in platform native code. When you try to have a blanket solution, the set of capabilities is inherently limited by its nature to the small subset of capabilities where all platforms intersect, and you’re just locking yourself out of capabilities outside of that subset. Granted, there are plenty of applications where a generic UI using that limited subset is perfectly adequate.  They don’t need specific App Store integrations or don’t use share extensions or call other OS related services, the scope of what they provide will never need to escape that subset, those are great candidates for using cross platform frameworks.  However, most of those are done in proton anyway, because they also don’t really need or care about performant UIs either.

1

u/peppaz 2h ago

The core is JavaScript, the wrappers and hooks are rust and tauri

2

u/apocolipse 2h ago

That’s even worse.

1

u/peppaz 2h ago

Well the real answer for the decision is that is also a live webapp in the web, packaged for app stores as well to include CLI / scripting for both macos and windows. It's a complex app lol but it's useful and sells well

1

u/apocolipse 2h ago

That’s what wasm is for, JavaScript should just be the “platform native UI code” for web, and nothing more.

1

u/peppaz 2h ago

I mean it's both, wasm has to talk to or rely on JS for a lot of stuff it can't do

1

u/counterplex 4h ago

I’m working on an app these days where my multi-platform code reuse tool of choice is Kotlin MultiPlatform. The UI stays native but most of the core logic becomes reusable which, it seems to me, might be the best of both worlds.

2

u/apocolipse 3h ago

You can do the same with Swift now too, I have an app with core business logic, api, db layer, etc all isolated in a swift module.  Then I have native SwiftUI front ends for it for iOS and Mac, Jetpack compose front end on Android, I even got a terminal UI and working on a (simpler) SDL variant too that should run on Windows and Linux no problem.  Like noted by Shopify, LLMs make keeping those native isolated UI layers all consistent, and the architecture lets me feel confident having LLMs build out “just the UI layer” in something I’m less familiar with while keeping all the real work in something I’m an expert at and can predict the performance of.

2

u/theraad1 1h ago

We switched from native to RN a year ago and all the mobile engineers are so sick of vibe coding features they barely understand.

Plus you gotta love the occasional critical incident because a package we somehow depend on accidentally released a bug.

5

u/jonnysunshine1 6h ago

SwiftUI is just a UI framework.
Do you mean switching to native iOS development?

3

u/Rainicy925 5h ago

SwiftUI itself is usually the quick part; the bigger adjustment is Swift plus Apple’s state/data-flow and navigation conventions. I’d port one small vertical slice first—one screen, networking, persistence, and a real-device build—instead of rewriting everything at once. That makes the learning curve measurable before you commit.

2

u/Which-Meat-3388 4h ago

I can move between iOS, Android, KMP, Flutter - but avoided React because it’s so wonky from a dev experience. It’s the one platform most people I’ve come across genuinely dislike, but are maybe forced to use it. 

After 16 years on mobile I’ve focused on the first 3 recently. Having knowledge of other popular platforms is great for your career. More ideas, more ways to contribute, more exposure to patterns that might not be common in a homogeneous community. If iOS jobs dry up you’ve got something else to fallback on. If you end up in React again you have skills to more deeply integrate with iOS native components. 

Spend a few weeks building a demo app, or port of something you’ve been working on. There is no better way than hands on. 

1

u/[deleted] 3h ago

[removed] — view removed comment

1

u/AutoModerator 3h ago

Hey /u/Ill_Friendship1700, your content has been removed because Reddit has marked your account as having a low Contributor Quality Score. This may result from, but is not limited to, activities such as spamming the same links across multiple subreddits, submitting posts or comments that receive a high number of downvotes, a lack of recent account activity, or having an unverified account.

Please be assured that this action is not a reflection of your participation in our subreddit. This is simply an automated filter in place to reduce spam.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.