Docs / IntroductionBrowse

perfbit documentation

perfbit instruments your React Native app with a single SDK call and reports cold starts, screen load times, frame drops, crash-free rate and network timing — broken down per app version, so you can tell which build made things slower.

How it works

You install @perfbitapp/rn-sdk and call PerfSDK.init() once, near the top of your app. From that point the SDK measures your app in the background, batches what it collects, and posts it to perfbit every 30 seconds. There is no manual instrumentation to write — no spans to open, no events to name.

Each event carries the appVersion you passed to init(). That is the dimension the dashboard is built around: pick two versions and see exactly which metrics moved between them.

What the SDK collects automatically

  • Cold and warm start — time from JS bundle evaluation to the app becoming active, and time to resume from background.
  • Screen load time — per screen name, once you pass a React Navigation ref.
  • Slow and frozen frames — sampled continuously and reported in 10-second windows.
  • Crash-free session rate— unhandled JavaScript errors, captured through React Native's global error handler.
  • Network request timing — duration and status code for every fetch and XMLHttpRequest.

See Metrics for exactly how each of these is measured.

What it does not collect

perfbit collects no personally identifiable information about your app's end users. Session IDs are random and are not linked to any user identity. Network tracking records the request URL reduced to its origin and path — query strings are stripped, and request and response bodies are never read.

There is also no bundle size analysis, no native crash symbolication, and no custom event API. perfbit measures the runtime behaviour listed above and nothing else.

Requirements

  • React Native >=0.70.0
  • @react-navigation/native >=6.0.0 — optional, and only needed for screen tracking
  • iOS and Android

Note

The SDK is pure JavaScript — no native modules, no config plugin, no expo prebuild. It works in Expo's managed workflow and in Expo Go, as well as bare React Native.

Start here