
For most commercial apps in 2026, the framework follows the team you have. Choose React Native if your engineers write TypeScript and React, Flutter if you want 1 rendering engine controlling every pixel and your team will learn Dart, and Kotlin Multiplatform if your engineers write Kotlin and want shared logic with native or Compose UI. Compose Multiplatform for iOS has been stable since May 2025. Choose .NET MAUI only if you are a .NET organisation that accepts a short support window: MAUI 9 lost support on 12 May 2026, 6 months before the .NET 9 runtime. Build native when the app is the device, or when you can staff 2 platform teams, which is what Shopify announced in September 2026.
Most comparisons start with frame-rate benchmarks and app size. Those rarely decide a business app. The ordinary failure is a team that picks the framework with the best demo, then spends year 2 unable to hire for it, behind on its release train, and blocked by a store deadline the framework met months after the competition.
Every option has a current, supported release. The differences are in language, how the UI is drawn, how long each version is supported, and how far beyond iOS and Android each reaches.
Option | Language | UI | Latest stable, 7 Oct 2026 | Support policy | Web and desktop |
React Native | TypeScript | Native platform views | 0.87.1 | Latest 3 minor series | Web and desktop are community or Microsoft-maintained, outside core |
Flutter | Dart | Own rendering engine | 3.47.6 (1 Oct 2026) | No hotfixes for a stable line once the next ships (our measurement) | Web stable, not for SEO content; desktop stable |
Kotlin Multiplatform + Compose | Kotlin | Compose or fully native UI | Kotlin 2.4.20, Compose 1.12.1 | Kotlin releases; KMP stable since Nov 2023 | Desktop stable; web (Wasm) in beta |
.NET MAUI | C# | Native controls via .NET | MAUI 10 (Nov 2025) | At least 6 months after the next major | Windows and macOS; no web, no Linux |
Native | Swift and Kotlin | Platform UI | Xcode 26, Android 16 SDK | Set by Apple and Google | Separate projects |
React Native has been New Architecture only since 0.82. From that release, the flags that turned the old architecture back on are ignored. Hermes V1 became the default JavaScript engine in 0.84. Expo, the most common way to start a React Native app, has been New Architecture only since SDK 55.
Kotlin Multiplatform is 2 decisions, not 1. Sharing business logic in Kotlin across platforms has been stable since November 2023. Sharing UI with Compose Multiplatform on iOS became stable in version 1.8.0 in May 2025. JetBrains says Compose adds about 9 MB to an iOS app compared with a SwiftUI-only app. You can take the first without the second.

Hire for the language, not the framework. Stack Overflow's 2026 developer survey put JavaScript at 62.0 per cent of respondents, TypeScript 43.8, C# 27.1, Kotlin 10.8, Swift 5.9 and Dart 4.9. A React Native team hires from the largest pool; a Flutter team usually trains people in Dart.
The surveys stopped asking about frameworks. Stack Overflow's 2024 survey was the last to ask which cross-platform frameworks developers used: Flutter 9.4 per cent, React Native 8.4 and .NET MAUI 3.1. The 2025 and 2026 surveys do not ask, so any newer "most popular framework" figure comes from a vendor. Google says Flutter has 1.5 million monthly developers, and JetBrains says Kotlin Multiplatform use among its own survey respondents rose from 7 per cent to 18 per cent in a year.
Match the web team if you have one. If your web product is built in React, React Native lets the same engineers, the same TypeScript types and some of the same logic serve mobile. That is the strongest practical argument for it, and it does not show up in a benchmark.
Match the Android team if that is your strength. An organisation with experienced Kotlin engineers can share logic with Kotlin Multiplatform and keep, or gradually replace, native UI. It is the least disruptive way to stop writing everything twice.
Start React Native with Expo unless you have a reason not to. Expo SDK 57, released on 30 June 2026, runs React Native 0.86, and SDK 58 is in beta. In our deadline comparison below, Expo's cloud builds were the first to default to Xcode 26. Our React Native guide covers when a bare project is worth the extra upkeep.
Plan for native skills in every option. Each framework still needs someone who can read Swift and Kotlin when a native SDK misbehaves. The question is whether you need 1 such person or 2 teams.
React Native moves every 2 months and supports the last 3. We measured React Native minor releases from 0.76 to 0.87 for our React Native guide: the average gap was 59.7 days. The project supports the latest 3 minor series; in October 2026, 0.87 and 0.86 are active and 0.85 is at the end of its cycle. A React Native app more than about 6 months behind is outside support.
Flutter moves every quarter and does not patch old lines. For our Flutter guide, we measured stable releases from 3.22 to 3.47: an average gap of 91.2 days, and no stable line received a hotfix after the next one shipped. The only route to a fix is the current release.
.NET MAUI's window is shorter than .NET's. Microsoft supports a MAUI major version for at least 6 months after the next one ships. MAUI 9 support ended on 12 May 2026, while the .NET 9 runtime is supported until 10 November 2026; Microsoft says the MAUI window is shorter because it depends on Xcode and the Android SDK. MAUI 10 support ends on 11 May 2027, and .NET 11 MAUI is in release candidate.
Kotlin and Compose follow JetBrains' release train. Kotlin 2.4.20 shipped on 7 September 2026 and Compose Multiplatform 1.12.1 on 22 September 2026. Native UI on each platform stays on Apple's and Google's own schedules.
Budget upgrades as a standing line. Whichever you choose, plan 2 to 4 framework upgrades a year, batched, and keep the app within its framework's support window. Our app maintenance cost guide shows how to turn that into a budget.
Store deadlines are the hard test of a framework. Apple has required apps to be built with Xcode 26 since 28 April 2026, and Google Play has required new apps and updates to target Android 16 (API 36) since 31 August 2026. A framework that supports the new toolchain late leaves you less time to upgrade.
For Xcode 26, released in September 2025, the dates were spread over 2 months. Expo SDK 54 defaulted its cloud builds to Xcode 26 on 10 September 2025. .NET MAUI's first stable Xcode 26 bindings for .NET 9 followed on 15 October, Kotlin 2.2.21 added Xcode 26 support on 23 October, and Flutter 3.38 announced full iOS 26 and Xcode 26 support on 12 November.
For Android 16, every option was early. React Native 0.81 targeted API 36 by default on 12 August 2025, a year before Google's deadline. Flutter 3.38 and .NET 10 followed on 11 and 12 November 2025. All were ready long before 31 August 2026.

