Tooling

Mobile — Performance Profiling

Instruments, Android Studio Profiler, Perfetto, Flutter DevTools, MetricKit, Firebase Performance.

Performance profiling on mobile splits into local instruments (Xcode Instruments, Android Studio Profiler, Perfetto) and field telemetry (MetricKit, Firebase Performance, Sentry, Emerge Tools). For crash data see Mobile — Crash Reporting. For app size analysis see Mobile — CI/CD & Build Tools.

iOS / Apple

  • Instruments — Xcode-shipped profiler; the primary tool. Templates: Time Profiler, Allocations, Leaks, Energy Log, Network, System Trace, Hangs, App Launch.
  • Hangs Instrument — find main-thread hangs > 250ms.
  • App Launch Instrument — pre-main, dyld, runtime init.
  • MetricKit — opt-in field metrics from real users (battery, hangs, launch, scroll); free; Apple-published.
  • Xcode Organizer → Metrics — aggregated MetricKit data per release.
  • Time Profiler — sampling CPU profiler.
  • Allocations + Leaks — memory analysis.
  • Network Instrument — request waterfall.
  • os_signpost — annotate your code for profiling traces.

Android / Google

  • Android Studio Profiler — CPU, Memory, Energy, Network unified; live or recorded.
  • Perfetto — system-wide tracing tool; the modern replacement for systrace; great for finding off-main-thread issues, frame drops, binder calls. Free, Google.
  • Macrobenchmark / Microbenchmark (Jetpack) — measure cold start, frame timing, Compose recomposition perf as part of CI.
  • Baseline Profiles — AOT-compiled hotpath profiles to ship in your APK; measurable startup wins.
  • systrace / atrace — older tracing; use Perfetto.
  • strace / simpleperf — low-level CPU sampling.
  • Layout Inspector recomposition counts — Compose-specific.

React Native

  • Hermes Profiler — JS sampling profiler; load .cpuprofile in Chrome DevTools.
  • Flashlight (BAM) — real-device perf measurement; FPS, CPU, memory; OSS.
  • react-native-performance (Shopify) — perf timing primitives.
  • Reactotron — basic instrumentation.

Flutter

  • Flutter DevTools — performance overlay, frame chart, CPU profiler, memory.
  • Timeline.startSync / Timeline.timeSync — annotate code for traces.
  • --profile mode — required for accurate measurements.

KMP / Compose Multiplatform

  • Profile per-platform (Instruments on iOS, Android Studio Profiler on Android). KMP shared code shows up in both.

Field perf monitoring

  • Firebase Performance Monitoring — free; HTTP, screen render, custom traces.
  • Sentry Performance — distributed tracing across mobile + backend; free OSS self-host or hosted free tier. See observability.
  • Datadog RUM Mobile — paid.
  • New Relic Mobile — paid.
  • Embrace — mobile-native APM; paid.
  • Bugsnag Performance — paid.
  • Emerge Tools — performance + size + snapshots; paid.

App size

  • Emerge Tools — paid; the most-recommended tool for app-size analysis.
  • App Size Tool (Apple) — Xcode-bundled.
  • Android Studio APK Analyzer — built in.
  • Bundletool size analysis — for AABs.
  • react-native-bundle-visualizer, source-map-explorer for RN.

Battery / energy

  • Energy Log Instrument (iOS) — find background CPU / radio activity.
  • Battery Historian (Google) — Android energy analysis.
  • MetricKit signposts for energy — appear in Xcode Organizer.

Pick this if…

  • iOS primary: Instruments + MetricKit; ship Baseline Profiles' equivalent (no AOT-profile concept on iOS, but os_signpost + Hangs Instrument).
  • Android primary: Android Studio Profiler + Perfetto + Baseline Profiles + Macrobenchmark in CI.
  • RN: Hermes Profiler + Flashlight; field via Sentry Performance.
  • Flutter: Flutter DevTools profile mode.
  • Cross-platform field RUM: Sentry Performance or Firebase Performance.
  • Need app size dashboards: Emerge Tools.

On this page