Justin Mancinelli
justin@touchlab.co
@piannaf
The Future of Cross-Platform
is Native
Efficient Developers
More Features
Efficient Developers
More Features
Fewer Bugs
Efficient Developers
More Features
Reach all the Users
Fewer Bugs
Efficient Developers
Lower Performance
Slower Innovation
Lower Performance
Slower Innovation
Poor UI
Lower Performance
Vendor Lock-in
Poor UI
Slower Innovation
Lower Performance
Cross-Platform?
We Don’t Say That Around Here Anymore
Research
Web
PWA
Dedicated
Generic
Native
Hybrid
Native Code
Native Container
Native Language
Cross-Compile
Trans-Compile
Native Language
Other Language
Include Runtime
Interpreter, VM, Libraries
App TypeOutputProcessInput
Web
PWA
Dedicated
Generic
Native
Hybrid
Native Code
Native Container
Native Language
Cross-Compile
Trans-Compile
Native Language
Other Language
Include Runtime
Interpreter, VM, Libraries
App TypeOutputProcessInput
Web
PWA
Dedicated
Generic
Native
Hybrid
Native Code
Native Container
Native Language
Cross-Compile
Trans-Compile
Native Language
Other Language
Include Runtime
Interpreter, VM, Libraries
App TypeOutputProcessInput
Web
PWA
Dedicated
Generic
Native
Hybrid
Native Code
Native Container
Native Language
Cross-Compile
Trans-Compile
Native Language
Other Language
Include Runtime
Interpreter, VM, Libraries
App TypeOutputProcessInput
Web
PWA
Dedicated
Generic
Native
Hybrid
Native Code
Native Container
Native Language
Cross-Compile
Trans-Compile
Native Language
Other Language
Include Runtime
Interpreter, VM, Libraries
App TypeOutputProcessInput
Web
PWA
Dedicated
Generic
Native
Hybrid
Native Code
Native Container
Native Language
Cross-Compile
Trans-Compile
Native Language
Include Runtime
Interpreter, VM, Libraries
App TypeOutputProcessInput
Ionic
Other Language
HTML/CSS/JS
Web
PWA
Dedicated
Generic
NativeNative Code
Native Language
Cross-Compile
Trans-Compile
Native Language
App TypeOutputProcessInput
React Native
Other Language
JS
Include Runtime
Interpreter, VM, Libraries
HybridNative Container
Web
PWA
Dedicated
Generic
NativeNative Code
Native Language
Cross-Compile
Trans-Compile
Native Language
App TypeOutputProcessInput
Xamarin
Other Language
C#
Include Runtime
Interpreter, VM, Libraries
HybridNative Container
AndroidiOS
Web
PWA
Dedicated
Generic
NativeNative Code
Native Language
Cross-Compile
Trans-Compile
Native Language
App TypeOutputProcessInput
Flutter
Other Language
Dart
Include Runtime
Interpreter, VM, Libraries
HybridNative Container
JS/Wasm
Include Runtime
Interpreter, VM, Libraries
Web
PWA
Dedicated
Generic
Native
Hybrid
Native Code
Native Container
Cross-Compile
Trans-Compile
App TypeOutputProcessInput
Kotlin Multiplatform
Other Language
Native Language
Kotlin
Android
Web
iOS
JS/Wasm
Include Runtime
Interpreter, VM, Libraries
Web
PWA
Dedicated
Generic
Native
Hybrid
Native Code
Native Container
Cross-Compile
Trans-Compile
App TypeOutputProcessInput
Kotlin Multiplatform
Other Language
Native Language
Kotlin
Android
Web
iOS
JS/Wasm
Include Runtime
Interpreter, VM, Libraries
Web
PWA
Dedicated
Generic
Native
Hybrid
Native Code
Native Container
Cross-Compile
Trans-Compile
App TypeOutputProcessInput
Kotlin Multiplatform
Other Language
Native Language
Kotlin
Android
Web
iOS
JS/Wasm
Include Runtime
Interpreter, VM, Libraries
Web
PWA
Dedicated
Generic
Native
Hybrid
Native Code
Native Container
Cross-Compile
Trans-Compile
App TypeOutputProcessInput
Kotlin Multiplatform
Other Language
Native Language
Kotlin
Android
Web
iOS
VM/InterpreterWeb NativeHybrid
Responsive Web Cordova
Traditional Android
Traditional iOS
VM/InterpreterWeb NativeHybrid
Xamarin
AndroidResponsive Web Cordova
Traditional Android
Xamarin
iOS Traditional iOS
VM/InterpreterWeb NativeHybrid
Xamarin
AndroidResponsive Web Cordova
Traditional Android
Xamarin
iOS Traditional iOS
React
Native
VM/InterpreterWeb NativeHybrid
Xamarin
AndroidResponsive Web Cordova
Traditional Android
React
Native
Xamarin
iOS
Flutter
Android/iOS
Traditional iOS
VM/InterpreterWeb NativeHybrid
Xamarin
iOS
Xamarin
AndroidResponsive Web Cordova
Traditional Android
React
Native
Flutter
Android/iOS
PWA
Traditional iOS
VM/InterpreterWeb NativeHybrid
Xamarin
iOS
Xamarin
AndroidResponsive Web Cordova
Traditional Android
React
Native
Flutter
Android/iOS
PWA
Traditional iOS
Wasm
VM/InterpreterWeb NativeHybrid
Xamarin
iOS
Xamarin
AndroidResponsive Web Cordova
Traditional Android
Traditional iOS
React
Native
Flutter
Android/iOS
PWA
Wasm
KMP
Android
KMP
Wasm
KMP
JVM
KMP
JS
KMP
iOS
Developers developing,
Designers designing,
Researchers researching,
Managers managing
Tools
• Android Studio, Xcode, Visual Studio, Atom
• Platform specific APIs, General Libraries
• Kotlin, Java, Swift, Objective-C, JavaScript, C#, C++
The Platform
• Machine Code, JVM, JavaScriptCore, V8
• Platform Services (Location, Graphics, Audio, Network, Storage, Auth,
Permissions, Gestures, Notifications, etc)
iOS
Android
Web
Users of the
platform
Developers developing,
Designers designing,
Researchers researching,
Managers managing
Tools
• Android Studio, Xcode, Visual Studio, Atom
• Platform specific APIs, General Libraries
• Kotlin, Java, Swift, Objective-C, JavaScript, C#, C++
The Platform
• Machine Code, JVM, JavaScriptCore, V8
• Platform Services (Location, Graphics, Audio, Network, Storage, Auth,
Permissions, Gestures, Notifications, etc)
iOS
Android
Web
Users of the
platform
Developers developing,
Designers designing,
Researchers researching,
Managers managing
Tools
• Android Studio, Xcode, Visual Studio, Atom
• Platform specific APIs, General Libraries
• Kotlin, Java, Swift, Objective-C, JavaScript, C#, C++
The Platform
• Machine Code, JVM, JavaScriptCore, V8
• Platform Services (Location, Graphics, Audio, Network, Storage, Auth,
Permissions, Gestures, Notifications, etc)
iOS
Android
Web
Users of the
platform
Developers developing,
Designers designing,
Researchers researching,
Managers managing
Tools
• Android Studio, Xcode, Visual Studio, Atom
• Platform specific APIs, General Libraries
• Kotlin, Java, Swift, Objective-C, JavaScript, C#, C++
The Platform
• Machine Code, JVM, JavaScriptCore, V8
• Platform Services (Location, Graphics, Audio, Network, Storage, Auth,
Permissions, Gestures, Notifications, etc)
iOS
Android
Web
Users of the
platform
Developers developing,
Designers designing,
Researchers researching,
Managers managing
Tools
• Android Studio, Xcode, Visual Studio, Atom
• Platform specific APIs, General Libraries
• Kotlin, Java, Swift, Objective-C, JavaScript, C#, C++
The Platform
• Machine Code, JVM, JavaScriptCore, V8
• Platform Services (Location, Graphics, Audio, Network, Storage, Auth,
Permissions, Gestures, Notifications, etc)
iOS
Android
Web
Users of the
platform
NativetoDeveloper
Changing Perspectives
NativetoDeveloper
Changing Perspectives
Native to Platform
NativetoDeveloper
Changing Perspectives
Native to Platform
NativetoUser
Technology
Native to
Developer
Native to
Platform
Native to User
Xamarin
React Native
Flutter
KMP
Changing Perspectives: Web
Technology
Native to
Developer
Native to
Platform
Native to User
Xamarin
React Native
Flutter
KMP
Changing Perspectives: Android
Technology
Native to
Developer
Native to
Platform
Native to User
Xamarin
React Native
Flutter
KMP
Changing Perspectives: iOS
Technology
Native to
Developer
Native to
Platform
Native to User
Xamarin
React Native
Flutter
KMP
Changing Perspectives: iOS near future
Changing Perspectives: iOS near future
Technology
Native to
Developer
Native to
Platform
Native to User
Xamarin
React Native
Flutter
KMP
Changing Perspectives: iOS near future
Technology
Native to
Developer
Native to
Platform
Native to User
Xamarin
React Native
Flutter
KMP
Changing Perspectives: iOS near future
Technology
Native to
Developer
Native to
Platform
Native to User
Xamarin
React Native
Flutter
KMP
Kotlin Native Interop Generics
Changing Perspectives: iOS near future
Technology
Native to
Developer
Native to
Platform
Native to User
Xamarin
React Native
Flutter
KMP
Ktor SqlDelight Stately
Kotlin-Multiplatform-Firebase