The lesson is about your own lag, not theirs. Every framework met both deadlines months early. The apps that miss them are the ones running a framework version 2 or 3 releases old, because the toolchain support arrives in the current release, not in the one you shipped last year.
React Native apps start with native packages. A fresh app from Expo's default template carries 28 packages with native code, which we measured on 6 October 2026. Each must support the current Xcode and Android target before you can upgrade.
Flutter plugins bring native code too. In our test, adding 26 common Flutter plugins pulled in 187 packages, 43 of them with native Android or iOS code, and the dependency resolver silently chose a version of 1 plugin that was 14 major versions behind.
Kotlin Multiplatform and MAUI need Apple's toolchain for iOS. Kotlin/Native compiles for iOS through Xcode, and .NET MAUI builds iOS apps through a networked Mac. Every option that ships to the App Store depends on Apple's tools in the end.
Push shared logic to the server when you go native. At Tvam, a Vedic astrology app we built as native iOS and Android apps with a web product, chart calculations run on the server rather than on the device. The case study gives the reason: 2 native codebases would have to agree numerically forever, and every data correction would ship at app review speed.
Flutter web is stable, but not for content sites. Google's documentation recommends it for app-like single-page applications and for bringing existing mobile apps to the web, and explicitly not for text-heavy, document-style or SEO-dependent content. Flutter desktop supports Windows, macOS and Linux, and Canonical now leads its desktop work.
Check the supported versions, not just the platforms. Flutter's supported-platforms page lists iOS 15 to 27 and Android API 24 to 37 on mobile, and Windows 10 and 11, macOS 12 to 27 and recent Debian and Ubuntu releases on desktop.
React Native's core covers only iOS and Android. Web runs through react-native-web, a community project, and Expo documents full web support built on it. Windows and macOS are maintained by Microsoft as partner platforms; in October 2026, react-native-windows was at 0.84 and react-native-macos at 0.83, both behind core at 0.87.
Compose Multiplatform's web target is still in beta. Android, iOS and desktop on the JVM are stable; web, compiled to WebAssembly, has been in beta since September 2025.
.NET MAUI targets Windows and macOS but not the web or Linux. It suits internal and line-of-business apps in organisations already standardised on .NET and Windows.
If the web is your main product, build it as a website. For a marketing site, a store or anything that must rank in search, a web framework is the right tool. Share the backend and the design system with the app, not the UI code.
On 10 September 2026, Shopify announced it is moving its mobile apps back to Swift and Kotlin. Shopify was the company most often cited as proof that React Native works at scale. As our React Native guide reports, its stated reason was economic, not technical: coding agents have cut the cost of writing every feature twice to the point where Shopify no longer needs a shared codebase.
That argument assumes Shopify's organisation. It assumes engineers who can review native code on both platforms, an internal pipeline of agents with its own tests and review gates, and the capacity to rebuild an app of more than 300 screens while running the old one. For a team of 4 to 8 engineers, writing the second implementation is not the expensive part; knowing which platform rule it just broke is.
The useful lesson is to revisit the decision. The economics of cross-platform frameworks rest on the cost of writing code twice, and that cost is falling. Choose for the next 2 to 3 years, not forever, and re-examine it when your team or your tools change.
A grocery delivery business on React Native. For Al Amri Express in Oman, we built a bilingual customer app on iOS and Android and a separate operations app for warehouse and delivery staff, with React Native on the client and a Laravel backend. Two apps with different users and release schedules shared 1 backend and 1 framework.
An astrology app as native apps. For Tvam, we built native iOS and Android apps in Swift and Kotlin, alongside a web product. Moving calculation to the server kept the 2 native apps from drifting apart.
The pattern in both. The framework mattered less than where the logic lived. In both projects, the rules that must never disagree, such as order state or chart calculations, sit on the server, and the apps present them.
The framework changes the app layer, not the product. In Zyneto's published worked example for a gym membership platform, the member app is 190 of 1,260 hours. Billing, scheduling, access control, integrations and analytics make up the rest, and they live on the server whichever framework draws the screens. Our mobile app development cost guide shows how those hours are built up.
Native writes the app layer twice. With Swift and Kotlin, every screen, every navigation flow and every client-side rule is implemented once per platform and tested once per platform. With a cross-platform framework it is written once, with platform-specific work in setup, native integrations and testing on both.
Upgrades are the recurring cost. A cross-platform app carries its framework's release train on top of Apple's and Google's yearly requirements. A native app carries only the platform requirements, but twice. Neither is free; the difference is whether you pay in framework upgrades or in duplicated platform work.
Switching later is a rebuild. Moving between frameworks, or from cross-platform to native, means rewriting the app layer. Shopify is doing exactly that for an app of more than 300 screens. Keep business rules on the server and the design system framework-neutral, and a future switch rewrites only the screens.
Start from the team you have. TypeScript and React engineers point to React Native. Kotlin engineers point to Kotlin Multiplatform. C# engineers in a Microsoft organisation point to MAUI, with its support window priced in. A team starting fresh that values pixel-level control points to Flutter.
Then check the targets. If you need a search-friendly website, build it separately. If you need desktop, Flutter, Compose and MAUI cover it in their own ways; React Native's desktop ports trail core.
Then check the support window against your release capacity. If your team cannot upgrade every 2 to 3 months, React Native's 3-release support window will be tight. If it cannot upgrade every quarter, Flutter's lack of backported fixes will be. If you are on MAUI, plan each major upgrade within 6 months.
If your situation is | Start with |
Web product in React, TypeScript team | React Native, with Expo |
Strong Kotlin or Android team | Kotlin Multiplatform, Compose where it fits |
New team, custom-drawn UI, one look on every platform | Flutter |
.NET organisation, internal or Windows-heavy app | .NET MAUI, upgrades planned every year |
App built around new platform features or hardware, or 2 platform teams | Native |
Pick the framework you can keep current. Every option here can build a good app. The one that fails is the one your team cannot upgrade on time, so the best framework is the one whose release clock your team can keep.
There is no single best one. React Native suits teams that write TypeScript and React, Flutter suits teams that want 1 rendering engine and will learn Dart, Kotlin Multiplatform suits Kotlin teams that want to share logic and optionally UI, and .NET MAUI suits .NET organisations. The best choice is the one your team can hire for and keep current.
Choose React Native if your engineers already write TypeScript and React, especially if you also have a React web product. Choose Flutter if you want identical, custom-drawn UI on every platform and can train or hire Dart developers. Zyneto measured React Native releasing every 59.7 days and Flutter every 91.2 days, so plan upgrades either way.
Yes. Kotlin Multiplatform for sharing business logic was declared stable in November 2023, and Compose Multiplatform for iOS, which shares the UI as well, became stable in version 1.8.0 in May 2025. JetBrains says Compose adds about 9 MB to an iOS app compared with SwiftUI alone. You can share logic and keep native UI.
Microsoft supports each .NET MAUI major version for at least 6 months after the next major ships. MAUI 9 support ended on 12 May 2026, 6 months before the .NET 9 runtime, and MAUI 10 support ends on 11 May 2027. Apps on MAUI should plan a major upgrade every year.
Partly. Flutter web is stable but Google recommends it for app-like experiences, not SEO or content sites. React Native reaches the web through the community react-native-web project, which Expo builds on. Compose Multiplatform's web target is in beta, and .NET MAUI has no web target. Build search-facing websites separately.
Shopify announced on 10 September 2026 that it is moving its apps back to Swift and Kotlin. Its stated reason was economic: coding agents have made writing each feature twice cheap enough that it no longer needs a shared codebase. That depends on an organisation with native reviewers and agent pipelines that most teams do not have.
Yes. A fresh React Native app from Expo's default template carries 28 packages with native code, and 26 common Flutter plugins pulled in 43 native packages in Zyneto's test. Kotlin Multiplatform and .NET MAUI both build iOS apps through Apple's Xcode. Every team needs someone who can read Swift and Kotlin.

Vikas has around fifteen years of experience building software and now builds generative AI systems at Zyneto. His work covers retrieval augmented generation, agentic AI, knowledge graphs, AI memory, and the evaluation and guardrails that decide whether any of it is safe to put in front of customers. He has shipped enterprise copilots, document AI, chatbots and predictive analytics for e-commerce, fintech and marketing teams, and works day to day in Python, JavaScript and SQL. He follows multimodal models, business process automation and enterprise AI security closely, and mentors engineers moving into AI. He writes about architecture, inference cost and the failure modes that only show up at production scale.
Share your details and we will talk soon.
Be the first to access expert strategies, actionable tips, and the trends actually shaping the digital world. No fluff - just practical insights delivered straight to your inbox.
Dive into our blog and stay ahead of the curve with expert perspectives, future-ready trends, and tech tips written for decision-makers and doers alike.