Slide 1

Slide 1 text

Build profiling Jamie Birch

Slide 2

Slide 2 text

Contents I'll introduce a couple of debug-mode cold build profiles for both iOS and Android. We'll see what we can learn from each of them in turn.

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

React-Native core expo-modules-core Expo Modules native modules
 ʢe.g. react-native-webviewʣ React-RCTFabric Fabric modules? Codegen React-Fabric Libraries without dependencies ʢe.g. yogaʣ

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Totalɿ1m 55s :*:buildCMakeDebug Each architectureʢarm64-v8aɺarmeabi-v7aɺx86ɺx86_64ʣgets built serially in turn. app: 7.8 + 8.1 + 6.2 + 7.9 = 30ඵ expo-modules-core: 5.2 + 4.7 + 5.2 + 4.4 = 20ඵ react-native-quick-sqlite: 9.2 + 9.2 + 8.8 + 9.6 = 37ඵ react-native-screens: 1.5 + 1.4 + 1.4 + 1.4 = 6ඵ :react-native-quick-sqlite:buildCMakeDebug :expo-modules-core:buildCMakeDebug :app:buildCMakeDebug ˎ ˎ ˎ ˎ ˎ ˎ ˎ ˎ ˎ ˎ ˎ ˎ :react-native-screens:buildCMakeDebug ˎˎ ˎˎ :*:compileDebugKotlin expo-modules-core: 🚧 23ඵ ɹ├ expo-asset: 1ඵ ɹ├ expo-constants: 1ඵ ɹ├ expo-file-system: 4ඵ ɹ├ expo-font: 1ඵ ɹ├ expo-keep-awake: 1ඵ ɹ└ expo-splash-screen: 1ඵ react-native-screens: 14ඵ react-native-safe-area-context: 7ඵ react-native-webview: 7ඵ ˎ ˎ ˎ ˎ ˎ ˎ ˎ ˎ ˎ ˎ 🚧

Slide 7

Slide 7 text

Conclusion • Builds have both parallel and serial stages. • As much as possible, we want to build in parallel. • Of course, prebuilt modules would be ideal. • The React Native iOS core will be improved in future. • Someone should really look into buildCMakeDebug's settings!

Slide 8

Slide 8 text

Profile Tokyo Engineer at @shirakaba @birch_js @shirakaba.bsky.social Thanks for watching! Jamie Birch δΣΠϛʔ ό ʔ ν ໊ බ