RORK LABJP
TOOLING — Rork's developer repos keep moving: rork-xcode was updated on July 16, rork-device on July 15, and rork-plist on July 13OPUS46 — Claude Opus 4.6 is live in Rork, and Rork Max is built to assemble apps on top of Claude CodeSIM — A cloud iOS simulator runs in the browser, with one click to install on a device and two clicks to publish to the App StoreMAX — Rork Max emits pure Swift rather than React Native, reaching iPhone, iPad, Apple Watch, Apple TV, Vision Pro, and even iMessageNATIVE — That opens up HealthKit, ARKit and LiDAR, NFC, Dynamic Island, Live Activities, 3D through Metal, and on-device inference with Core MLSEED — Rork raised a $15M seed led by Left Lane Capital, with Peak XV and a16z Speedrun joining the roundTOOLING — Rork's developer repos keep moving: rork-xcode was updated on July 16, rork-device on July 15, and rork-plist on July 13OPUS46 — Claude Opus 4.6 is live in Rork, and Rork Max is built to assemble apps on top of Claude CodeSIM — A cloud iOS simulator runs in the browser, with one click to install on a device and two clicks to publish to the App StoreMAX — Rork Max emits pure Swift rather than React Native, reaching iPhone, iPad, Apple Watch, Apple TV, Vision Pro, and even iMessageNATIVE — That opens up HealthKit, ARKit and LiDAR, NFC, Dynamic Island, Live Activities, 3D through Metal, and on-device inference with Core MLSEED — Rork raised a $15M seed led by Left Lane Capital, with Peak XV and a16z Speedrun joining the round
Articles/Dev Tools
Dev Tools/2026-06-14Advanced

Reading Steps and Sleep into Your Rork Max Native App — HealthKit for Calm, Number-Light Wellness Apps

A walkthrough of adding HealthKit to the native Swift app Rork Max generates: reading steps, sleep, and heart rate, writing mindful sessions, and handling background delivery — including the App Store review wording and the production-only 'permission granted but zero data' trap.

Rork Max230HealthKit5Swift48WellnessPermissions4App Store Review8

Premium Article

When you run calm, wellness-style apps as an indie developer for long enough, requests start arriving like this: "Could you quietly show how far I walked today, next to the wallpaper on my home screen?" The goal is not to push numbers at people but to sit beside them gently. Once I framed it that way, borrowing the health data the iPhone already records felt far more honest than counting steps myself.

Because Rork Max generates native Swift apps in the browser, Apple-native frameworks like HealthKit — which take real effort to reach through React Native — are right there. This article walks through layering HealthKit onto the generated code, from permission design all the way to diagnosing why data fails to appear in production.

When Rork Max beats React Native for this job

HealthKit is designed to be touched directly from Swift or Objective-C. Expo (React Native) can reach it through a bridge such as react-native-health, but every new data type leaves you at the mercy of what the bridge has implemented. On an Expo test app I once tried to read heart rate variability and hit a wall: the bridge did not expose the relevant HKQuantityType, and that was the end of the road.

Rork Max emits a plain native app, so import HealthKit gives you Apple's types as-is — steps, sleep, heart rate, workouts — with no waiting on a bridge maintainer. The flip side is that native means you must follow the permission and background-delivery rules exactly, or the app fails quietly both in review and in production. Let's get those right.

Step 1: Declare capability and Info.plist at minimum scope

Start by declaring intent. Enable the HealthKit capability in your Rork Max project settings, then describe the purpose in Info.plist. Requesting many types greedily here invites the App Store reviewer to ask "why does this app need that?" — a common rejection trigger.

<key>NSHealthShareUsageDescription</key>
<string>Reads your step and sleep records so you can look back on how far you walked alongside your home-screen theme.</string>
<key>NSHealthUpdateUsageDescription</key>
<string>Saves the relaxation time you log in the app as a mindfulness entry in Health.</string>

The trick is to state what you read and why, specifically. Vague phrasing like "Uses health data" is easy to reject; on my first submission, a reviewer bounced the build because the NSHealthShareUsageDescription string was too ambiguous. This text is shown verbatim in the user's permission dialog, so writing it honestly also builds trust.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
Concrete Info.plist usage strings and Swift code to request the smallest possible HealthKit scope and survive App Store review
A working HKObserverQuery + Background Delivery setup that keeps ingesting steps while the app is closed, including the unregister trap
A field-tested checklist for the production-only 'I granted access but data is zero' symptom, with the calls I made running wellness apps as an indie developer
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Rork Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

Related Articles

Dev Tools2026-07-13
Losing HealthKit Data on Incremental Sync — Designing HKQueryAnchor Persistence
When step or sleep data double-counts or goes missing on incremental HealthKit sync, the root cause is usually HKQueryAnchor persistence. Here is a working Swift design that handles newAnchor and deletedObjects correctly and stays consistent across reinstalls and background updates.
Dev Tools2026-07-04
Your Rork Max Health App Misses Overnight Steps — Designing Background Delivery When HKObserverQuery Dies Silently
In a native Swift health app generated by Rork Max, data recorded while the app is closed never arrives — and it's almost always because HKObserverQuery's background delivery stopped without a word. Here's how to isolate the layer that broke and an observation layer you can drop in as-is.
Dev Tools2026-06-16
Controlling HomeKit Accessories from Your Rork Max Native App — Permission and State-Sync Lessons from Indie Shipping
A walkthrough of adding HomeKit to the native Swift app Rork Max generates: listing and controlling accessories, from the permission dialog wording to the state-sync traps. Covers the territory React Native struggles to reach, from a working indie developer's perspective.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →