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/

Bc87ea9c7a0f85b8761b716a677c6694?s=128

Adam McNeilly

August 29, 2018
Tweet

Transcript

  1. Why Native App Development Isn't Dead Yet Adam McNeilly -

    @AdamMc331 @AdamMc331 1
  2. Definitions @AdamMc331 2

  3. 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
  4. 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
  5. Hybrid Applications Hybrid applications contain some portions of native application

    code that run alongside some cross platform features. @AdamMc331 5
  6. Native Application Benefits @AdamMc331 6

  7. Native Application Benefits 1. Fully supported by the corresponding platform

    @AdamMc331 6
  8. Native Application Benefits 1. Fully supported by the corresponding platform

    2. Better performance in both speed and memory @AdamMc331 6
  9. Native Application Drawbacks @AdamMc331 7

  10. Native Application Drawbacks 1. Must manage two codebases @AdamMc331 7

  11. Native Application Drawbacks 1. Must manage two codebases 2. Twice

    the development time @AdamMc331 7
  12. Native Application Drawbacks 1. Must manage two codebases 2. Twice

    the development time 3. Costs more money @AdamMc331 7
  13. Cutting Down On Development Time @AdamMc331 8

  14. Cross Platform Application Benefits @AdamMc331 9

  15. Cross Platform Application Benefits 1. Can manage one codebase @AdamMc331

    9
  16. Cross Platform Application Benefits 1. Can manage one codebase 2.

    Less development time @AdamMc331 9
  17. Cross Platform Application Benefits 1. Can manage one codebase 2.

    Less development time 3. Costs less money @AdamMc331 9
  18. Cross Platform History @AdamMc331 10

  19. Cross Platform History — First attempts used webviews @AdamMc331 10

  20. Cross Platform History — First attempts used webviews — Webviews

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

    are components that display websites — Webviews need a "bridge" to interract with the platform @AdamMc331 10
  22. 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
  23. Understanding Cross Platform Drawbacks To understand the drawbacks of cross

    platform development today, let's look at two common tools: @AdamMc331 11
  24. 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
  25. 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
  26. React Native @AdamMc331 12

  27. React Native Build native mobile apps using JavaScript and React1.

    1 https://facebook.github.io/react-native/ @AdamMc331 13
  28. React Native @AdamMc331 14

  29. React Native 1. Written in JavaScript, but with a native

    UI @AdamMc331 14
  30. React Native 1. Written in JavaScript, but with a native

    UI 2. We have two realms: native and JavaScript @AdamMc331 14
  31. 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
  32. 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
  33. 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
  34. React Native Case Studies 1. React Native at Airbnb 2.

    React Native: A retrospective from the mobile- engineering team at Udacity @AdamMc331 16
  35. Giving Credit To React Native @AdamMc331 17

  36. Giving Credit To React Native 1. Iterate quickly @AdamMc331 17

  37. Giving Credit To React Native 1. Iterate quickly 2. Opportunity

    for shared code @AdamMc331 17
  38. Giving Credit To React Native 1. Iterate quickly 2. Opportunity

    for shared code 3. Amazing community support @AdamMc331 17
  39. Flutter @AdamMc331 18

  40. 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
  41. How Flutter Works @AdamMc331 20

  42. How Flutter Works 1. Flutter draws a blank canvas on

    the device @AdamMc331 20
  43. 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
  44. 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
  45. 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
  46. Flutter Drawbacks @AdamMc331 22

  47. Flutter Drawbacks — Rendering engine has to ship with the

    APK/IPA bundle @AdamMc331 22
  48. Flutter Drawbacks — Rendering engine has to ship with the

    APK/IPA bundle — This means large downloads @AdamMc331 22
  49. Flutter Case Studies @AdamMc331 23

  50. Flutter Case Studies 1. Rise Up! — The story of how the

    Hamilton App uses Flutter to do more for its fans. @AdamMc331 23
  51. 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
  52. Giving Credit To Flutter @AdamMc331 24

  53. Giving Credit To Flutter 1. Iterate quickly @AdamMc331 24

  54. Giving Credit To Flutter 1. Iterate quickly 2. Write once,

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

    runs on both platforms 3. Amazing community support @AdamMc331 24
  56. Quick Recap @AdamMc331 25

  57. Quick Recap 1. Single codebase - sounds nice, not always

    practical @AdamMc331 25
  58. Quick Recap 1. Single codebase - sounds nice, not always

    practical 2. React Native brings great benefits, but is slow @AdamMc331 25
  59. 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
  60. Why Native App Development Isn't Dead Yet @AdamMc331 26

  61. 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
  62. Looking Forward @AdamMc331 28

  63. Looking Forward 1. Need increased performance @AdamMc331 28

  64. Looking Forward 1. Need increased performance 2. Need smaller APK

    sizes @AdamMc331 28
  65. Looking Forward 1. Need increased performance 2. Need smaller APK

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

    sizes 3. Need less stubborn native devs 4. Need a migration plan @AdamMc331 28
  67. My Take @AdamMc331 29

  68. 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
  69. 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
  70. 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
  71. My Take @AdamMc331 30