Effective 19 October 2026
Privacy Policy
How Breath Cycle handles information.
This policy covers the Breath Cycle iPhone app, its optional encrypted Pro backup service, the private beta sign-up, and the public Breath Cycle website. The core app works without a Breath Cycle account, advertising, or third-party analytics. The website uses Google Analytics only if you accept analytics cookies.
Who provides Breath Cycle
Breath Cycle is developed and provided by Domenico Marco Di Donna. Questions about this policy may be sent to support@breathcycle.app.
Local app data
Preferences, breathing sessions, optional reflections, calibration results, custom patterns, and plan progress are stored on your device. Breath Cycle uses this information on-device to provide history, restore your choices, and generate deterministic recommendations. Your iPhone remains the primary copy.
Breath Cycle 1.0 does not use third-party analytics, advertising SDKs, remote configuration, or anonymous aggregate uploads.
Optional Encrypted Pro Backup
Encrypted Pro Backup is an optional subscription feature and does not start when you subscribe. It starts only after you separately choose Enable Encrypted Pro Backup in Settings and confirm the data explanation.
If enabled, Breath Cycle creates a copy of supported sessions, reflections, calibration results, custom patterns, and plan progress. The app encrypts that archive on your iPhone using AES-GCM before upload. The encrypted archive is stored in a private Cloudflare R2 bucket configured for the European Union. Cloudflare receives ciphertext and cannot read the archive contents.
A random encryption key is stored in the Apple Keychain and may synchronize between your devices through iCloud Keychain, subject to your Apple settings and Apple’s privacy terms. If that key is unavailable, Breath Cycle cannot decrypt the cloud copy. The app does not upload the key to Cloudflare.
Backup identity and subscription verification
No Breath Cycle login is required. For each backup request, the app sends Apple-signed app and Pro subscription records over HTTPS. The service verifies Apple’s signatures, the Breath Cycle bundle identifier, the subscription product, expiration, revocation, and grace-period information. The records can include Apple’s stable app-transaction identifier and purchase status. Breath Cycle hashes the app-transaction identifier before using it as the private R2 object path; it does not store the raw identifier or payment-card details in the backup object.
This information is processed to authenticate the request, keep one private backup per Apple Account and app, prevent unauthorized access, and enforce Pro access. A lapsed subscription pauses upload and restore but does not delete local data. Cloud deletion remains available without an active Pro subscription.
Sharing and service providers
Breath Cycle does not sell app data or share it with advertising, analytics, or marketing companies. Apple provides StoreKit and iCloud Keychain under Apple’s terms and privacy policy. Cloudflare provides the Worker, private R2 storage, networking, and security used for optional encrypted backup. Cloudflare processes encrypted backup content, request metadata such as IP address and HTTP headers, and Apple-signed verification data on the developer’s behalf under the Cloudflare Privacy Policy.
Subscriptions
Breath Cycle Pro subscriptions are processed by Apple through StoreKit. Apple handles payment and transaction-account information under Apple’s privacy policy. Breath Cycle checks Apple-signed subscription status on the device to provide Pro access and respond to expiration, refunds, revocation, billing retry, or grace-period status. The developer does not receive your full payment-card details.
Performance diagnostics
The optional Performance Test measures frame timing, renderer failures, Low Power Mode, and thermal state on the device. Results stay in local app preferences and are not sent to the developer.
Your privacy choices, export and deletion
You can export supported local records in JSON and CSV formats, delete local app history, turn encrypted backup off, or permanently delete the encrypted cloud copy from Breath Cycle Settings. Turning backup off stops synchronization but does not delete the existing cloud copy; use Delete Cloud Backup for deletion.
Local records remain until you delete them or remove the app, subject to standard device-level iOS backup and restore behavior. The encrypted cloud copy remains until you delete it. Uninstalling the app or ending Pro does not automatically delete it. If backup is still enabled on another device, that device can create a new copy after deletion, so turn backup off on all devices when you want synchronization to stop everywhere.
You may also request access, correction, deletion, restriction, or portability of personal information where applicable by emailing support@breathcycle.app. Because backup contents are client-side encrypted and indexed by a one-way hash, in-app deletion is the fastest and most reliable way to remove the cloud copy.
You may object to processing based on legitimate interests and withdraw any consent at any time, without affecting the lawfulness of processing before withdrawal. You also have the right to lodge a complaint with a data-protection supervisory authority, in particular in the EU country where you live or work, or with the Italian Garante per la protezione dei dati personali (garanteprivacy.it).
Private beta sign-up
If you request an invitation to the Breath Cycle private beta on the website, the developer stores the email address you enter, the website language you used, and the dates of your request and confirmation. They are used only to confirm that the address is yours, to invite you to test Breath Cycle through Apple TestFlight, and to keep track of who has been invited. They are not used for marketing, newsletters, or advertising, and they are not sold.
Every request must be confirmed. The website sends one email with a confirmation link and a link to delete the request. Only confirmed addresses are invited. A request that is not confirmed within 7 days is deleted automatically. The same address receives at most one confirmation email per day. The delete link offers two choices, and both delete the request at once. If you cancel your own request, a one-way hash of the address is kept for 7 days, so that it cannot be signed up again in that time, and is then deleted. If you report that you did not make the request, the hash is kept so that the address can never be signed up or emailed again; ask us if you want it removed.
Confirmation emails are sent by Resend (Resend, Inc.) as our processor, from its EU (Ireland) sending region, with open and click tracking turned off. Resend is based in the United States and may process data there under appropriate safeguards, such as the EU Standard Contractual Clauses, as described in the Resend Privacy Policy.
To invite you, the developer adds your email address as a tester in App Store Connect, and Apple sends the TestFlight invitation under Apple’s terms and privacy policy. While you test, TestFlight may share feedback, screenshots, and crash reports that you choose to send with the developer, as described by Apple.
Sign-up records are stored in a Cloudflare D1 database in Cloudflare’s EU jurisdiction. They are deleted when the private beta ends, and no later than 30 days after Breath Cycle is released on the App Store. You can delete your request at any time with the link in our email, or by emailing support@breathcycle.app. Deleting a sign-up record does not remove you from TestFlight; you can stop testing at any time in the TestFlight app.
To limit abuse, the sign-up service counts recent requests from each network address for about a minute. The address is not stored with your sign-up.
Website hosting
The Breath Cycle website is served as static pages, apart from the private beta sign-up described above, and does not set advertising cookies. Analytics cookies are set only with your consent, as described below. Cloudflare provides website hosting and network security and may process technical request information, such as an IP address and HTTP headers, to deliver and protect the site.
The website’s typefaces are provided by Adobe Fonts. When a page loads, your browser requests the fonts and a font stylesheet from Adobe’s servers, which receive technical request information such as your IP address, the address of the page and browser details. Adobe uses this to deliver the fonts and to count font usage for licensing, under the Adobe Fonts privacy notice. Adobe states that it does not set or use cookies to serve these fonts.
Website analytics and cookies
The website uses Google Analytics 4 to count visits and understand which pages are useful, but only if you choose Accept in the cookie notice. Until you do, the Google Analytics script is not loaded, no analytics cookie is set and nothing is sent to Google. Rejecting has no effect on how the website works. The iPhone app does not use Google Analytics or any other analytics service.
If you accept, Google Analytics collects the pages you view, the page that referred you, the time and duration of your visit, interactions such as scrolling, outbound link clicks and file downloads, your browser, device type, operating system, screen size and language, and an approximate location (country, region and city) derived from your IP address. Google Analytics 4 does not log or store IP addresses for visitors in the European Union. It does not receive what you type into the beta sign-up form. A random identifier is stored in two first-party cookies on breathcycle.app:
- _ga: distinguishes visitors; expires after 2 years.
- _ga_RN11KHZ8VF: keeps the state of the current visit; expires after 2 years.
Google Analytics is provided by Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Ireland, which processes this data on the developer’s behalf under the Google Ads Data Processing Terms. Google signals, advertising features, ad personalization and the optional sharing of Analytics data with Google for its own purposes are turned off, and the property is not linked to any advertising account. Event-level data is kept for 2 months and user-level data for 14 months; after that, only aggregated reports remain. Google may process data in the United States; Google LLC is certified under the EU-U.S. Data Privacy Framework, and transfers are also covered by the EU Standard Contractual Clauses. More information is in How Google uses information from sites that use its services and the Google Privacy Policy.
Whichever you choose, your choice is stored in a first-party cookie, bc_consent, so that the notice is not shown again. It contains a random identifier, your choice and the version of this section, and expires after 12 months, after which the website asks again; it is also asked again if what we collect changes. This cookie is strictly necessary to respect your choice and is not used for anything else.
To be able to prove consent, as data-protection law requires, each choice is also recorded by the website: the random identifier from that cookie, Accept or Reject, the version of this section, the website language and the date and time. No IP address, browser details, email address or Google Analytics identifier is stored with it, so the record cannot by itself identify you. Records are kept in a Cloudflare D1 database in Cloudflare’s EU jurisdiction and deleted automatically after 24 months. If you clear your cookies, the record cannot be matched to your browser and the notice appears again. You can change your choice at any time with Cookie settings at the bottom of every page. Choosing Reject stops Google Analytics and deletes its cookies from breathcycle.app. You can also block or delete cookies in your browser settings. If your browser does not run JavaScript, Google Analytics is never loaded.
Support communications
If you email support, the developer receives your email address and any information you choose to include. Support email is handled with Google Workspace (Gmail) under Google’s terms and privacy policy. It is used only to answer your request and is retained only as long as reasonably necessary for support and legal obligations. You may request deletion by emailing support@breathcycle.app.
Children
Breath Cycle is a general wellness utility and is not directed to children under 13. The app does not knowingly collect children’s personal data.
International use
Local app data remains on your device unless you explicitly enable encrypted backup. Backup objects are stored in Cloudflare’s EU jurisdiction. Apple, Cloudflare, Google (for website analytics, only with your consent) and email providers may process operational information in other locations in accordance with their services, contractual safeguards, terms, and privacy policies.
Legal bases
Where data-protection law requires a legal basis, optional backup content and private beta sign-ups are processed with your consent and to provide the feature you request; subscription evidence is processed to perform the subscription service; security and limited operational request information are processed for legitimate interests in protecting and reliably operating the service. Website analytics cookies and the related data are processed only with your consent (Article 6(1)(a) GDPR and Article 122 of the Italian Personal Data Protection Code, which implements Article 5(3) of the ePrivacy Directive); storing your cookie choice is strictly necessary to respect it, and recording it is necessary to comply with the obligation to demonstrate consent (Articles 6(1)(c) and 7(1) GDPR). You can withdraw backup consent by turning it off and can delete the stored copy in Settings. You can withdraw beta sign-up consent with the delete link in our email or by emailing the developer. You can withdraw analytics consent with Cookie settings at the bottom of every page.
Changes to this policy
If app behavior changes, such as adding analytics, an account system, new processors, or aggregate uploads, this policy and the App Store privacy disclosure will be updated before that behavior is released. The effective date above will also be revised.
Contact
Domenico Marco Di Donna
support@breathcycle.app