Cross-platform ontwikkeling in mobiele applicaties: wat het is, welke frameworks en hoe het werkt

Auteur: IT Sectr Gepubliceerd: 2026-06-06 Leestijd: 9 min

Cross-platform ontwikkeling is een van de meest dynamisch evoluerende gebieden van mobiele engineering. Volgens Statista (2025) gebruikt 42% van de mobiele ontwikkelaars Flutter of React Native in hun projecten. Platformkanalen, bruggen en native modules vormen de basis van cross-platform architectuur.

Belangrijkste punten

  • Flutter gebruikt Platform Channel (MethodChannel) om te communiceren met native code. Berichten worden geserialiseerd naar binair formaat en asynchroon verzonden.
  • React Native gebruikt Bridge (oude architectuur) en Fabric (nieuwe). Fabric gebruikt JSI voor synchrone aanroepen van native functies.
  • Kotlin Multiplatform gebruikt expect/actual — declaratie en platformimplementatie. Kotlin/Native compileert code direct naar iOS binary.
  • Build tools voor cross-platform ontwikkeling: Gradle KTS (Kotlin DSL voor Gradle), CocoaPods Plugin (iOS dependency management), XCFramework (distributie van native bibliotheken).
  • Skia (Flutter) en Impeller — render engines. Impeller is nieuwer, sneller en lost jank problemen op oudere apparaten op.

Cross-platform ontwikkeling: Flutter Platform Channel en Method Channel

Flutter is Google's framework voor het maken van native applicaties vanuit één enkele Dart-codebase. Om te communiceren met platformcode (Kotlin, Swift) gebruikt Flutter Platform Channel. Het is een brug waarmee Dart-code native functies aanroept en het resultaat ontvangt. Cross-platform mobiele app-ontwikkeling met Flutter is het snelst groeiende segment van mobiele ontwikkeling in 2025–2026.

Platform Channel (Method Channel)

Method Channel is het belangrijkste communicatiekanaal Flutter <-> Native. Aan de Dart-kant: MethodChannel('com.example/channel').invokeMethod('getBatteryLevel'). Het bericht wordt gecodeerd in StandardMethodCodec (binair). Aan de native kant wordt een MethodChannel geregistreerd en verwerkt de aanroep. MethodChannel is asynchroon — het resultaat wordt via Future geretourneerd. Alternatief: EventChannel voor gebeurtenisstromen.

BasicMessageChannel is een lager niveau kanaal voor het verzenden van strings/bytes zonder "methode-argumenten" structuur. Gebruikt voor aangepaste protocollen. De hele Platform Channel API gaat door de Flutter Engine, die berichten serialiseert/deserialiseert.

FFI, Skia en Impeller

dart:ffi (Foreign Function Interface) — directe aanroep van C-functies vanuit Dart zonder platformkanalen. FFI is sneller dan Method Channel (0 serialisatie overhead). Gebruikt voor prestatie-intensieve bewerkingen: audioverwerking, cryptografie, grafische engines. Skia is de render engine van Flutter (2D graphics). Impeller is de nieuwe render engine van Flutter die Skia vervangt. Impeller compileert shaders vooraf (Ahead-of-Time), waardoor jank (frame haperingen) bij eerste opstarten wordt geëlimineerd. Bij IT Sectr zijn we in 2025 overgestapt op Impeller — het verschil in animatievloeiendheid is direct merkbaar.

Cross-platform ontwikkeling met React Native: Bridge, Fabric, Hermes, JSI

React Native is Meta's framework voor cross-platform mobiele app-ontwikkeling in JavaScript/TypeScript. React Native rendert componenten naar native UI-elementen. De architectuur is geëvolueerd: oude Bridge → nieuwe Fabric met JSI.

Fabric vs Bridge

