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

The new architecture is here… what now? 3.0

The new architecture is here… what now? 3.0

updated version of the talk with new mentions of RN 71+, updates from core and a few React Advanced 2022 elements
---
The React Native new architecture has been "coming next year!" since 2019 - but, this time, it’s actually here! So… what now? What do we actually need to do, to benefit from this all new shiny tech?
In this talk, I want to provide some insights and in-depth analysis of the current state of the migration path to the new architecture, to help you and your team evaluate and estimate when and how and how long it will take you to get to the next level!

Lorenzo 'kelset' Sciandra

October 21, 2022
Tweet

More Decks by Lorenzo 'kelset' Sciandra

Other Decks in Programming

Transcript

  1. @kelset kelset.dev 👋 Lorenzo Sciandra (he/him) Senior Software Engineer @

    Microsoft 
 React Native core maintainer & releaser (since 2018) @ReactAdvanced 21-oct-22 @kelset 2
  2. THE OLD ARCHITECTURE 📄 React JS Bundle Native UI Native

    Modules Metro JSC Yoga JSON JSON bridge Shadow thread UI thread JS thread @ReactAdvanced 21-oct-22 @kelset 4
  3. THE NEW REACT NATIVE (🪡) React JS Bundle Native UI

    Native Modules Metro JS* vm Yoga Shadow thread UI thread JS thread JSI Fabric TurboModules types Generated Interfaces Codegen @ReactAdvanced 21-oct-22 @kelset 5
  4. LET'S COMPARE THEM 🪡 > 📄 No more JSONs to

    communicate 
 ➡ Native interoperability & concurrency Faster Startup 
 ➡ Native components are lazily initialised by default Better memory management Less crashes Type safety 
 ➡ improved code quality Improved DX via new tooling @ReactAdvanced 21-oct-22 @kelset 6
  5. AN OVERVIEW OF THE PRACTICAL STEPS Premise: from 0.67 ->

    0.71+ 👏 & team @ReactAdvanced 21-oct-22 @kelset 11 src: aka.ms/rn-newarch
  6. THE CHALLENGERS Typing New arch con fi guration Third party

    libraries @ReactAdvanced 21-oct-22 @kelset 17
  7. TYPING • TurboModules + Codegen ➡ you need Typescript or

    Flow for all your code ✅ Primitive types ✅ Function types ✅ Object types ✅ Array types 🔴 Union types 🟡 Custom types 🟡 Read-only types 🟡 Exact* same signature across 🍎/🤖 🟡 Typescript support still in beta @ReactAdvanced 21-oct-22 @kelset 18
  8. NEW ARCH CONFIGURATION findNodeHandle UIManager.measure() setNativeProps requireNativeComponent🛠 dispatchViewManagerCommand To migrate

    to the new arch in your library… @ReactAdvanced 21-oct-22 @kelset 20 src: aka.ms/rn-nalib
  9. REACT 18 ⚛ Make sure that your state management is

    React 18 compliant: 👍 🚨Same for GraphQL clients🚨 Other libs I’ve heard support 18 well: 
 🐻 zustand 👻jotai 🆇 xstate @ReactAdvanced 21-oct-22 @kelset 26
  10. REACT 18 ⚛ Make sure that your state management is

    React 18 compliant: 👍 🚨Same for GraphQL clients🚨 Other libs I’ve heard support 18 well: 
 🐻 zustand 👻jotai 🆇 xstate aka.ms/rn-statelibs-guide @ReactAdvanced 21-oct-22 @kelset 27
  11. I left out quite a few more things The new

    arch is great YOU ME Refactoring View recycling Swift support Build times Non-core platforms @ReactAdvanced 21-oct-22 @kelset 30 slow JSI no newArch fl ag
  12. AND THIS IS WHERE I'D PUT BENCHMARKS IF I HAD

    ANY @ReactAdvanced 21-oct-22 @kelset 31
  13. Also viable: create-react-native-library React 18 
 + concurrent be on

    latest RN version use RNNewArchitectureApp use RNNewArchitectureLibraries @ReactAdvanced 21-oct-22 @kelset 36 react-native-test-app 
 supports new arch you will be able to use RNDirectory too
  14. CONCLUDING A. The new architecture is pretty, pretty awesome 🚀

    B. Migrating to it will take N months for most projects ⏳ C. Supporting OSS libraries is key to enabling the new arch 🛠 @ReactAdvanced 21-oct-22 @kelset 40
  15. Try fast, fail fast, tell everyone and help each other!

    @ReactAdvanced 21-oct-22 @kelset 41 CONCLUDING