Callstack Feb 11, 2025

Profiling Native Code in React Native with Tracy

Article Summary

Profiling React Native apps just got a serious upgrade. Tracy, the real-time profiler that game developers swear by, now works seamlessly with React Native's native layer.

Callstack's engineering team shows how to integrate Tracy profiler into React Native projects to visualize native code performance. This deep dive covers everything from initial setup to instrumenting custom native modules and analyzing frame-by-frame execution.

Key Takeaways

Critical Insight

Tracy gives React Native developers the same profiling power that AAA game studios use to optimize performance-critical code.

The article includes a surprising discovery about where React Native actually spends time during bridge communication.

About This Article

Problem

React Native developers can't easily see where performance problems happen in native code. It's hard to spot microsecond-level delays on iOS and Android at the same time without specialized tools.

Solution

Callstack's team added Tracy, a real-time profiler built for game studios, to React Native projects. It captures execution data frame-by-frame and shows how threads interact across native layers.

Impact

Developers can now check native code performance down to the microsecond with very little overhead. They can quickly find bottlenecks in TurboModules and custom JSI bindings that standard profiling tools miss.