Bridge is de oude React Native architectuur. De JS-thread serialiseert berichten naar JSON en stuurt ze via een asynchrone wachtrij naar de native thread. Dit veroorzaakt vertragingen (bridge round-trip ~1 ms). Fabric is de nieuwe architectuur waarbij JS- en native UI-threads synchroon communiceren via JSI (JavaScript Interface). Fabric injecteert native views direct, zonder brug. Fabric is een belangrijke mijlpaal in cross-platform ontwikkeling en versnelt rendering tot 2x.

JSI (JavaScript Interface) is een C++ API die JavaScript in staat stelt om direct native functies aan te roepen en geheugen te delen. JSI heeft de JSON-serialisatie van Bridge vervangen. De nieuwe JSI-gebaseerde architectuur is een cruciale prestatie in cross-platform ontwikkeling en bepaalt de prestaties van mobiele apps. Turbo Module is een nieuwe manier om native modules voor React Native te schrijven. In tegenstelling tot oude Native Modules wordt Turbo Module lui geladen en gebruikt JSI.

Hermes en Codegen

Hermes is een JavaScript-engine van Meta, geoptimaliseerd voor React Native. Hermes compileert JS-code naar bytecode tijdens de build, waardoor het opstarten van mobiele apps wordt versneld en het geheugengebruik bij cross-platform ontwikkeling wordt verminderd. Codegen is een native code generator op basis van TypeScript-types. Codegen maakt automatisch native modules en JSI-bindingen aan, waardoor handmatig werk wordt verminderd.

Parameter Flutter React Native KMP
TaalDartJavaScript/TypeScriptKotlin
ArchitectuurSkia/Impeller (eigen render)Fabric + JSI (native UI)Native SDK (elke module)
Native brugMethodChannel (Dart ↔ Native)JSI (JS ↔ C++ ↔ Native)expect/actual (Kotlin ↔ Native)
UIEigen (Skia/Impeller)Native componenten (UIKit/Android Views)Native UI (Jetpack Compose, SwiftUI)
Render engineSkia of ImpellerNative (UIView/View)Native

Flutter rendert alles zelf via Skia/Impeller — dit geeft een uniforme UI op beide platforms. React Native gebruikt native UI-componenten — het ziet eruit als een native app. KMP handelt geen UI af — het deelt alleen bedrijfslogica, de UI blijft native. De keuze hangt af van de prioriteit: uniforme UI (Flutter) of maximale nativeheid (React Native/KMP).

Cross-platform ontwikkeling met Kotlin Multiplatform: expect/actual, Kotlin/Native

Kotlin Multiplatform (KMP) is JetBrains-technologie voor gedeelde code tussen Android en iOS. In tegenstelling tot Flutter en React Native is KMP een alternatieve benadering van cross-platform ontwikkeling: het vervangt de UI niet, maar deelt bedrijfslogica, netwerkverzoeken, datamodellen en repositories. De UI blijft native: Jetpack Compose voor Android, SwiftUI voor iOS.

expect/actual

expect — declaratie van een functie of klasse in de gemeenschappelijke module (commonMain) die een platformimplementatie heeft. Cross-platform ontwikkeling met KMP gebruikt expect/actual: actual is de concrete implementatie voor elk platform (androidMain, iosMain). Voorbeeld: expect fun getDeviceId(): String — actual op Android gebruikt Settings.Secure, op iOS — UIDevice.current.identifierForVendor.

Kotlin/Native

Kotlin/Native — een Kotlin-compiler naar native binary (iOS framework). Hiermee kan Kotlin-code op iOS worden uitgevoerd zonder JVM. Kotlin/Native gebruikt LLVM voor compilatie en biedt prestaties dicht bij Swift. Kotlin/JS — compilatie van Kotlin naar JavaScript voor web- en React Native-projecten.

Build tools: Gradle KTS, CocoaPods Plugin, XCFramework

Build tools van cross-platform mobiele app-ontwikkeling — de brug tussen code en uiteindelijke binary. Gradle KTS beheert het Android-gedeelte, CocoaPods Plugin beheert de KMP iOS-afhankelijkheden, XCFramework beheert de distributie van native bibliotheken.

