Legal
Cookie Policy
Last updated
In plain English
- Soundflow has no advertising cookies, no analytics, and no trackers. Not “none that we consider intrusive” — none at all.
- Authentication bootstrap can contact Clerk, including before sign-in. Tutorial players contact YouTube only after you choose to load a video.
- Our authentication provider can set a small number of first-party session and security cookies. They exist to establish, protect and remember sign-in state.
- We do store things in your browser — preferences, studio work, session safeguards and downloaded on-device models — but those values support a feature you asked the app to do and stay on your device.
- That is why you have not been shown a site-wide consent banner. YouTube is kept behind its own clear load button; choosing not to load it makes no direct browser or player connection to YouTube.
1. Why there is no cookie banner
UK law (the Privacy and Electronic Communications Regulations) requires consent before storing information on your device or reading it back — with one exception: storage that is strictly necessary to provide the service you asked for. Advertising, analytics and profiling are never strictly necessary. Keeping you signed in, remembering the theme you picked, and saving the song you are working on are.
Everything Soundflow stores automatically falls into that second category. Optional YouTube media is different: it stays unloaded until you affirmatively choose its clearly labelled load button. That local choice avoids a site-wide banner that would otherwise gate nothing.
2. The cookies we set
Soundflow's own application code contains no cookie writes. When Clerk authentication is configured, its bootstrap and sign-in flow may set the strictly necessary session or security values below, including during a sign-in handshake.
Our authentication provider (Clerk) sets its own first-party cookies on the Soundflow domain:
| Cookie | What it does | Type |
|---|---|---|
__session | Carries your signed session token so the app knows who you are on each request. | Strictly necessary |
__client_uat | Records when your sign-in state last changed, so the app can tell a signed-in visitor from a signed-out one without a round trip. | Strictly necessary |
__clerk_handshake | A short-lived value used while a sign-in is being completed. | Strictly necessary |
__clerk_db_jwt | Used in development environments only, to carry the session across origins. | Strictly necessary |
Clearing these signs you out. Blocking them stops sign-in from working; nothing else breaks.
3. What else we store on your device
Most of what Soundflow keeps locally is not a cookie at all — it is browser storage, which does not travel to our servers automatically with a request. The same consent rules apply to it. The current production categories and stable keys are listed below; development-only test seams are not present in the production build.
Preferences (localStorage)
| Key | What it remembers |
|---|---|
sf:theme:v2 (and legacy sf:theme) | The look and accent colour you chose. The legacy key is migrated and removed. |
sf:nav-collapsed | Whether you collapsed the sidebar. |
sf:default-role | Which role (student, parent, instructor) the app opens in. |
sf:display-name | The name shown in the app for this browser. |
sf:notification-prefs | Which in-app notifications you want to see. |
sf:cmdk-recents | Your recent command-palette entries, so the palette is useful on reopen. |
sf:tour-voice-muted | Whether you muted the studio tour's voice-over. |
sf-pro-layout-v1, soundflow.studio.settings.v1 | Your studio panel layout and studio settings. |
sf:browser-favourites:v1 | The files, instruments and effects you starred in the studio browser. |
sf:plugin-presets:v1, sf:plugin-chains:v1 | The effect presets and effect-chain layouts you saved on this device. |
sf:ai-usage:v1 | Rolling on-device usage timestamps and counters when a local model is enabled. The provider-backed AI surface is disabled for the minimum launch. |
soundflow.studio.autosave.v1 (legacy migration) | A previous localStorage autosave, read once into IndexedDB and then removed after a successful migration. New autosaves are not written under this key. |
Current-tab safeguards (sessionStorage)
| Key | What it does |
|---|---|
sf:session-principal | Caches the current Clerk subject-to-Soundflow user mapping for this tab so the app does not repeatedly resolve the same signed-in identity. It is removed on sign-out. |
soundflow.checkout-attempt.v1:<scope> | An opaque idempotency key for a buyer and course checkout attempt. It prevents a retry from creating a duplicate order or charge and is removed after a terminal result or when the tab session ends. |
Your work in progress (IndexedDB)
A database called soundflow-studio holds a rolling autosave of the session open in the studio — the arrangement plus the mixing side-tables — so a refresh or a crash does not cost you the take. It is written a moment after each change you make and stays on your device. It only reaches us if you explicitly save the project to your account.
Downloaded AI models (Cache Storage)
The first time you use an on-device AI feature, the model weights are downloaded and cached in your browser, so the feature works instantly (and offline) afterwards. These are model files, not data about you.
4. Necessary storage and optional media
- Authentication and security — the session cookies exist because you asked to be signed in.
- Interface preferences you set yourself — the theme, sidebar and layout keys are only written because you changed a setting. Remembering an explicit choice is exempt; profiling you is not, and we do not.
- The feature you invoked — the studio autosave and the AI model cache exist to deliver the studio and the AI feature you opened. Without them the feature does not work.
None of it is shared, sold, combined across sites, or used to build a profile. The Privacy Policy covers what we hold on our servers.
5. Third parties
- Fonts and images are ours. Typefaces are compiled into the site and served from our domain — your browser never contacts a font CDN.
- Clerk authentication. The site-wide authentication bootstrap may contact Clerk before you sign in. Clerk processes the browser request and any session/security state needed to establish whether you are signed in.
- Stripe sets its own cookies on its checkout page when you pay. That happens on Stripe's domain under Stripe's policy; we set nothing there.
- Model downloads. Using the on-device text-to-speech or groove features makes your browser fetch the model from the organisation that publishes it (Hugging Face, or Google Cloud Storage for the Magenta project). Those are file downloads, not tracking, but the host does see your IP address. Do not use those features if that matters to you.
- YouTube tutorial players. Soundflow renders no YouTube iframe and makes no direct browser connection to YouTube until you press the clearly labelled load-video button. On the hosted site, tutorial-card thumbnails are fetched through Soundflow's same-origin image proxy; YouTube may see the hosting service's proxy request, not a direct thumbnail request from your browser. The downloadable app uses bundled card artwork and makes no thumbnail request. The button loads the privacy-enhanced
youtube-nocookie.complayer. Google then receives your IP address and browser request, and the player may use cookies or device storage and show non-personalised advertising under YouTube's own terms. Leaving the video unloaded makes no direct player connection. - User- or instructor-provided media. External images, audio, video, PDFs and lesson embeds remain unloaded until you choose their labelled load button. Loading one contacts the named host, which receives your IP address and applies its own policy. Remote profile avatars are not available at minimum launch.
6. How to see it and clear it
Everything above is visible in your browser's developer tools, under Application or Storage, and can be deleted from the same place — or in bulk through your browser's “clear site data” option. Session-storage values also disappear when their tab session ends. Browser settings let you block cookies and storage for a site entirely.
One warning before you clear it: your studio autosave lives in that same storage. Clearing site data will delete any studio work you have not saved to your account or exported to a file. Save first.
7. If this changes
If Soundflow ever adds analytics, advertising, or anything else that is not strictly necessary, we will build a real consent mechanism and ask you before setting it — not retrofit a banner over a decision already made. This page and its “last updated” date would change first. Questions to our published contact address (not yet available — see the notice above).