Skip to content

Performance

LeoTM edited this page Oct 28, 2025 · 101 revisions

Problems

  • no boot
  • slow (cold/warm/hot) start
  • crash
  • freeze/lock
  • hanging
  • slow/delay resp (ui, rtt)
  • stutter (fps)
  • error (un)handled (fe, be)
  • tearing (ui:fps/hz, data)
  • broken ui
  • high battery (cpu)
  • high/leaky ram
  • fat bundle/app

Causes

  • js
    • logic/renders, caching, nested views, ScrollView
    • native libs (reanimated/nav/flashlist/etc), state man arch, react 19 (compiler/useSyncExternalStore/etc)
  • js engine
    • (webkit/android)jsc/v8/(static)hermes
  • rn arch
    • old 60ps
    • new(jsi) 120fps
  • renderer
    • fabric/skia
  • modules
    • (turbo/nitro)modules
  • starvation
    • 5% power saver mode (cpu)
    • 99% used (disk)
    • offline / 3G (network)
  • user agent
    • blue light filter
    • magnification
  • concurrency (threads)
    • hogging
    • (dead/live)lock
    • race condition
  • backend
    • http/rest
    • gql
    • sockets
    • webrtc

Metrics

  • release
    • adoption
    • crash-free sessions
    • new/retained/resurrected/inactive users
    • reviews/rating
  • tti
    • tfcp
    • tfmp
  • errors
    • (un)handled
    • stacktrace (sourcemaps)
    • events (analytics)
  • ui
    • fps (js/native)
    • renders
  • cpu
  • ram
  • network
    • rtt
    • downtime
  • battery
  • size
    • apk/ipa
    • js bundle (txt)
    • hbc (bin)
  • analytics
    • events (single, series)
    • users (data, groups)
  • e2e screens/vids
  • The only metric that matters to me

Tools

Dev mode (errors/warnings)

  • Flipper React Native DevTools
    • Perf Monitor

Release builds (perf)

  • iOS: Xcode > Instruments
    • xcrun instruments xctrace
  • Android: Studio Profiler
    • Systrace Perfetto

Libs

image

https://reactnative.dev/docs/next/performance

https://react.dev/reference/dev-tools/react-performance-tracks

Clone this wiki locally