The Future of Cross-Platform is Native

The Future of Cross-Platform is Native

The quest for the perfect cross-platform solution has been like the quest for the Holy Grail. It’s been going on a long time, there are a myriad of perceived benefits, and every time someone claims to have found it, it’s never the right one. Many people ask, “Should I go with a cross-platform solution, or a native solution?” but the reality is the quest is bringing us closer to a solution where there isn’t a meaningful difference.

React Native wasn’t the first to show a solution could be both cross-platform and native, but it has certainly convinced a lot of people. As many of those early converts are discovering the limitations, they are beginning to fall back into either-or thinking. Maybe they just have the wrong assumptions.

Kotlin Multiplatform makes some new assumptions and, although it wasn’t the first to do so, is gaining in popularity very quickly. Is Kotlin Multiplatform the holy grail of cross-platform? Probably not. But it does bring cross-platform and native closer than ever before.

----

Presented at https://newyork2019.theleaddeveloper.com/
Video: https://www.youtube.com/watch?v=sA_JIqqj9js
Thank you https://touchlab.co/ for supporting me and the future of mobile.

9af42db72a3eed71a6065317bad4c527?s=128

Justin Mancinelli

April 30, 2019
Tweet

Transcript

  1. Justin Mancinelli justin@touchlab.co @piannaf The Future of Cross-Platform is Native

  2. None
  3. Efficient Developers

  4. More Features Efficient Developers

  5. More Features Fewer Bugs Efficient Developers

  6. More Features Reach all the Users Fewer Bugs Efficient Developers

  7. None
  8. Lower Performance

  9. Slower Innovation Lower Performance

  10. Slower Innovation Poor UI Lower Performance

  11. Vendor Lock-in Poor UI Slower Innovation Lower Performance

  12. Cross-Platform? We Don’t Say That Around Here Anymore

  13. None
  14. Research

  15. None
  16. None
  17. None
  18. None
  19. None
  20. None
  21. 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 Type Output Process Input
  22. 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 Type Output Process Input
  23. 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 Type Output Process Input
  24. 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 Type Output Process Input
  25. 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 Type Output Process Input
  26. Web PWA Dedicated Generic Native Hybrid Native Code Native Container

    Native Language Cross-Compile Trans-Compile Native Language Include Runtime Interpreter, VM, Libraries App Type Output Process Input Ionic Other Language HTML/CSS/JS
  27. Web PWA Dedicated Generic Native Native Code Native Language Cross-Compile

    Trans-Compile Native Language App Type Output Process Input React Native Other Language JS Include Runtime Interpreter, VM, Libraries Hybrid Native Container
  28. Web PWA Dedicated Generic Native Native Code Native Language Cross-Compile

    Trans-Compile Native Language App Type Output Process Input Xamarin Other Language C# Include Runtime Interpreter, VM, Libraries Hybrid Native Container Android iOS
  29. Web PWA Dedicated Generic Native Native Code Native Language Cross-Compile

    Trans-Compile Native Language App Type Output Process Input Flutter Other Language Dart Include Runtime Interpreter, VM, Libraries Hybrid Native Container
  30. JS/Wasm Include Runtime Interpreter, VM, Libraries Web PWA Dedicated Generic

    Native Hybrid Native Code Native Container Cross-Compile Trans-Compile App Type Output Process Input Kotlin Multiplatform Other Language Native Language Kotlin Android Web iOS
  31. JS/Wasm Include Runtime Interpreter, VM, Libraries Web PWA Dedicated Generic

    Native Hybrid Native Code Native Container Cross-Compile Trans-Compile App Type Output Process Input Kotlin Multiplatform Other Language Native Language Kotlin Android Web iOS
  32. JS/Wasm Include Runtime Interpreter, VM, Libraries Web PWA Dedicated Generic

    Native Hybrid Native Code Native Container Cross-Compile Trans-Compile App Type Output Process Input Kotlin Multiplatform Other Language Native Language Kotlin Android Web iOS
  33. JS/Wasm Include Runtime Interpreter, VM, Libraries Web PWA Dedicated Generic

    Native Hybrid Native Code Native Container Cross-Compile Trans-Compile App Type Output Process Input Kotlin Multiplatform Other Language Native Language Kotlin Android Web iOS
  34. VM/Interpreter Web Native Hybrid Responsive Web Cordova Traditional Android Traditional

    iOS
  35. VM/Interpreter Web Native Hybrid Xamarin Android Responsive Web Cordova Traditional

    Android Xamarin iOS Traditional iOS
  36. VM/Interpreter Web Native Hybrid Xamarin Android Responsive Web Cordova Traditional

    Android Xamarin iOS Traditional iOS React Native
  37. VM/Interpreter Web Native Hybrid Xamarin Android Responsive Web Cordova Traditional

    Android React Native Xamarin iOS Flutter Android/iOS Traditional iOS
  38. VM/Interpreter Web Native Hybrid Xamarin iOS Xamarin Android Responsive Web

    Cordova Traditional Android React Native Flutter Android/iOS PWA Traditional iOS
  39. VM/Interpreter Web Native Hybrid Xamarin iOS Xamarin Android Responsive Web

    Cordova Traditional Android React Native Flutter Android/iOS PWA Traditional iOS Wasm
  40. VM/Interpreter Web Native Hybrid Xamarin iOS Xamarin Android Responsive Web

    Cordova Traditional Android Traditional iOS React Native Flutter Android/iOS PWA Wasm KMP Android KMP Wasm KMP JVM KMP JS KMP iOS
  41. None
  42. 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
  43. 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
  44. 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
  45. 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
  46. 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
  47. Native to Developer Changing Perspectives

  48. Native to Developer Changing Perspectives Native to Platform

  49. Native to Developer Changing Perspectives Native to Platform Native to

    User
  50. Technology Native to Developer Native to Platform Native to User

    Xamarin React Native Flutter KMP Changing Perspectives: Web
  51. Technology Native to Developer Native to Platform Native to User

    Xamarin React Native Flutter KMP Changing Perspectives: Android
  52. Technology Native to Developer Native to Platform Native to User

    Xamarin React Native Flutter KMP Changing Perspectives: iOS
  53. Technology Native to Developer Native to Platform Native to User

    Xamarin React Native Flutter KMP Changing Perspectives: iOS near future
  54. Changing Perspectives: iOS near future Technology Native to Developer Native

    to Platform Native to User Xamarin React Native Flutter KMP
  55. Changing Perspectives: iOS near future Technology Native to Developer Native

    to Platform Native to User Xamarin React Native Flutter KMP
  56. Changing Perspectives: iOS near future Technology Native to Developer Native

    to Platform Native to User Xamarin React Native Flutter KMP Kotlin Native Interop Generics
  57. 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
  58. Mapping the Quest through Time

  59. Fully Native Multiplatform Algol68C 50’s & 60’s 70’s 80’s C

    XLT86 IBM PC Intel 8086 Algol CPU Era
  60. Fully Native Multiplatform Algol68C 50’s & 60’s 70’s 80’s C

    XLT86 Operating Systems IBM PC Intel 8086 Algol OS Era
  61. HTML 90’s 2000’s Partially Native Multiplatform Netscape Fully Native Multiplatform

    IE Win/Mac Opera JavaScript Java Flash Mozilla/Firefox Safari CSS Web Era
  62. Hybrid iPhone 2000’s 2010’s Adobe Air Responsive Web Chrome, V8

    Android NodeJS Cordova Appcelerator Mobile Era Partially Native Multiplatform Fully Native Multiplatform
  63. 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
  64. Hybrid Mapping the Quest through Time 50’s Modern Partially Native

    Multiplatform Fully Native Multiplatform
  65. Efficient Developers More Features Fewer Bugs Efficient Developers Kotlin Multiplatform

  66. Other Solutions Lower Performance Slower Innovation Poor UI Vendor Lock-in

    Kotlin Multiplatform
  67. Native Performance Other Solutions Lower Performance Slower Innovation Poor UI

    Vendor Lock-in Kotlin Multiplatform
  68. Native Performance Other Solutions Native Interop Lower Performance Slower Innovation

    Poor UI Vendor Lock-in Kotlin Multiplatform
  69. Other Solutions Native UX Native Performance Native Interop Lower Performance

    Slower Innovation Poor UI Vendor Lock-in Kotlin Multiplatform
  70. Kotlin Multiplatform Lower Performance Other Solutions Native Dev Experience Native

    UX Native Performance Native Interop Slower Innovation Poor UI Vendor Lock-in
  71. Your Homework

  72. Your Homework • Watch related conference talks

  73. Your Homework • Watch related conference talks • Clone some

    projects
  74. Your Homework • Watch related conference talks • Clone some

    projects • Contribute to and be supported by the community
  75. 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