Syntra Systems
Cases Services Products About Blog IT Caravan
+998 70 010 68 44 +7 999 900 22 12
RusEngUzb
Smartphone with a blank screen on a dark background: choosing between native and cross-platform development
Mobile

Native or cross-platform development: what to choose for business

By Daniil Belyaev · · 9 min read

Cross-platform development with Flutter or React Native covers most business needs: one codebase runs on iOS and Android, and both the launch and the upkeep cost less. Native development is needed when an app pushes against the limits of the device: complex graphics, background sensor work, new system features on release day. The feature list and the maintenance budget decide, not framework fashion.

Key takeaways

  • Cross-platform development with Flutter or React Native suits most business apps: catalogues, orders, bookings and customer accounts.
  • Native development pays off when an app constantly works with the camera, sensors, Bluetooth or NFC, or must ship new iOS and Android features on release day.
  • The decision rests on the list of features and integrations: for each one, check for a maintained plugin, an API or a web page, or plan for native code.
  • Store fees and update requirements for new Android and iOS versions are the same for both approaches, while cross-platform saves on further changes.
  • In Uzbekistan most mobile web traffic comes from Android, but the starting platform should follow the devices of your paying customers.

Native vs cross-platform development: what is the difference

A native app is written separately for each system, while a cross-platform app is built from one codebase for both. Native development means two apps, one in Kotlin for Android and one in Swift for iOS, and each calls system interfaces directly, with no layer in between.

Cross-platform development means one codebase plus a platform layer, from which the iOS and Android apps are built. Flutter apps are written in Dart, React Native apps in JavaScript or TypeScript, Kotlin Multiplatform apps in Kotlin.

Where the line between shared and platform code runs depends on the features: the more of them rely on a specific device, the more code has to be written separately for each system. The project itself goes through the same stages either way: analysis, design, app development for iOS and Android, testing and publishing.

Which is better: native or cross-platform development

There is no universal winner: cross-platform wins on time to market and maintenance cost, native wins on device access and on how quickly new system versions can be used. Compare the approaches on the parameters that end up in the quote and in the support plan.

CriterionNative developmentCross-platform development
CodebaseTwo: Kotlin for Android, Swift for iOSOne shared codebase plus a platform layer
Reaching both platformsSlower: every feature is built twiceFaster: one implementation for both platforms
Access to device featuresDirect, to any system interfaceThrough ready-made plugins or your own native module
InterfaceSystem components and the rules of each platformShared design, platform details tuned separately
TeamAndroid and iOS developers, two sets of testsOne main stack plus native skills for plugins
New iOS and Android capabilitiesAvailable as soon as the developer tools shipOnce the framework supports them, or through your own native module
Maintenance after launchEvery fix is built and tested twiceOne fix ships to both platforms
Main riskBudget and timelineDependence on the framework and third-party plugins

When native development is the right call

Native code pays off when the app spends most of its time working with the camera, sensors and wireless modules rather than with screens and data.

In such projects a cross-platform framework still has to be extended with native modules for both systems, and the savings disappear.

When cross-platform is the better deal

The cross-platform approach wins when the app is essentially an interface to your data and processes.

Device access in such apps usually comes down to the camera for QR codes, geolocation and push notifications. Flutter and React Native have ready-made plugins for these features, so little native code is left.

Flutter, React Native or Kotlin Multiplatform

Pick the tool by what should become shared: in Flutter it is the interface and the logic, in React Native the JavaScript logic behind system components, in Kotlin Multiplatform the business logic, while the interface is up to you.

ToolLanguageHow the interface is builtWhen it fits
FlutterDartDrawn by its own engine, identical on every deviceA single branded interface and predictable animation matter
React NativeJavaScript or TypeScriptFrom iOS and Android system componentsThe company has a JavaScript web team and logic shared with the website
Kotlin MultiplatformKotlinNative on each platform or shared with Compose MultiplatformA native Android app already exists, or the interface must stay native to each platform

Two well-known causes of stutter in cross-platform apps have been fixed in the frameworks themselves. Flutter draws the interface with the Impeller engine, which precompiles shaders instead of compiling them while the app runs: it is the default on iOS, and on Android since version 3.27 on devices with API 29 and above. In React Native 0.76 the New Architecture became the default: the asynchronous bridge between JavaScript and native code was replaced with direct calls through JSI.

Google officially supports Kotlin Multiplatform for sharing business logic between Android and iOS, and JetBrains’ Compose Multiplatform lets you share the interface as well. Adopting it does not require rewriting the whole app: shared code is added step by step.

Tip Choose a tool for which you can hire a replacement developer in your city: the app will outlive several specialists. Before deciding, look at recent job postings and CVs for each framework.

How much code is shared, and where native is still required

The promise of “one codebase for two platforms” holds for screens and business logic, but not for every system feature. If a capability is missing from ready-made plugins, a developer writes a platform module: Kotlin code for Android and Swift code for iOS. Flutter provides platform channels for this, React Native provides native modules.

So count not the share of shared code but the list of features that have no plugin. These are usually corporate device management systems, hardware such as scales, receipt printers and scanners, and partner SDKs released for one platform only.

