MediumI Spent a Week Building a Fitness Wearable Companion App in React Native. Here’s What Actually Took the Time. | by Hugorus | Medium
Sitemap

I Spent a Week Building a Fitness Wearable Companion App in React Native. Here’s What Actually Took the Time.

3 min readJul 8, 2026

--

The UI took a day. The permissions took two days. Bluetooth would have taken the whole week by itself. Here’s the honest breakdown.

I set out to build a small fitness wearable companion app in React Native. A dashboard that pulls together everything my Apple Watch, my Whoop strap, and my Oura ring already know. One place to see my week.

I gave myself a week. Here is what took the time — and what did not.

The UI took a day

Five screens. Dashboard, workout detail, trends, devices, onboarding. React Native, Expo, NativeWind for styling. I scaffolded the whole thing in a single prompt on RapidNative and had a running app the same afternoon. Real navigation. Real theme. Dark mode. Charts. Empty states. Done.

I remember when I would have spent a week on that alone.

The permissions took two days

This is the part I did not budget for. HealthKit needs purpose strings — the sentences a user reads when the system asks if you can see their heart rate. I wrote generic ones the first time and Apple’s docs politely told me they would be rejected. I rewrote them user‑facing and specific.

Get Hugorus’s stories in your inbox

Join Medium for free to get updates from this writer.

Then Health Connect on Android — which, by the way, has completely replaced Google Fit; every tutorial from 2023 is now wrong — needs its own permission declaration in the manifest and a separate justification form on the Play Console.

I did not know that on Monday. I knew it on Wednesday.

Reading the data was easy

react-native-health and react-native-health-connect do most of the work. You initialize, you request permissions, you read records. Twenty lines to get today's step count on both platforms.

The trap is the simulator. HealthKit does not stream real data to the iOS Simulator. Health Connect does not exist in most Android emulator images. Physical devices are the only honest test.

Bluetooth Low Energy would have taken the whole week by itself

I wanted a live heart rate chart during a workout. Direct BLE, react-native-ble-plx, scan for the heart rate service, subscribe to the characteristic. It worked on my chest strap. It did not work on a friend's Polar. It half‑worked on his older Garmin.

I dropped BLE from v1. Live heart rate is a great v2. It is not worth two weeks of protocol work at launch.

What I learned

The interesting engineering in a wearable companion app is the data layer. HealthKit permissions. Health Connect approvals. BLE reconnect logic. Trend math.

Everything around that — the screens, the navigation, the theme, the charts, the settings — is boilerplate. It is the part that eats a solo builder’s runway and adds no product value.

If you are building one of these apps, I would tell you what I told myself: do not spend a week on the UI. Scaffold it. Save the week for the part where your product actually lives.

I built mine with RapidNative. No affiliation beyond being a happy user.

👏 if you’ve also underestimated Health Connect approvals or lost a week to BLE quirks. And if you’re building a wearable companion app right now, drop what you’re stuck on in the comments — I might share the health‑data integration code in a follow‑up if there’s interest.

--

--