Last updated: August 10, 2026
This policy lists the cookies and browser storage Stryke uses on playstryke.com and app.playstryke.com, and why each one exists. It supplements our Privacy Policy.
Stryke sets no advertising cookies and no cross-site tracking cookies. We do not run ad networks, we do not sell or share your information for advertising, and we do not use Google Analytics. What we do store falls into two buckets: what the app needs to work, and cookieless analytics that count visits without identifying you.
The one thing that is not strictly necessary is analytics, so we ask about it — see §4. You can change your answer whenever you like from the Privacy choices link in the footer of any page.
These keep you signed in, keep your round on screen, and keep bots out. The Service cannot function without them, so they cannot be switched off from within the product — but clearing your browser storage removes them (and signs you out).
| What | Set by | Purpose | Type |
|---|---|---|---|
| Firebase Auth session | Google Firebase | Keeps you signed in between visits so you don't re-authenticate on every screen. | IndexedDB / local storage |
| reCAPTCHA | Distinguishes people from bots on sign-in and sign-up. Set on Google domains. | Third-party cookie | |
stryke:currentRound, stryke:pendingRound |
Stryke | Remembers which round you're scoring so a refresh or a lost signal doesn't lose your place. | Local storage |
stryke:mktPicks:*, stryke.v3.setupDismissed, stryke-dens |
Stryke | Your in-app choices — game picks, dismissed prompts, display density. | Local storage |
stryke.age18 |
Stryke | Records that you confirmed you are 18 or older, so we don't ask on every visit. | Local storage |
stryke_pilot_email, stryke:pendingUpgrade |
Stryke | Carries a sign-up or checkout you started across the pages that finish it. | Local storage |
drillsVoice + audio cache |
Stryke | Remembers your chosen narration voice and caches already-played clips so they replay instantly offline. | Local storage / IndexedDB |
| Service worker cache | Stryke | Stores the app shell so the installed app opens and scores a round with a weak signal on the course. | Cache storage |
stryke.consent.v1 |
Stryke | Remembers your answer to the privacy panel so we don't ask again — and so we don't load analytics you declined. | Local storage |
We use Plausible Analytics (Plausible Insights OÜ, Estonia, EU) to count page views and referrers in aggregate. Plausible is cookieless: it sets no cookie, stores no identifier on your device, and does not follow you across sites. It anonymizes IP addresses as part of its service. See Plausible's privacy policy.
The first time you visit, a panel explains what we store and asks what you want. What it does depends on where you are, because the rules differ:
Your answer is saved as stryke.consent.v1 in your browser's local storage. It is per-device and per-browser, and clearing site data resets it. Reopen the panel any time from the Privacy choices link in the footer. Loading any page with ?plausible_ignore=true still works as a permanent opt-out, and a privacy extension that blocks analytics requests works too.
Some features hand off to providers who apply their own policies: Google (sign-in, reCAPTCHA, Maps/Places for course lookup) and Stripe (checkout and fraud prevention on paid flows). We do not control their storage; review their policies for details.
Our typefaces used to load from Google Fonts, which meant reading any page disclosed your IP address to Google before you had touched anything. They are now served from our own servers, so that no longer happens. reCAPTCHA still loads from Google on the pages that use it — it protects sign-up and checkout from abuse, and it runs before you interact with the page.
Every browser can block or clear cookies and site data — usually under Settings → Privacy. Clearing Stryke's data signs you out and drops your saved preferences and offline cache; nothing you've scored is lost, because rounds live in your account.
Questions about this policy? Email hello@playstryke.com.