At Vextrosys we've shipped 52 production mobile apps since 2022: 31 on Flutter, 21 on React Native (including 6 brownfield migrations). Marketing comparisons rarely survive contact with store review policies, offline-first requirements, or a client mandate to reuse an existing React design system. This article is our internal decision framework, published.

What changed by 2026

  • React Native's New Architecture (Fabric + TurboModules) is default in RN 0.76+
  • Flutter 3.24+ Impeller is default on iOS; Android GPU backlog largely cleared
  • Expo SDK 52 is enterprise-viable: prebuilds, config plugins, EAS for regulated clients
  • Kotlin Multiplatform is rising for shared logic - but UI still converges on Flutter or RN

Performance: frames, not benchmarks

Lab benchmarks mislead. We profile with Systrace (Android), Instruments (iOS), and React Native's Performance Monitor on real devices: mid-tier Samsung A-series, iPhone 12, and a 2019 iPad still common in logistics handheld deployments.

Animation and scroll

Flutter still wins for custom-painted UI, complex charts, and 120Hz scroll on lists with heterogeneous cells - the compositor model avoids the JS bridge for layout. React Native with Reanimated 3 + FlashList closes the gap for standard feed UIs; we hit jank when bridging heavy JSON parsing on the JS thread during fast scroll.

// RN pattern we use for heavy lists
<FlashList
  data={items}
  estimatedItemSize={88}
  renderItem={memoizedRow}
  onEndReached={fetchNext}
/>

When RN surprised us

A B2B field-sales app with 90% standard Material components shipped faster on RN because the team was ex-web and shared 40% code with an admin portal. Time-to-first-PR was 3 days vs. 9 on a comparable Flutter greenfield.

Developer experience and hiring

  1. Flutter: stricter structure, excellent tooling, Dart is a hiring filter in some markets
  2. RN: larger talent pool, easier onboarding for React devs, more copy-paste Stack Overflow risk
  3. Hot reload: both are good; Flutter's stateful hot reload is more reliable for UI iteration
  4. Debugging: RN benefits from Chrome/Hermes; Flutter DevTools wins for layout inspection
Pick the stack your team can maintain in year three, not the stack that wins a hackathon demo.

Native modules and platform risk

Bluetooth LE medical devices, background geofencing, and PCI-adjacent SDK integrations force native code. Flutter's platform channels are stable; RN TurboModules reduce async overhead but increase codegen complexity. We maintain an internal matrix of vetted plugins - 23% of pub.dev packages we evaluated were abandoned or incompatible with current AGP.

  • Prefer first-party or widely adopted plugins (camera, maps, secure storage)
  • Budget 2-4 weeks per custom native module with full test coverage on both OS versions
  • For RN: pin Expo SDK and run prebuild diffs in CI when upgrading
  • For Flutter: verify Impeller compatibility for custom shaders and Rive animations

App size, startup, and store compliance

Flutter release APKs average 18-22MB larger than equivalent RN for our templates (fonts + engine). RN with Hermes + Proguard can ship sub-40MB for content apps. Startup: Flutter cold start ~320ms median on Pixel 6; RN ~380ms unless we defer native module init. Both pass Apple and Google review when privacy manifests and data safety forms are done correctly - RN's web heritage helps teams already familiar with cookie/consent patterns.

Brownfield and code sharing

If you have a React web app and want one team, RN + Expo is the rational default. If you need pixel-perfect brand systems across mobile and no web team, Flutter's widget consistency wins. KMM for shared business logic works with either UI layer - we've done it twice for fintech calculation engines.

Decision matrix (simplified)

Choose Flutter for: heavy custom UI, embedded devices, multiple platforms including web/desktop from one codebase. Choose RN for: existing React org, rapid MVP with Expo, heavy OTA via CodePush alternatives (EAS Update). Choose native for: AR/VR, ultra-low latency audio, or OS-beta features.

Maintenance and upgrades

Flutter major upgrades are predictable twice a year; breaking changes are documented. RN upgrades are project-dependent: New Architecture migration cost us 3-6 engineer-weeks per medium app in 2025. We now schedule RN upgrades quarterly with Detox E2E gates and screenshot diff on 8 devices in BrowserStack.

  1. Document plugin ownership and fallback native implementations
  2. Keep business logic in pure Dart/TS packages testable without simulators
  3. Instrument startup, ANR, and crash-free sessions in Datadog or Sentry from week 1
  4. Run device farms on minimum supported OS, not just latest iPhones

There is no universal winner. In 2026 both stacks deliver production-quality consumer and B2B apps. Vextrosys picks based on team DNA, integration surface, and five-year maintenance cost - then commits without half-measures. Hybrid Flutter+RN in one app is a last resort we've regretted twice.