Vývoj napříč platformami je jednou z nejdynamičtěji se rozvíjejících oblastí mobilního inženýrství. Podle Statista (2025) používá 42 % mobilních vývojářů Flutter nebo React Native ve svých projektech. Platformní kanály, mosty a nativní moduly jsou základem architektury napříč platformami.
Klíčové body
Flutter je framework Google pro vytváření nativních aplikací z jediné Dart kódové základny. Pro interakci s platformním kódem (Kotlin, Swift) používá Flutter Platform Channel. Je to most, přes který Dart kód volá nativní funkce a získává výsledek. Vývoj mobilních aplikací napříč platformami s Flutterem je nejrychleji rostoucím segmentem mobilního vývoje v letech 2025–2026.
Method Channel je hlavní komunikační kanál Flutter <-> Nativní. Na straně Dart: MethodChannel('com.example/channel').invokeMethod('getBatteryLevel'). Zpráva je kódována v StandardMethodCodec (binární). Na nativní straně je zaregistrován MethodChannel a zpracovává volání. MethodChannel je asynchronní — výsledek je vrácen přes Future. Alternativa: EventChannel pro toky událostí.
BasicMessageChannel je kanál nižší úrovně pro odesílání řetězců/bajtů bez struktury "metoda-argumenty". Používá se pro vlastní protokoly. Celé API Platform Channel prochází přes Flutter Engine, který serializuje/deserializuje zprávy.
dart:ffi (Foreign Function Interface) — přímé volání C funkcí z Dartu bez platformních kanálů. FFI je rychlejší než Method Channel (0 režie serializace). Používá se pro výkonově náročné operace: zpracování zvuku, kryptografie, grafické enginy. Skia je renderovací engine Flutteru (2D grafika). Impeller je nový renderovací engine Flutteru, který nahrazuje Skii. Impeller kompiluje shadery předem (Ahead-of-Time), čímž eliminuje jank (zasekávání snímků) při prvních spuštěních. V IT Sectr jsme přešli na Impeller v roce 2025 — rozdíl v plynulosti animací je okamžitě patrný.
React Native je framework Meta pro vývoj mobilních aplikací napříč platformami v JavaScript/TypeScript. React Native renderuje komponenty do nativních UI prvků. Architektura se vyvinula: starý Bridge → nový Fabric s JSI.
Bridge je stará architektura React Native. Vlákno JS serializuje zprávy do JSON a odesílá je přes asynchronní frontu do nativního vlákna. To vytváří zpoždění (round-trip mostu ~1 ms). Fabric je nová architektura, kde vlákna JS a nativního UI komunikují synchronně přes JSI (JavaScript Interface). Fabric vkládá nativní pohledy přímo, bez mostu. Fabric je klíčovým milníkem ve vývoji napříč platformami, zrychluje renderování až 2x.
JSI (JavaScript Interface) je C++ API, které umožňuje JavaScriptu přímo volat nativní funkce a sdílet paměť. JSI nahradil JSON serializaci Bridge. Nová architektura založená na JSI je zásadním úspěchem ve vývoji napříč platformami, určujícím výkon mobilních aplikací. Turbo Module je nový způsob psaní nativních modulů pro React Native. Na rozdíl od starých Native Modules se Turbo Module načítá líně a používá JSI.
Hermes je JavaScript engine od Meta, optimalizovaný pro React Native. Hermes kompiluje JS kód do bajtkódu v době sestavení, čímž urychluje spouštění mobilních aplikací a snižuje spotřebu paměti při vývoji napříč platformami. Codegen je generátor nativního kódu založený na TypeScript typech. Codegen automaticky vytváří nativní moduly a JSI vazby, čímž snižuje ruční práci.
| Parametr | Flutter | React Native | KMP |
|---|---|---|---|
| Jazyk | Dart | JavaScript/TypeScript | Kotlin |
| Architektura | Skia/Impeller (vlastní renderování) | Fabric + JSI (nativní UI) | Nativní SDK (každý modul) |
| Nativní most | MethodChannel (Dart ↔ Nativní) | JSI (JS ↔ C++ ↔ Nativní) | expect/actual (Kotlin ↔ Nativní) |
| UI | Vlastní (Skia/Impeller) | Nativní komponenty (UIKit/Android Views) | Nativní UI (Jetpack Compose, SwiftUI) |
| Renderovací engine | Skia nebo Impeller | Nativní (UIView/View) | Nativní |
Flutter renderuje vše sám přes Skii/Impeller — to poskytuje jednotné UI na obou platformách. React Native používá nativní UI komponenty — vypadá jako nativní aplikace. KMP se nezabývá UI — sdílí pouze obchodní logiku, UI zůstává nativní. Volba závisí na prioritě: jednotné UI (Flutter) nebo maximální nativita (React Native/KMP).
Kotlin Multiplatform (KMP) je technologie JetBrains pro sdílený kód mezi Androidem a iOS. Na rozdíl od Flutteru a React Native je KMP alternativním přístupem k vývoji napříč platformami: nenahrazuje UI, ale sdílí obchodní logiku, síťové požadavky, datové modely a repozitáře. UI zůstává nativní: Jetpack Compose pro Android, SwiftUI pro iOS.
expect — deklarace funkce nebo třídy ve společném modulu (commonMain), která má implementaci platformy. Vývoj napříč platformami s KMP používá expect/actual: actual je konkrétní implementace pro každou platformu (androidMain, iosMain). Příklad: expect fun getDeviceId(): String — actual na Androidu používá Settings.Secure, na iOS — UIDevice.current.identifierForVendor.
Kotlin/Native — kompilátor Kotlin do nativního binárního souboru (iOS framework). Umožňuje spouštět Kotlin kód na iOS bez JVM. Kotlin/Native používá LLVM pro kompilaci, poskytuje výkon blízký Swift. Kotlin/JS — kompilace Kotlin do JavaScriptu pro webové a React Native projekty.
Nástroje pro sestavení vývoje mobilních aplikací napříč platformami — most mezi kódem a konečným binárním souborem. Gradle KTS spravuje Android část, CocoaPods Plugin spravuje KMP iOS závislosti, XCFramework spravuje distribuci nativních knihoven.
Gradle KTS — konfigurace Gradle pomocí Kotlin DSL místo Groovy. KTS podporuje automatické doplňování v Android Studio, kontrolu typů a bezpečnost refaktorování. Příklad: plugins { id("com.android.application") } místo apply plugin: 'com.android.application'. Doporučeno pro všechny nové projekty.
CocoaPods Plugin — Gradle plugin pro KMP, který publikuje sdílený modul jako CocoaPods pod. iOS vývojář jej přidá přes Podfile. XCFramework — formát distribuce binárních knihoven Apple. XCFramework obsahuje binární soubory pro více architektur (arm64, x86_64) a platforem (iOS, macOS, watchOS). V KMP je sdílený modul exportován jako XCFramework pro iOS.
Často kladené otázky
Flutter nabízí lepší výkon (Skia/Impeller), jednotnou kódovou základnu UI a vysokou stabilitu při vývoji napříč platformami. React Native — obrovská komunita, snadný přechod z webového vývoje a flexibilita přes JSI. IT Sectr doporučuje Flutter pro projekty zaměřené na UI, React Native pokud projekt vyžaduje častý nativní kód.
Flutter odešle zprávu přes MethodChannel na straně Dart. Zpráva je zakódována do binárního formátu a přenesena na nativní stranu (Kotlin/Swift), kde je zpracována a vrátí výsledek. Veškerá komunikace při vývoji mobilních aplikací je asynchronní.
expect je deklarace funkce nebo třídy ve společném kódu, která má implementaci platformy. actual je konkrétní implementace pro každou platformu (Android/iOS). Toto je mechanismus KMP pro podmíněnou kompilaci bez preprocesoru.
Bridge je stará architektura, kde jsou zprávy serializovány do JSON a přenášeny asynchronně frontou. Fabric je nová architektura se synchronním voláním nativních funkcí přes JSI, odstraňuje zpoždění a zlepšuje výkon mobilních aplikací.
Hermes je JavaScript engine od Meta, optimalizovaný pro React Native. Kompiluje JS do bajtkódu v době sestavení, čímž urychluje spouštění aplikace 2–3krát a snižuje spotřebu paměti.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.