Artur describes tracing a slow component hook to find which function or operation is taking the most time. Useful targets include asynchronous work, module loading, React Native internals, component renders, networking, and navigation. Enabling built-in tracing can require rebuilding React Native from source, adding instrumentation, and using platform-specific visualization tools.
Ottrelite: Tracing Framework for React Native
Speakers
Senior React Native developer Artur Morys-Magiera and senior Android developer Dominik Dolny of Callstack present Ottrelite at RUC 2025, covering tracing and observability for React Native.
Artur introduces Ottrelite as a library with a common tracing API for React components and React Native, without requiring a source build. It supports JavaScript, Kotlin, Java, C++, and Swift interfaces that connect to a shared C and C++ implementation. Developers can choose or implement a backend for development traces or production telemetry.
The demos show manual traces, metadata, stack traces, call hierarchies, and numeric values over time. Ottrelite connects to Tracy, Android ATrace for Android Studio Profiler or Perfetto, and iOS Signpost for Xcode Instruments. A Babel plugin can instrument function and class components, while a hook records JavaScript logic duration and native render time.
Artur explains how an Android Gradle plugin uses ASM to modify compiled bytecode, enabling tracing and inserting calls without editing React Native source. The example replaces a method in React Native’s SysTrace implementation with an AutoTrace Android method. The team says that if internal code changes, instrumentation may stop triggering, but should not cause crashes.
The OpenTelemetry integration lets developers send traces to tools such as Jaeger, Grafana, and Prometheus while also viewing them in development backends. The demo shows device and custom tags, plus JavaScript logic duration and native render time. Artur says setup uses Ottrelite’s tracer and meter providers and a span processor interceptor; Java, Kotlin, and Swift SDK integration is planned.
Takeaways
- Trace slow hooks and components to locate expensive work before optimizing.
- Use one tracing API across JavaScript and native code to compare activity across language boundaries.
- Choose a backend that fits the task: Tracy for live profiling, platform tools for native traces, or OpenTelemetry for production pipelines.
- A Babel directive and render tracing hook can expose both JavaScript execution time and native render time.
- ASM bytecode instrumentation can enable Android tracing without maintaining a custom React Native source build.
Mentioned in this talk
Search inside this talk
What was claimed 12
- role atArtur Morys-Magiera is senior React Native and AI engineer at
Callstack“I work as a senior React Native developer at Callstack”
0:00inMLC LLM + React Native: On-Device AI Without the PainYouTube Verified4 sources· Talk
- works atArtur Morys-Magiera works at
Callstack“I work at Callstack as a senior React Native developer.”
YouTube Unverified1 source· Talk
- role atDominik Dolny is senior Android developer at
Callstack“I work at Callstack as a senior Android developer.”
YouTube Unverified1 source· Talk
- works atDominik Dolny works at
Callstack“I work at Callstack as a senior Android developer.”
YouTube Unverified1 source· Talk
- featureOttrelite: Supports pluggable trace backends and development-time tracing without building React Native from source.
“No React Native build from source is needed. The tracing backend system is pluggable.”
YouTube Unverified1 source· Talk
- featureOttrelite: Provides a common tracing API across JavaScript, Kotlin, Java, C++, and Swift.
“The library provides a JavaScript API. An equivalent API is available for Kotlin and Java via JNI. The library also provides an API for C++ and Swift.”
YouTube Unverified1 source· Talk
- integrates with
“One wraps an open-source profiler named Tracy.”
YouTube Unverified1 source· Talk
- featureOttrelite: Provides a Babel plugin and hooks to instrument React components and trace render timing.
“We also provide a Babel plugin that automatically instruments your components.”
YouTube Unverified1 source· Talk