Gradle KTS

Gradle KTS — Gradle-configuratie met Kotlin DSL in plaats van Groovy. KTS ondersteunt automatisch aanvullen in Android Studio, typecontrole en refactoring-veiligheid. Voorbeeld: plugins { id("com.android.application") } in plaats van apply plugin: 'com.android.application'. Aanbevolen voor alle nieuwe projecten.

CocoaPods Plugin en XCFramework

CocoaPods Plugin — een Gradle-plugin voor KMP die de gedeelde module publiceert als een CocoaPods pod. Een iOS-ontwikkelaar voegt deze toe via Podfile. XCFramework — Apple's formaat voor distributie van binaire bibliotheken. XCFramework bevat binaries voor meerdere architecturen (arm64, x86_64) en platforms (iOS, macOS, watchOS). In KMP wordt de gedeelde module geëxporteerd als XCFramework voor iOS.

Veelgestelde vragen

Wat kiezen: Flutter of React Native in 2026?

Flutter biedt betere prestaties (Skia/Impeller), een uniforme UI-codebase en hoge stabiliteit in cross-platform ontwikkeling. React Native — enorme community, gemakkelijke overgang van webontwikkeling en flexibiliteit via JSI. IT Sectr beveelt Flutter aan voor UI-gerichte projecten, React Native als het project veel native code vereist.

Hoe communiceert Flutter met native code via Platform Channel?

Flutter stuurt een bericht via MethodChannel aan de Dart-kant. Het bericht wordt gecodeerd naar binair formaat en verzonden naar de native kant (Kotlin/Swift), waar het wordt verwerkt en het resultaat retourneert. Alle communicatie in mobiele app-ontwikkeling is asynchroon.

Wat is expect/actual in Kotlin Multiplatform?

expect is een declaratie van een functie of klasse in de gemeenschappelijke code die een platformimplementatie heeft. actual is de concrete implementatie voor elk platform (Android/iOS). Dit is KMP's mechanisme voor voorwaardelijke compilatie zonder preprocessor.

Wat is het verschil tussen Fabric en Bridge in React Native?

Bridge is de oude architectuur waarbij berichten naar JSON worden geserialiseerd en asynchroon via een wachtrij worden verzonden. Fabric is de nieuwe architectuur met synchrone native functieaanroepen via JSI, waardoor vertragingen worden geëlimineerd en de prestaties van mobiele apps worden verbeterd.

Wat is Hermes en waarom heeft React Native het nodig?

Hermes is een JavaScript-engine van Meta, geoptimaliseerd voor React Native. Het compileert JS naar bytecode tijdens de build, waardoor het opstarten van de app 2–3 keer wordt versneld en het geheugengebruik wordt verminderd.

Samenvatting

  • Flutter gebruikt Platform Channel (MethodChannel) voor communicatie met native code. FFI — voor directe C-functieaanroepen zonder overhead.
  • React Native is overgestapt van Bridge naar Fabric + JSI. JSI maakt synchrone native functieaanroepen mogelijk, waardoor brugvertragingen worden geëlimineerd.
  • Kotlin Multiplatform gebruikt expect/actual voor platformcode. Kotlin/Native compileert gemeenschappelijke code naar een native iOS framework.
  • Cross-platform mobiele app-ontwikkeling met Flutter gebruikt Skia/Impeller, met React Native — JSI/Fabric, met KMP — expect/actual voor native code.
  • Hermes — JS-engine voor React Native. Versnelt het opstarten en vermindert geheugengebruik.
  • Gradle KTS — Kotlin DSL voor Gradle. CocoaPods Plugin en XCFramework — voor het distribueren van iOS binaries in cross-platform ontwikkeling.
  • Framework keuze: Flutter voor uniforme UI, React Native voor native UI met JS, KMP voor het delen van bedrijfslogica met native UI.
  • Houd bij het kiezen van een cross-platform mobiele app-ontwikkelingstechnologie rekening met prestatie-eisen en teamgrootte.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project