Privacy Policy

Chain of Habits

Effective date: February 15, 2026

Last updated: September 24, 2026

Overview

Chain of Habits is a habit tracking app focused on daily execution. This policy explains what data the app stores, how it is used, and your choices.

Data We Store

The app stores information needed to provide core functionality, including:

How Data Is Used

CSV Export and Import

A CSV export contains habits and completion history. It does not contain goals/links; Settings/appearance; experiments/reports; insight snoozes, dismissals, or feedback recency; milestone seen/queue/share presentation state; notification authorization; CloudKit and notification diagnostics; or other device-local records. Pending notifications and completion sync work are derived after import, not restored from CSV.

Import accepts one combined export or exactly one habits CSV plus one completions CSV selected together. The app validates the complete selection, shows a review, and performs a merge-only atomic local update after confirmation. Matching records may be updated and missing records added; unrelated or omitted app records are not deleted. Completion changes remain pending locally and are attempted later when CloudKit sync is enabled and available. Production enables this background sync by default; a successful local import does not confirm upload.

File access is temporary and security scoped to the URLs you select in Apple's document picker. The app copies at most 5 MiB and 100,000 CSV records in aggregate for validation, releases file access on success, error, or cancellation, and does not retain permission to browse the surrounding storage provider. CSV files you export or keep in another app/provider are governed by the privacy and retention choices of that destination.

CloudKit / iCloud Sync

Chain Of Habits saves its working data locally first. The production app enables automatic background CloudKit sync by default. When you are signed in to iCloud and CloudKit is available, supported habit, goal, settings, and completion state can be transmitted to your private iCloud database and synchronized across your devices. The app remains usable when iCloud is signed out, restricted, temporarily unavailable, or offline.

Development and UI-test configurations can explicitly disable CloudKit. CloudKit data handling is governed by Apple's terms and privacy practices. The in-app Cloud Sync Debug view reports the current account and sync status; a local save or CSV import result does not by itself confirm that a cloud upload completed.

On-Device Notification Diagnostics

Version 2.3 records normal reminder scheduling automatically to help investigate missing alerts. The local journal keeps up to 40 operation events and a separately retained latest failure, plus up to 120 distinct normal alert records with planned times, scheduling outcomes, and available observations from the operating system. Repeated rebuilds are coalesced; older entries are removed as these limits are reached. The journal persists between app launches and is not included in CloudKit sync or CSV backups.

Settings → Notification Diagnostics can read notification authorization and delivery settings, pending requests, and retained delivered requests. It also shows app/build and OS information, time zone, aggregate habit/configuration information, controlled sync stage and elapsed time, local reminder status, and safe error domain/code summaries. Passive refresh records observations without requesting notification permission or scheduling reminders. Local reminder scheduling works independently of cloud waits.

Diagnostic history and exported reports omit habit names and notification content. Request correlation uses a local hashed key; raw request identifiers and those correlation hashes are omitted from reports. An accepted scheduling request or a retained delivered entry does not establish that a banner, sound, or Watch alert appeared. Missing entries remain inconclusive.

These reports are not transmitted automatically. You choose whether to copy a report to the clipboard or share it with another app or support recipient. Once you send or save a report, its handling is governed by your chosen recipient or destination. The optional ten-second notification test is a separate, explicit action and does not send a report to the developer.

Data Sharing

We do not sell your data. The app does not use third-party ad networks.

Data may be transmitted to Apple services for the automatic iCloud/CloudKit sync described above and for standard Apple platform services.

Data Retention and Deletion

Children's Privacy

The app is not directed to children under 13 and does not knowingly collect personal information from children.

Changes to This Policy

This policy may be updated from time to time. The “Last updated” date will change when updates are made.

Contact

For privacy questions, contact the developer at:
AppleFeedback@robjoyce.com

Visit Chain Of Habits Help & Support.