Contrast

What Contrast writes to Apple Health, and what it keeps

Contrast saves each session to Apple Health as an HKWorkoutActivityType.cooldown workout, stamped with its own metadata, carrying heart rate and water temperature samples. It also keeps an independent copy on the iPhone, so a workout deleted from Health stays in your history and can be written back. Nothing goes to Fluctus Limited.

Two copies of every session exist, on purpose. One lives in Apple Health where your other apps can read it. The other lives inside Contrast on your iPhone, where nothing else can touch it.

The Health copy

Each session is written as a workout of type HKWorkoutActivityType.cooldown, carrying:

  • the start and end time of the session
  • heart rate samples across the whole session
  • water temperature samples for the rounds that had them
  • metadata that identifies the workout as one of Contrast’s

Cooldown is the closest activity type Apple offers. There is no sauna type, no cold immersion type, and no contrast therapy type, so the choice is between the nearest honest label and inventing a category the Health app will not understand. Cooldown is what Apple’s own Mindfulness-adjacent recovery activities use, and it puts the session in the right part of a user’s day without claiming it was exercise.

The metadata stamp does real work. Other apps write Cooldown workouts too, so when Contrast goes looking for its own history it filters on the stamp rather than on the type. That is what stops a stretching session from another app appearing in your plunge history.

Why there is a second copy

HealthKit is the user’s database, not the app’s. A user can delete anything in it from the Health app, another app can be granted write access and behave badly, and a restore from a backup can arrive incomplete. All three of those are fine and correct behaviours for a system health store, and all three lose your sauna history.

So Contrast keeps its own record of every session on the iPhone. The session detail, the rounds, the temperatures — all of it survives independently of what happens in Health. If a workout disappears from Health, the session is still in your history, and the app can write it back.

The direction only ever runs one way on deletion: Contrast never deletes anything from Health on your behalf. Archiving a session in Contrast removes it from your Analysis, your weekly goal and the coach, and leaves the Health workout exactly where it was. The archive screen says so in its own footer, because the opposite assumption is the natural one.

What syncs, and through what

Settings and edits sync between your iPhone and your Apple Watch through your own iCloud. That is CloudKit talking to a private database in your account — the same mechanism your Notes use.

There is no Contrast account. There is no Contrast server. There is nothing to sign into, nothing to sign out of, and no password to lose. The practical consequence is that support cannot recover your data if you lose it, because support cannot see it.

Permissions, and what is actually requested

Contrast asks for permission to write workouts, heart rate and body temperature, and to read heart rate and the Health data the Analysis tab uses: sleep, HRV, resting heart rate, breathing rate, wrist temperature, workouts and VO₂ max.

Read and write permissions are separate in HealthKit, and iOS lets you grant one and refuse the other. The app degrades in the obvious way rather than nagging: refuse write and sessions stay in Contrast without appearing in Health; refuse the Analysis reads and the habit section still works while the nights section stays empty.

One quirk worth knowing, and it is Apple’s rather than the app’s. iOS deliberately does not tell an app whether it has read permission for a type, to avoid leaking the fact that you declined. An app that is refused read access sees an empty result, which is indistinguishable from having no data. If the nights section says it needs more nights and you are certain you have them, check the Health permissions before assuming the analysis is broken.

The optional coach, and the one exception

Everything above describes an app that sends nothing anywhere. The coach is the exception, and it is worth being precise about it.

The coach is off until you set it up. It runs on a model you pick: Apple’s on-device model, where nothing leaves the device at all, or a third-party provider using your own API key. With a third-party provider, and only after you agree in the app to a screen that lists exactly what will be sent, it sends session details, your weekly goal, recent Apple Health data and computed summaries directly to that provider.

Directly is the operative word. The request goes from your device to the provider you chose, under your account. Fluctus Limited is not in the path and receives nothing. API keys are stored in the device Keychain; conversations are stored only on the device; research searches send keywords to Europe PMC and nothing else.

What this means if you change phones

A new iPhone restored from a backup brings Contrast’s own copy with it. The Health data comes across through Health’s own restore. Settings arrive through iCloud.

What does not survive is anything you never granted permission for in the first place, which is the usual reason a new phone looks emptier than the old one. Check permissions first.

The short version

Your sessions are in two places, both of them yours. Apple Health has them so your other apps can see them; Contrast has them so Health cannot lose them. Nothing is anywhere else.

Common questions

What workout type does Contrast use in Apple Health?

HKWorkoutActivityType.cooldown, stamped with Contrast metadata. The stamp is how the app finds its own sessions again among other Cooldown workouts.

If I delete a session from Apple Health, is it gone?

No. Contrast keeps its own copy of every session on your iPhone, so the session stays in your history and can be written back to Health.

Does any of my data go to the developer?

No. Sessions live on your devices, in your own Apple Health and in your own private iCloud. Fluctus Limited receives nothing. The optional AI coach is the one exception, it is off until you set it up, and it sends data to a provider you choose under your own API key — never to Fluctus.

Do archived sessions still count?

Not in Contrast. An archived session is excluded from Analysis, from the weekly goal and from the coach. It stays in Apple Health, because Contrast does not delete anything from Health on your behalf.

Sources