Privacy & Accessibility
Grocery List is a shared household grocery list that updates live for everyone holding the link. It is free, carries no ads, and is made by Sky Wolf Studios.
Where your data goes
The list's title and description, every item anyone adds, the author name typed with it, whether it has been ticked into the cart, and any slots and claims is kept in Google Firestore, under the Firebase project `sws-apps-9646d`, and mirrored into this browser's IndexedDB offline cache so the list still opens in a supermarket dead zone. The only localStorage key this app writes is `gl-signin-email`, and only if you sign in by email link.
Some of it does leave this device, and we would rather say so plainly than bury it. Everything on a list is stored on Google's Firestore servers, because that is the only way the whole household sees the same list. This app therefore does not carry the 'nothing leaves your device' promise the rest of the portfolio makes. Concretely: the list title and description, every item body (capped at 2000 characters) and the author name (capped at 60) are written to Firestore and readable and editable by anyone holding the 6-character share link. The list owner is signed in — anonymously by default, or with Google or an email link if they choose — and Firebase Authentication issues a user id stored alongside each item.
That is the trade this app makes: sharing with other people needs a copy somewhere both of you can reach. Everything else about the promise still holds — no advertising, no analytics, no profile built about you, and nothing sold to anyone.
How to check that for yourself
Open DevTools → Network and load the page: you will see the Firebase SDK fetched from gstatic.com and nothing else. Open a list and you will see requests to firestore.googleapis.com — that is the shared list itself, and it is the only thing sent. There is no analytics call: apps/grocery-list/firebase-config.js has no measurementId, so Google Analytics is never initialised.
What we do not do
- No account, no sign-in, no email address collected.
- No ads, no analytics, no advertising trackers, no cookies, no fingerprinting.
- No selling, sharing or brokering of anything you type here. There is no data to sell.
- No paywall, no trial, no subscription, no watermark, no export limit.
Permissions
The app asks for write-only clipboard access when you tap Copy link — most browsers show no prompt, and the app cannot read your clipboard, and only at the moment you use the feature that needs it. Your browser asks you, not us, and you can refuse — the rest of the app keeps working.
Who else is involved
- Google Firebase Firestore (firestore.googleapis.com) — stores every list and every item.
- Google Firebase Authentication (identitytoolkit.googleapis.com) — issues the anonymous or signed-in user id attached to items.
- Google gstatic.com — the Firebase SDK modules are fetched from https://www.gstatic.com/firebasejs/12.17.1/ on the first visit, then cached by the service worker.
- Google Sign-In (accounts.google.com) — only if the owner chooses 'Sign in with Google' instead of staying anonymous.
- Stripe — only if you tap the tip jar, which opens buy.stripe.com in a new tab. We never see or store card details.
- Firebase Hosting (Google) serves the app's static files and keeps ordinary short-lived web-server logs such as IP addresses.
Tips
The tip jar links out to a checkout page hosted by the payment provider on their own site. We never see or store card details. Tipping changes nothing in the app — every feature is free either way.
Hosting
The app's files are served by Google's Firebase Hosting, which — like any web host — keeps standard, short-lived server logs such as IP addresses, for security and operations. That log records that a browser fetched a page. It is separate from the shared data described above.
Children
This app is made for adults. It is not directed at children, and it collects no personal information from anyone, of any age.
Accessibility
We aim for WCAG 2.1 AA: labelled fields, keyboard-operable controls that keep their focus when the page redraws, visible focus rings, 44px touch targets that grow with the text-size setting, screen-reader announcements for changes, and colour contrast checked by build-time solver in both light and dark mode. The display panel in the header sets text size, spacing, contrast, reading style and motion, and those settings follow you across all of our apps.
If anything gets in your way, email us and we will fix it: stephenfurpahs@gmail.com.
Changes
If this policy ever changes in a way that affects what happens to your data, the change will appear here and the date below will move.