(Cross Multi) Platform - leotm/react-native-template-new-architecture GitHub Wiki

Which now?

  • team comp
  • existing app? (brownfield)
  • product requirements
  • company resources
  • maturity (lindy effect)
  • devXP (buildtime / debugging / error monitoring)
  • js/npm eco
  • platforms
  • simplicity
  • arch (lifecycle)
  • (declara/impera)tive/both
  • (iteration) speed
  • perf
  • typing: static analysis / unsound/dynamic (build/compile) / sound/static (run/exec)
  • accessibility
  • ai integration support

Native (Google/Apple)

2013 Xamarin (Microsoft)

  • C# -> native(+Windows)
  • succeeded by .NET MAUI, 2024 ☠️

2014 NativeScript (Telerik)

  • js/ts -> native
  • 2015 official
  • 20:15 angular ☠️ 19 vue 20 svelte 23 react/solid

2015 React Native RN (Meta)

  • js/ts -> bridge new arch -> native
    • build: JSI codegen TurboModule(lazy) jsi::HostObject's
    • js/ts TurboModule(APIs)/FabricComponent(UI) type spec (codegen) -> JSI(C++) -> native
    • (e.g. onPress) native UI event (main/UI thread) Fabric -> ...
    • (e.g. battery) native event sub (native thread) TurboModule -> ...
    • (e.g. app logic) js event (js thread) -> JSI(C++) -> TurboModule -> ...
      • ... JSI(C++) -> event loop [React Fiber (async): update tree state/props, logic, new WIP tree, diff algo... RN Fabric (JSI): new shadow(C++) tree in RAM] (js thread) -> Fabric: yoga shadow tree diff, calc mutations queued (shadow/bg thread) -> Fabric: native UI update (main/UI thread)
  • js OTA: codepush expo eas)
  • js VM: debug: V8, prod: JSC/(Static)Hermes/any

2017 Flutter (Google)

  • Dart <-> native bridge
  • no VM (prod)
  • UI: canvas (component updates have no effect)
    • Material Design (Android/iOS)
    • Cuptertino (native iOS)

2019 Svelte Native

  • TODO

2020 KMM (JetBrains)

  • write native ez
  • no VM
  • shared logic
  • keep native UI
    • no eco, works w native platform eco's
    • SwiftUI / Jetpack Compose
  • no intermediate layer
    • no interop bottlenecks

2020 .NET Multi-platform App UI (.NET MAUI) Microsoft

  • C#, XAML -> native(+Windows/macOS)
  • 2022 official

2025 LynxJS (ByteDance)

  • TODO

2025 Valdi (SnapChat)

  • TODO

2026 Angular Native

  • web: Angular
  • RN Fabric
  • Expo (go, eas, rn-screens)
  • e.g. @ng-native/components: rn-gesture-handler, rn-reanimated, rn-safe-area-context, rn-keyboard-controller, @rn-masked-view/masked-view
  • comparison

More