and more
Mapping the Quest through Time
Fully Native Multiplatform
Algol68C
50’s & 60’s 70’s 80’s
C XLT86
IBM PCIntel 8086Algol
CPU Era
Fully Native Multiplatform
Algol68C
50’s & 60’s 70’s 80’s
C XLT86 Operating Systems
IBM PCIntel 8086Algol
OS Era
HTML
90’s 2000’s
Partially Native Multiplatform
Netscape
Fully Native Multiplatform
IE Win/Mac
Opera
JavaScript
Java Flash
Mozilla/Firefox SafariCSS
Web Era
Hybrid
iPhone
2000’s 2010’s
Adobe Air Responsive
Web
Chrome, V8Android
NodeJS Cordova Appcelerator
Mobile Era
Partially Native Multiplatform
Fully Native Multiplatform
Hybrid
2010’s
Xamarin PWA React Native
Modern
J2objc RoboVM Flutter Wasm RIBs Kotlin
Multiplatform
Modern Era
PWA

+

Wasm

?
Partially Native Multiplatform
Fully Native Multiplatform
Hybrid
Mapping the Quest through Time
50’s Modern
Partially Native Multiplatform
Fully Native Multiplatform
Efficient Developers
More Features
Fewer Bugs
Efficient Developers
Kotlin Multiplatform
Other Solutions
Lower Performance
Slower Innovation
Poor UI
Vendor Lock-in
Kotlin Multiplatform
Native Performance
Other Solutions
Lower Performance
Slower Innovation
Poor UI
Vendor Lock-in
Kotlin Multiplatform
Native Performance
Other Solutions
Native Interop
Lower Performance
Slower Innovation
Poor UI
Vendor Lock-in
Kotlin Multiplatform
Other Solutions
Native UX
Native Performance
Native Interop
Lower Performance
Slower Innovation
Poor UI
Vendor Lock-in
Kotlin Multiplatform
Kotlin Multiplatform
Lower Performance
Other Solutions
Native Dev Experience
Native UX
Native Performance
Native InteropSlower Innovation
Poor UI
Vendor Lock-in
Your Homework
Your Homework
• Watch related conference talks
Your Homework
• Watch related conference talks
• Clone some projects
Your Homework
• Watch related conference talks
• Clone some projects
• Contribute to and be supported by
the community
Your Homework
• Watch related conference talks
• Clone some projects
• Contribute to and be supported by
the community
• Talk to Touchlab
Justin Mancinelli
justin@touchlab.co
@piannaf

The Future of Cross-Platform is Native