Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Creative Coding 11 - Why Native App Development Isn't Dead Yet

Creative Coding 11 - Why Native App Development Isn't Dead Yet

A brief explanation of native app development benefits/drawbacks compared to Flutter and React Native to understand why developers still use native development. This was presented at Creative Coding 11 - https://www.meetup.com/Creative-Coding-NYC/events/253172684/

Adam McNeilly

August 29, 2018
Tweet

More Decks by Adam McNeilly

Other Decks in Programming

Transcript

  1. Native Development Native applications are applications written for a specific

    platform using the corresponding tooling. This is done in Android Studio for Android, and Xcode for iOS. @AdamMc331 3
  2. Cross Platform Development Cross platform applications are built using some

    development tool that allows you to write a single codebase that can run on both operating systems. @AdamMc331 4
  3. Hybrid Applications Hybrid applications contain some portions of native application

    code that run alongside some cross platform features. @AdamMc331 5
  4. Native Application Benefits 1. Fully supported by the corresponding platform

    2. Better performance in both speed and memory @AdamMc331 6
  5. Native Application Drawbacks 1. Must manage two codebases 2. Twice

    the development time 3. Costs more money @AdamMc331 7
  6. Cross Platform Application Benefits 1. Can manage one codebase 2.

    Less development time 3. Costs less money @AdamMc331 9
  7. Cross Platform History — First attempts used webviews — Webviews

    are components that display websites @AdamMc331 10
  8. Cross Platform History — First attempts used webviews — Webviews

    are components that display websites — Webviews need a "bridge" to interract with the platform @AdamMc331 10
  9. Cross Platform History — First attempts used webviews — Webviews

    are components that display websites — Webviews need a "bridge" to interract with the platform — This is slow @AdamMc331 10
  10. Understanding Cross Platform Drawbacks To understand the drawbacks of cross

    platform development today, let's look at two common tools: @AdamMc331 11
  11. Understanding Cross Platform Drawbacks To understand the drawbacks of cross

    platform development today, let's look at two common tools: 1. React Native @AdamMc331 11
  12. Understanding Cross Platform Drawbacks To understand the drawbacks of cross

    platform development today, let's look at two common tools: 1. React Native 2. Flutter @AdamMc331 11
  13. React Native Build native mobile apps using JavaScript and React1.

    1 https://facebook.github.io/react-native/ @AdamMc331 13
  14. React Native 1. Written in JavaScript, but with a native

    UI 2. We have two realms: native and JavaScript @AdamMc331 14
  15. React Native 1. Written in JavaScript, but with a native

    UI 2. We have two realms: native and JavaScript 3. Realms must communicate over the bridge @AdamMc331 14
  16. React Native 1. Written in JavaScript, but with a native

    UI 2. We have two realms: native and JavaScript 3. Realms must communicate over the bridge 4. This is slow @AdamMc331 14
  17. React Native Here lies one of the main keys to

    understanding React Native performance. Each realm by itself is blazingly fast. The performance bottleneck often occurs when we move from one realm to the other. In order to architect performant React Native apps, we must keep passes over the bridge to a minimum2. — Tal Kol 2 https://medium.com/@talkol/performance-limitations-of-react-native-and-how-to-overcome-them-947630d7f440 @AdamMc331 15
  18. React Native Case Studies 1. React Native at Airbnb 2.

    React Native: A retrospective from the mobile- engineering team at Udacity @AdamMc331 16
  19. Giving Credit To React Native 1. Iterate quickly 2. Opportunity

    for shared code 3. Amazing community support @AdamMc331 17
  20. Flutter is Google’s mobile app SDK for crafting high-quality native

    interfaces on iOS and Android in record time3. 3 https://flutter.io @AdamMc331 19
  21. How Flutter Works 1. Flutter draws a blank canvas on

    the device 2. Flutter rendering engine draws the app on top of that @AdamMc331 20
  22. How Flutter Works 1. Flutter draws a blank canvas on

    the device 2. Flutter rendering engine draws the app on top of that 3. Flutter rendering engine is really fast @AdamMc331 20
  23. Flutter The fact that Flutter is the only mobile SDK

    that provides reactive views without requiring a JavaScript bridge should be enough to make Flutter interesting and worth trying...4 4 https://hackernoon.com/whats-revolutionary-about-flutter-946915b09514 @AdamMc331 21
  24. Flutter Drawbacks — Rendering engine has to ship with the

    APK/IPA bundle — This means large downloads @AdamMc331 22
  25. Flutter Case Studies 1. Rise Up! — The story of how the

    Hamilton App uses Flutter to do more for its fans. @AdamMc331 23
  26. Flutter Case Studies 1. Rise Up! — The story of how the

    Hamilton App uses Flutter to do more for its fans. 2. Flutter Showcase @AdamMc331 23
  27. Giving Credit To Flutter 1. Iterate quickly 2. Write once,

    runs on both platforms @AdamMc331 24
  28. Giving Credit To Flutter 1. Iterate quickly 2. Write once,

    runs on both platforms 3. Amazing community support @AdamMc331 24
  29. Quick Recap 1. Single codebase - sounds nice, not always

    practical 2. React Native brings great benefits, but is slow @AdamMc331 25
  30. Quick Recap 1. Single codebase - sounds nice, not always

    practical 2. React Native brings great benefits, but is slow 3. Flutter brings great benefits, but has overhead @AdamMc331 25
  31. Sooner than we think, multiplatform developers will be on very

    high demand5. — Jorge Coca, BMW 5 https://speakerdeck.com/jorgecoca/let-swift-equals-equals-val-kotlin-why-ios-is-so-important-for-android-and-vice-versa? slide=27 @AdamMc331 27
  32. Looking Forward 1. Need increased performance 2. Need smaller APK

    sizes 3. Need less stubborn native devs @AdamMc331 28
  33. Looking Forward 1. Need increased performance 2. Need smaller APK

    sizes 3. Need less stubborn native devs 4. Need a migration plan @AdamMc331 28
  34. My Take — Cross platform is great for getting running

    quickly, especially if you don't have the resources or expertise for both platforms @AdamMc331 29
  35. My Take — Cross platform is great for getting running

    quickly, especially if you don't have the resources or expertise for both platforms — Performance and reliability of native development is difficult to turn away from @AdamMc331 29
  36. My Take — Cross platform is great for getting running

    quickly, especially if you don't have the resources or expertise for both platforms — Performance and reliability of native development is difficult to turn away from — BUT someday cross platform tools are going to catch up @AdamMc331 29