Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Re-Architecture of ReactNative Sota Ohara Nihonbashi.js #7 2023/09/06
Slide 2
Slide 2 text
Profile Sota Ohara @sottar_ CureApp, inc. EM / SWE RENDEZ-VOUS inc. CTO @sottar
Slide 3
Slide 3 text
OR
Slide 4
Slide 4 text
Performance
Slide 5
Slide 5 text
Performance ● ReactNative は Bridge を通して Platform にアクセスする ● 独自で Widget を持っていないので Bridge を通して Platform の Widget を取得する必要がある
Slide 6
Slide 6 text
NativeBridge JavaScript (JavaScriptCore) Native Android - Java iOS - Obj C / Swift RN Bridge (C++) ● 引数, 返り値などは JSON を使ってやりとり ● 実行時には非同期に処理される ● アプリ起動時に Module が登録される JSON JSON
Slide 7
Slide 7 text
JSI (JavaScript Interface)
Slide 8
Slide 8 text
JSI JavaScript が C++ のオブジェクトへのリファレンスを持つことで、直接 C++ の コードを実行できる仕組み • JSON を serialize/deserialize する必要がなくなる • Native のコードを同期的に呼び出すことができる • 起動時に Module を登録する必要がなくなる ReactNative 内部で使用する JavaScript の engine を選べるようになった
Slide 9
Slide 9 text
Turbo Modules Fabric Native Components
Slide 10
Slide 10 text
Turbo Modules JSI の仕組みを使った新しい Native Module システム Location や Bluetooth など Native の機能を同期的に実行することができる JS Thread JSI Native Android - Java iOS - Obj C / Swift
Slide 11
Slide 11 text
Fabric Native Components • Fabric Renderer を使用して画面上に Native Component をレンダリング するもの • JSI を使用することで View の更新を同期的に行う仕組み • React Concurrent Mode を前提に書かれていて、ユーザーのインタラクショ ンに優先順位をつけて最適な描画を行えるようになる
Slide 12
Slide 12 text
Performance Benchmarks https://github.com/reactwg/react-native-new-architecture/discussions/123
Slide 13
Slide 13 text
Thank you.