Each such integration means two native implementations and a specialist who can write and update them. Check external integrations before the project is estimated:

What to consider in the Uzbek market

Four local factors affect the choice: customers’ devices, payments, Telegram and the interface language. First, devices. According to StatCounter data for August 2026, Android accounted for about 83% of web page views from mobile phones in Uzbekistan and iOS for about 17%. This is a share of traffic, not a device count, but the skew is clear: many products can reasonably launch on Android first and add iOS as a second step.

Tip Before postponing iOS, check which devices your paying customers use: in website analytics, order data or ad reports. If the product is paid and aimed at a premium segment, the iOS share among buyers may turn out higher than the national average.

Second, payments. The Payme documentation still points to the official Android SDK, but its repository was archived on 2 August 2023, and there is no SDK for iOS. A card is linked in the app through the client-side methods of the Subscribe API, or the app opens the Payme checkout page with a return address after payment. Both options work from shared code without a native module, and your server receives payment confirmation directly from Payme.

Third, Telegram. Booking, orders and notifications can move into a customer account inside Telegram, with no store install and no yearly fees. This is how we built registration for UzFranchise Expo: guests registered in three languages and received QR tickets right in the bot chat. We build a bot for enquiries and bookings from $1,200, so compare this option with an app before you approve the budget.

Fourth, the interface language. An app for the local market usually needs Uzbek and Russian, often English too. In a shared codebase the strings are translated once; in a native project they are handled separately for Android and iOS, and mismatches between versions have to be caught by hand.

What drives the budget after launch

Development is only the first payment. After that the app lives by store rules: fees and update requirements are the same for either approach, while the cost of further changes is not.

Important Since 31 August 2026, Google Play has accepted new apps and updates only if they target Android 16 (API 36), and published apps must target at least API 35, otherwise new users on newer Android versions will not see them. The deadline can be extended on request until 1 November 2026. Apple has accepted only builds made with Xcode 26 and the iOS 26 SDK since 28 April 2026.

How to choose an approach: step by step

Start not with a framework but with a list of what the app has to do.

  1. Write down the user scenarios: what a person does in the app and how often.
  2. Mark the features that touch the device: camera, geolocation, Bluetooth, NFC, background tasks.
  3. Check every external integration against the checklist above: plugin, API, state of the SDK.
  4. Calculate the cost of ownership two years ahead, not just the price of the first version.
  5. Pick the starting platform by the devices of your paying customers.
  6. Record the decision in the technical specification together with the acceptance criteria.

At Syntra Systems we go through these steps together with the client before estimating. If features touch the device rarely and both platforms are needed at once, we build a cross-platform app and keep native only the parts that cannot work otherwise. If the app mostly works with the camera, sensors and wireless modules, we build it natively and do not spend the budget on intermediate layers.

From there we run the project as one team: interface, backend, integrations with CRM and payment systems, publishing to both stores and support after launch.

Let’s discuss your project

Tell us what you need, and we will estimate the timeline and cost and suggest a solution.

Discuss your mobile app

Frequently asked questions

Can a cross-platform app be rewritten natively later?

It's a common path: a product starts on Flutter or React Native, and a native version appears once load or new features call for it. You'd rewrite the interface and device-facing code, while the backend, the data and the store listings stay as they are.

Will users notice that an app is cross-platform?

In a typical business app built from lists, forms and notifications the difference is rarely noticed. It shows in complex animation, during long camera sessions and when the system gains a new feature that the framework does not support yet.

How is a cross-platform app different from a hybrid app?

A hybrid app shows web pages inside an embedded browser (WebView). Flutter and React Native build a full app: Flutter draws the interface with its own engine, React Native renders system components. The hybrid approach lets you reuse a website but is more limited by what the browser can do.

Will the App Store accept an app built with Flutter or React Native?

The framework itself has no bearing on the review. Rejections come from the content: the app offers nothing beyond a website, breaks the payment rules, or doesn't explain why it needs the permissions it requests.

How do you accept Payme payments in an iPhone app?

There's no ready-made Payme library for iOS, and the Android repository has been archived since August 2023. So the card is linked through Payme's own methods called directly from the app, or the app opens Payme's payment page and returns once it's done. Both approaches share the same code for iOS and Android, and payment confirmation reaches your server directly from Payme.

Does a mobile app need a separate backend?

The catalogue, orders, profiles and notifications are stored on a server, and the app only displays that data. A server with a database and backups is needed under any approach and is paid for separately from the app stores. If the business already has a website or a CRM, the app connects to that rather than a second system being built from scratch.

If an Android app already exists, will it have to be rewritten for iPhone?

An existing Android app can be kept as it is: Google officially supports Kotlin Multiplatform, a way to write shared logic — calculations and networking, for example — once for both Android and iOS. Shared code is added gradually, piece by piece, without rewriting the app as a whole.

How can we tell that a contractor chose the approach for good reasons?

Ask them to justify the choice with the feature list: which features touch the device, which ones have ready-made plugins and what has to be written natively. An answer like “we always use this framework” means the task was never analysed.

Cover photo: Arpit Brandings, Pexels

Read also