This guide covers building an RC (Release Candidate) release, recording a Hermes CPU profile in production conditions, retrieving the trace on iOS and Android, and viewing it in Chrome's tracing UI.
- Create a branch off the commit you want to profile and bump the version to
7.XX.99. - In Bitrise, trigger
release_rc_builds_to_store_pipelinefor that branch.
- Once
deploy_ios_to_storecompletes, install the RC build from TestFlight.
- Download and install the release APK from the
build_android_main_rcworkflow (Artifacts tab).
On a physical device, open the Profiler UI (shake gesture), then:
- Tap Start → reproduce the journey you want to measure → tap Stop.
- iOS: tap Export to send the file to yourself (AirDrop, Files, iCloud, etc.).
- Android: the
.cpuprofileis written to the device's Downloads folder automatically.
Notes:
- Each session writes a unique file; previous traces are not overwritten.
- iOS ignores "save to downloads" and always writes to Caches; use Export to share it.
- Android copies to Downloads when profiling stops.
Chrome's tracing UI expects a JSON trace. Convert the .cpuprofile first:
yarn react-native-release-profiler --local /path/to/profile.cpuprofileTo have sourcemaps on the tracing, to be easier to identify the processes that are happening, convirt the .cpuprofile with this argument:
yarn react-native-release-profiler --local /path/to/profile.cpuprofile --sourcemap-path /path/to/sourcemapsYou can find the sourcemaps at the artifcacts generated when running release_rc_builds_to_store_pipeline in bitrise, under the name Android_Sourcemaps_prodRelease.zip, download and unzip it.
Then open Chrome and load the generated JSON:
- Navigate to
chrome://tracing→ Load → select the JSON file.
Other viewers:
- SpeedScope: open the
.cpuprofiledirectly at https://www.speedscope.app - Perfetto UI: open the converted JSON at https://ui.perfetto.dev