Platform Backend

@ottrelite/backend-platform

This plugin is the platform-specific backend implementation for RN Ottrelite Core. On Android, it utilizes ATrace (Android tracing API), on iOS it utilizes the OSSignposter API.

Supported features

FeatureSupport level
synchronous traces ({begin,end}Event)Android: API level 23\geqslant 23 (Android M);
asynchronous traces ({begin,end}AsyncEvent)Android: API level 29\geqslant 29 (Android Q)
counter events (counterEvent)Android: API level 29\geqslant 29 (Android Q)

Use case coverage

This backend is designed to cover development-time use cases, such as:

  • Profiling the app performance during development
  • Debugging performance issues

This backend is not designed for production use cases and should not be installed in such builds - be sure to conditionally install it from JS when a feature flag is set, such as isProfilingEnabled. To exclude it from the binary at build time, you can use the react-native.config.js file to specify that it should only be included in debug builds as per the documentation (iOS, Android).

Installation

To use this package, you need to install it in your React Native project:

npm install @ottrelite/backend-platform
# or
yarn add @ottrelite/backend-platform
# or
pnpm add @ottrelite/backend-platform

And register the backend with Ottrelite Core in your entrypoint file (e.g. index.js):

import { OttreliteBackendPlatform } from '@ottrelite/backend-platform';
import { Ottrelite } from '@ottrelite/core';

// register the platform backend
Ottrelite.install([OttreliteBackendPlatform, ...]);

import { AppRegistry } from 'react-native';
import App from './src/App';
import { name as appName } from './app.json';

AppRegistry.registerComponent(appName, () => App);

Recording the trace

Android

You can record and view traces in two ways:

  • using Android Studio's Profiler's 'Capture System Activities' option, as per the documentation; this method works both on physical devices & the Android emulator
  • using the perfetto CLI tool, which is distributed as part of the Android OS onboard most modern devices. More details can be found in the documentation; the resulting file can be viewed in Perfetto UI; this method works only on a physical device

iOS

You can view the traces in Xcode Instruments, as per the documentation.

The traces will be signpost-ed using the OSSignposter API, using the default OS_LOG_DEFAULT logger.

Need to boost your app's performance?
We help React Native teams enhance speed, responsiveness, and efficiency.