Skip to content
Sri
All work

Scouting App Benchmark: React Native vs Native Java

I ran our scouting app against a native Java version on the actual tablet to decide whether a rewrite would be worth it.

Sole developer · 2026

Summary chart comparing the React Native and native Java scouting apps across latency, throughput, CPU and memory

Overview

The 2026 scouting app is React Native. This project asks, with repeatable measurements rather than opinion, whether a native Android rewrite would give a meaningful advantage in responsiveness, stability, or memory.

What I did

Solo project: both implementations of the workload, the harness, the analysis scripts, and the report.

Built with

  • React Native
  • Java
  • Android
  • Couchbase Lite
  • Python

Architecture

Two independent apps implement the same state machine and persistence, one in React Native with Hermes and one in Java with Android Views. A shared instrumentation library injects the touches and samples CPU, memory, and frame times.

A Python reference implementation of the state machine produces golden checksums. Both apps' reducers are unit-tested against it, and every benchmark run compares its final state and database contents with the reference.

The challenges

Making the comparison fair

The instrument has to be identical for both apps, and the workload deterministic. The workload is generated from one spec into event files with expected checksums, so a difference in results can't come from a difference in input.

Catching a flaw in my own driver

A first set of tablet runs lost one React Native tap per cycle because of a defect in the test driver. The affected workloads were rerun after the fix and the earlier set kept separate, rather than blended in.

Screenshots

Median UI latency for taps, screen changes and submits in each app
Median UI latency.
Cumulative distribution of counter tap latency for each app
Counter tap latency distribution.
Database operation latency for each app
Database latency.
Matrix of crashes, freezes and lost counters for each app and run
Reliability across runs.