Cookie Policy
Draft, last updated 7 September 2026
This page explains exactly what loads in your browser, when, and how to change your mind. It is linked from the consent card so you can find it without reading the whole privacy policy.
What we use
- Strictly necessary (always on): a Firebase sign-in session, so you don’t have to sign in again on every page load, and a local record of your cookie choice itself (so we don’t show you the banner every visit). These are not optional. Declining analytics does not turn these off, because the app cannot function without them.
- Analytics (only after you accept): PostHog (product analytics: which screens and exercises get used, where people drop off) and Google Analytics (GA4, marketing and acquisition measurement).
We do not use advertising or cross-site tracking cookies of any kind.
How the gate works, exactly
On your first visit, nothing but the strictly-necessary items above loads. A banner asks you to Accept or Decline: same-size buttons, one click either way, nothing pre-checked. Until you choose, the PostHog and GA4 script tags do not exist on the page at all (not merely “loaded but paused”). If you decline, they never load. If you accept, they load at that moment, not before.
Changing your mind
Your choice is saved on this device, and changing it costs the same one click either way. It takes effect immediately.
Reading the choice saved on this device…
Not available yet: This page currently changes only the local (this-device) record used to gate script loading. A first-party /api/consent beacon logs the decision server-side for audit purposes, but a queryable, re-offerable consent record tied to your account (users/{uid}/consents) is PRIV-001, not yet built.