Verdict up front: If you need iOS + Android with one team and one codebase, React Native saves 30-40% on greenfield. If you need iOS only, or if your team is iOS-native already, Swift is faster to ship, easier to maintain, and gets you the latest Apple features (Liquid Glass, Foundation Models, App Intents) on day one. Don't pick React Native for an iOS-only app — that's the most common mistake.
The bridge: why it still matters in 2026
React Native's classic architecture uses a JavaScript bridge — JS code on one thread, native code on another, messages serialised between them. The new architecture (Fabric + TurboModules + Hermes) replaces the bridge with JSI (JavaScript Interface), which lets JS call native code synchronously through a C++ interface. This is faster.
But: as of early 2026, most React Native apps still aren't fully on the new architecture. Migration takes 2-4 weeks for a typical 50-screen app. Until you migrate, you're paying the bridge tax on every animation, every scroll, every native module call. We've seen apps with visible frame drops on iPhone 11 that disappeared after Fabric migration.
Hermes vs JavaScriptCore
Hermes is Meta's JS engine, designed for React Native. It pre-compiles JS to bytecode, reduces app launch time, and uses less memory. Benchmarks for a typical 5MB JS bundle:
- JavaScriptCore (default older RN): 850ms launch on iPhone 12
- Hermes: 420ms launch on iPhone 12
- Pure Swift: 180ms launch on iPhone 12
Hermes closes most of the gap to native. If you're on React Native, you should be on Hermes — it's default in RN 0.70+. If you're not, that's a free 50% launch-time improvement.
Native modules: where React Native costs you time
Every native iOS API you need that isn't in core React Native requires a bridge module — written in Swift/Obj-C with a JS wrapper. Common cases:
- Apple Pay (community module exists, lags by 1-2 iOS versions)
- HealthKit (community module exists, partial coverage)
- WidgetKit (no good cross-platform module — write native)
- App Intents and Siri Shortcuts (no good cross-platform module — write native)
- Apple Foundation Models / Apple Intelligence (no community module yet)
- Liquid Glass UI (iOS 26+, no RN support yet)
For each native module you write yourself, budget 1-2 weeks. We've seen RN apps that ended up with 30% native iOS code anyway — at which point you're maintaining two stacks.
App Store review consistency
Officially, Apple treats all apps equally. In practice, React Native apps occasionally get flagged for:
- Slow launch time (Guideline 2.3.1 — minimum functionality)
- Janky animations on older devices
- Crash rate above 1% in TestFlight
Across 15 native Swift apps we've shipped in 2024-2026, none rejected for performance. Across 4 RN apps we've helped audit, one was rejected for launch time (fixed by migrating to Hermes + Fabric). The rejection rate is real but small — budget an extra 1-2 weeks for first submission if you're on RN classic architecture.
Maintenance: who pays the upgrade tax?
iOS ships a major version every September. Apple deprecates APIs aggressively (you have ~3 years before something stops compiling). Maintaining a Swift app requires keeping up with these.
Maintaining a React Native app requires keeping up with:
- iOS deprecations (same as Swift)
- React Native version upgrades (every 3-6 months, occasionally breaking)
- JS package updates (npm audit, dependency drift)
- Each native module's compatibility with the new RN version
Practical cost: a Swift-only app needs ~4-8 hours/month of upkeep. An RN app needs ~10-20 hours/month, mostly chasing breaking changes in the JS ecosystem. If you maintain 5 apps, RN's compounding maintenance overhead matters.
Team cost in Madrid (our local benchmark)
| Role | Daily rate | Notes |
|---|---|---|
| Senior Swift iOS dev | €450-650 | SwiftUI + iOS 17/18 experience |
| Senior React Native dev | €400-600 | Fabric/Hermes experience |
| RN dev + iOS native fallback | €500-700 | Rare — both stacks fluent |
| Android-only Kotlin dev | €400-550 | Compose experience |
Cross-platform RN looks cheaper but you need iOS + Android testing infrastructure either way. Apple developer accounts, Google Play accounts, simulators, test devices — same cost on both stacks.
Side-by-side
| Aspect | Swift / SwiftUI | React Native |
|---|---|---|
| Code shared with Android | 0% | 70-85% |
| Launch time (iPhone 12) | ~180ms | ~420ms (Hermes) |
| Scroll performance | 60fps consistently | 50-60fps with Fabric |
| CPU-heavy work | Native speed | 2-5x slower |
| Day-one new iOS API support | Yes | 3-12 month lag |
| App size (empty app) | ~5MB | ~25MB (Hermes), ~40MB (JSC) |
| Hot reload | Xcode Previews | Yes (faster) |
| Monthly maintenance hours | 4-8 | 10-20 |
| Greenfield v1 cost (iOS only) | €25-40k | €30-50k |
| Greenfield v1 cost (iOS + Android) | €50-80k (two codebases) | €40-60k (one codebase) |
| App Store rejection rate (our sample) | ~5% | ~25% (first submission) |
When to choose Swift
- iOS-only product
- Apple-only ecosystem play (Apple Watch, Mac Catalyst, iPad, visionOS)
- Performance-critical (games, image processing, on-device ML)
- You need iOS 26 features on day one (Liquid Glass, Foundation Models)
- Team is iOS-native or you're hiring one
- You build <3 apps total (compounding maintenance doesn't pay off)
When to choose React Native
- iOS + Android, single team, single timeline
- Content-heavy apps (news, social, e-commerce listings)
- Team is web-frontend strong (React experience transfers)
- You're building 3+ apps and can amortise tooling costs
- You're okay with a 3-12 month lag on new iOS features
The third option: don't ignore Kotlin Multiplatform
KMP shares business logic (network, storage, auth) across iOS and Android while keeping UI native (SwiftUI on iOS, Compose on Android). This avoids React Native's bridge tax while still saving 30-50% on shared code. Worth evaluating if you're tempted by RN for cross-platform reasons but care about native feel. Tooling is maturing fast in 2026.
Picking React Native or Swift for your next app?
We've shipped 15+ iOS apps in pure Swift and helped 4 teams evaluate React Native. The decision usually comes down to your existing team, not the technology.
Book a discovery call