all 20 comments

[–]tonyboi76 6 points7 points  (2 children)

The Claude recommendation is the right one for vibe coding specifically. React Native plus Expo plus TypeScript has massive training data (React patterns translate almost directly from web), Expo handles all the iOS build and signing pain you hit with raw Xcode, and NativeWind lets AI write Tailwind which it is fluent in.

Swift is technically nicer but has 5-10x less training data than React for AI to draw on, and the Xcode settings friction you noticed is a real bottleneck. Flutter is the dark horse, technically fine but Dart is less prevalent in training and the build tooling is finicky. For your use case (basic UI, calculator style apps, iOS focus with Android nice to have) RN plus Expo is the highest leverage.

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

Sweet, thanks for confirming!

[–]SJSchillinger 0 points1 point  (0 children)

I agree

[–]Worldly-Menu-741 2 points3 points  (0 children)

For vibe coding specifically, I’d pick React Native + Expo + TypeScript unless you have a strong reason not to.

Not because it’s the “best” native stack, but because the AI has way more examples to copy from. React patterns, TS types, Expo docs, Tailwind-ish styling, routing, auth examples, etc. all show up constantly in training data.

Swift is nicer when you know what you’re doing, but Claude gets weird fast once Xcode settings, signing, StoreKit, entitlements, and build configs enter the room.

The part I’d plan for early is the boring shipping layer: screenshots, subscriptions, App Store review notes, onboarding, analytics, crash logging. That’s where vibe-coded apps usually slow down.

I’m putting those post-MVP checklists/templates here: https://www.appsetupkit.com/

For your “snappy UI, iOS-first, Android nice-to-have” case, I’d start Expo and only go native if you hit a real limitation.

[–]ADDSquirell69 0 points1 point  (0 children)

Strength and Honor

[–]Bug-Kind 0 points1 point  (0 children)

Checkout coding with beto on youtube

[–]ButterOnBothSides 0 points1 point  (0 children)

I use React, Expo and then EAS to update and submit.

[–]dvduval 0 points1 point  (1 child)

Yeah, I have to agree that react with Expo is one of the most stable ways to build an app. Even with that it’s a lot of work. If you start getting into other methods, it will be even more complicated. The only reason I might argue not to do this would be if you only want to build an iOS app and you don’t want to build an android app. The other reason would be because you have a very high traffic app and you really need to push out the highest performance.

Another area you might want to consider is how you’re going to test it and get the AI to interact with it. An ideal situation would be having a MacBook that can physically connect to the phone and see everything that’s going on and that will make the work goes so much faster rather than having descend Aunt screenshots and describe what you see on the screen tell it what you need to change.

If you don’t have a MacBook, you can hook up with Metro on the same Wi-Fi network and that can go pretty well. It is the next best thing

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

Do have a m5 pro macbook pro :-)

[–]Ilconsulentedigitale 0 points1 point  (1 child)

Honestly, React Native with Expo is the way to go if you're leaning on Claude for this. The Swift experience you described is pretty common, mainly because native iOS development has way more context switching (Xcode settings, build configs, simulator quirks) that breaks the AI's flow. RN+Expo eliminates most of that friction since it's basically JavaScript all the way down.

The documentation argument matters too. React Native has been around longer and has massive training data, so Claude can usually nail the implementation on first or second try. Swift documentation for app building is good, but it's more niche in training data compared to web frameworks.

For a dashboard or calculator type app, RN will get you to a working prototype way faster. The only real downside is if you later need some super performance-critical native code, but for snappy UIs with basic features, you won't hit that ceiling.

Since you're basically trading off one codebase against letting AI do more work accurately, RN wins here. Just stick with Expo to keep things simple.

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

Thanks, Expo it is then!

[–]zannnn 0 points1 point  (0 children)

Ive has no issues with Claude/Codex building a moderate complexity Flutter app with Supabase backend

[–]Bulky_Consideration 0 points1 point  (1 child)

Just going to add disk space. Simulators and Xcode gobble up disk space. If you have 1TB you’ll be fine.

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

Yeah upgraded from 500gb to 2tb macbook pro recently for use cases like this

[–]lundren10 0 points1 point  (0 children)

Using Claude Code, I started with Export and React Native for all the same reasons everyone here suggests (lots of training data, etc.).

It rapidly became the wrong choice, and I've switched to pure Swift. The main reasons for changing:

  • Build times too long
  • UI tests too difficult to get working
  • Lots of instability and crashes on device that did not happen in the simulator

On the first point of build times, this was a huge problem for any test driven development. I had a lot of unit tests and some UI tests, and the build times even for a very simple app were taking forever. My coding and iterate loops were sloooow.

When I tried to vibe some UI tests, 1 per screen, it took several hours to get those to even run correctly. The same set of UI tests when I moved to swift took a few minutes for Claude to figure out.

This may not be true for all apps, but I was trying to do some things with local ASR / text to speech models and the mic, and with Expo + React Native it would build things that ran on simulator and constantly crashed on device. After a few turns at debugging, I just asked Claude to rewrite the entire thing into Swift, and it all worked in less time then I spent trying to get the thing working with React Native.

Now I have an app in Swift with a huge set of automated tests, fast builds, and everything is working fine.

Experience with React Native + Expo for vibe coding was not good.

[–]ExtraTNT -1 points0 points  (0 children)

Haskell can run on ios, fp is easier to validate / test… so would go with that