Privacy Policy
1. Introduction
This Privacy Policy explains how Kacper Majcher ("we", "us", or "our") handles information in connection with the BuyLater mobile application ("App") available on iOS and Android.
BuyLater has two usage modes:
- Offline Mode (free, no account required): Your wishlist items, prices, notes, photos, and decision history are stored exclusively on your device and never transmitted to our servers.
- Online Mode (requires account + active subscription): Your data is synced to the cloud via Supabase so it is available across devices. This mode requires a paid monthly subscription managed through RevenueCat.
Please read this policy carefully. By using the App, you acknowledge the practices described here. This policy should be read alongside our Terms of Service.
2. Data We Collect
2.1 Data Stored Locally on Your Device (Offline Mode)
When you use the App without an account, all data is stored only on your device. We have no access to it:
| Data | Purpose |
|---|---|
| Wishlist items (names, prices, notes, URLs) | Core app functionality |
| Product photos | Attached to wishlist items for easy identification |
| App settings (language, currency, theme, onboarding state) | Personalizing your experience |
| Decision records (buy / skip history) | Generating local spending insights |
This data never leaves your device unless you explicitly export it or enable Online Mode.
Camera and Photo Library access: When you attach a photo to a wishlist item, the App requests access to your camera or photo library. The selected image is copied into the App's private storage. We do not read, scan, or upload any other photos from your library. In Offline Mode the image stays on your device; in Online Mode only the images you attach to wishlist items are uploaded to Supabase Storage for sync.
Important — enabling Online Mode: When you create an account and enable Online Mode for the first time, your existing local wishlist items and decision history are uploaded to Supabase as part of the initial sync. This is necessary to make your data available across devices. If you do not want your local data uploaded to the cloud, do not create an account or enable Online Mode.
2.2 Account Data (Online Mode)
When you create an account or sign in, the following data is collected and stored on our servers (Supabase):
| Data | Purpose | Storage |
|---|---|---|
| Email address | Account identification, sign-in, transactional emails | Supabase (cloud) |
| Hashed password (email/password accounts only) | Account authentication — stored as a one-way hash, never in plain text | Supabase (cloud) |
| OAuth provider ID (Apple / Google sign-in) | Account authentication via third-party provider | Supabase (cloud) |
| Wishlist items (names, prices, notes, URLs) | Cross-device sync in Online Mode | Supabase (cloud) |
| Product photos | Cross-device sync in Online Mode | Supabase Storage (cloud) |
| Decision records (buy / skip history) | Cross-device sync in Online Mode | Supabase (cloud) |
App settings (language, currency, theme) are stored locally on your device in all modes and are never synced to the cloud.
Sign in with Apple — private relay email: When you use "Sign in with Apple",
Apple may provide a private relay email address (e.g. abc123@privaterelay.appleid.com)
instead of your real email. This relay address is stored in Supabase as your account email.
If you later try to sign in with email and password using your real address, you will not be
able to — you must always use "Sign in with Apple" for that account.
2.3 Subscription and Purchase Data (RevenueCat)
Subscriptions are managed by RevenueCat, which acts as a data processor on our behalf. When you purchase or restore a subscription, RevenueCat collects and processes:
- Your app store account identifier (Apple ID or Google Play account)
- Purchase receipts and transaction history
- Subscription status and entitlements
- A device-level anonymous identifier (before sign-in) or your Supabase user ID (after sign-in)
We use this data solely to verify your subscription status and unlock Online Mode. We do not use it for advertising or behavioral profiling. Note that RevenueCat retains purchase records independently and their retention is governed by their own privacy policy — we cannot delete RevenueCat data on your behalf.
2.4 Data You Optionally Provide — "Notify Me"
The App includes an optional "Notify Me" feature. If you submit your email to be notified about future features, it is stored in Google Firestore. This is entirely voluntary and completely separate from your BuyLater account.
| Data | Purpose | Storage |
|---|---|---|
| Email address | Notify you about BuyLater updates (own product only, not shared with third parties) | Google Firestore (cloud) |
2.5 Website Local Storage
The BuyLater legal pages (this page and the Terms of Service) use localStorage
solely to remember your language preference (EN/PL) between visits. No personal data is
stored, no tracking occurs, and this storage is never transmitted anywhere.
2.6 Data We Do NOT Collect
We explicitly do not collect:
- Precise or approximate location data
- Device contacts or address book
- Health or fitness data
- Advertising identifiers (IDFA, GAID, or similar)
- Browsing history or cross-app tracking data
- Crash analytics or usage analytics (no Crashlytics, Sentry, or equivalent SDK is included)
- Any biometric data
Apple-specific: The App does not use Apple's App Tracking Transparency (ATT) framework because no tracking or advertising identifiers are used. No data is shared with third parties for the purpose of tracking you across apps or websites.
App Store Privacy Labels
The following reflects the data types declared in BuyLater's App Privacy section on the Apple App Store.
| Data Type | Category | Purpose | Linked to User | Used for Tracking |
|---|---|---|---|---|
| Email Address | Contact Info | Account management, app functionality, developer marketing | Yes (Online Mode) / Optional (Notify Me) | No |
| User Content (wishlist items, photos, notes) | User Content | App functionality — cross-device sync in Online Mode | Yes (Online Mode only) | No |
| Purchase History | Purchases | Subscription management (RevenueCat) | Yes | No |
Offline Mode users: If you use the App without an account, no data linked to you leaves your device. The labels above apply only to Online Mode users.
3. How We Use Data
| Data | How It Is Used |
|---|---|
| Local app data (Offline Mode) | Providing core app functionality — processed entirely on your device |
| Account data (email, OAuth ID) | Authentication, account management, securing your synced data |
| Synced wishlist & decision data | Cross-device sync in Online Mode; displayed only to you |
| RevenueCat subscription data | Verifying subscription status, unlocking Online Mode features |
| Email address (Notify Me) | Sending notifications about BuyLater product updates only |
We do not sell, rent, trade, or otherwise transfer your data to third parties for commercial purposes. We do not use your data for advertising, behavioral profiling, or automated decision-making.
4. Legal Basis for Processing (GDPR)
This section applies to users in the European Economic Area (EEA), United Kingdom, and Switzerland.
| Processing Activity | Legal Basis |
|---|---|
| Processing local device data (Offline Mode) | Performance of a contract (Art. 6(1)(b) GDPR) — necessary to provide the App functionality you requested |
| Creating and managing your account, syncing data (Online Mode) | Performance of a contract (Art. 6(1)(b) GDPR) — necessary to deliver the Online Mode service you signed up for under our Terms of Service |
| Managing your subscription via RevenueCat | Performance of a contract (Art. 6(1)(b) GDPR) — necessary to fulfill the subscription agreement |
| Processing your email for "Notify Me" | Consent (Art. 6(1)(a) GDPR) — you provide your email voluntarily and may withdraw consent at any time |
5. Data Storage and Security
Local Data (Offline Mode)
All wishlist items, photos, notes, and settings are stored in the local SQLite database and local file system of your device, protected by your device's built-in security mechanisms (device encryption, screen lock). We cannot access this data.
Cloud Data (Online Mode) — Supabase
Account data and synced content is stored in Supabase (Supabase Inc.). Data is encrypted in transit (TLS) and at rest. Row-Level Security (RLS) is enforced at the database level — each authenticated user can only read and write their own rows. Access to database administration is restricted to Kacper Majcher.
Subscription Data — RevenueCat
Subscription and purchase data is processed by RevenueCat Inc. and stored on their servers. RevenueCat acts as a data processor on our behalf. Data is encrypted in transit (TLS) and at rest. Their data handling is governed by their own Privacy Policy.
"Notify Me" Email — Google Firestore
Voluntarily submitted "Notify Me" emails are stored in Google Firestore (Google LLC), acting as a data processor on our behalf. Data is encrypted in transit (TLS) and at rest. Access is restricted to Kacper Majcher.
6. Third-Party Services
Supabase (Online Mode)
- Role: Data processor
- Provider: Supabase Inc., 970 Toa Payoh North, Singapore 318992
- Purpose: Authentication, cloud database, and file storage for Online Mode
- Data processed: Account credentials, wishlist items, photos, decision records
- Privacy Policy: supabase.com/privacy
- DPA: supabase.com/legal/dpa
RevenueCat (Subscription Management)
- Role: Data processor
- Provider: RevenueCat Inc., 633 Tasman Dr, Sunnyvale, CA 94089, USA
- Purpose: In-app subscription management, purchase verification, entitlement tracking
- Data processed: App store account ID, purchase receipts, subscription status, user ID
- Privacy Policy: revenuecat.com/privacy
Apple Sign In
- Role: Independent controller for Apple's own services
- Provider: Apple Inc., One Apple Park Way, Cupertino, CA 95014, USA
- Purpose: OAuth authentication for account creation and sign-in
- Data processed: Apple ID token verified by Supabase; Apple may provide a private relay email address
- Privacy Policy: apple.com/legal/privacy
Google Sign In
- Role: Independent controller for Google's own services
- Provider: Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA
- Purpose: OAuth authentication for account creation and sign-in
- Data processed: Google ID token and email verified by Supabase
- Privacy Policy: policies.google.com/privacy
Google Firebase / Firestore ("Notify Me" only)
- Role: Data processor
- Provider: Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA
- Purpose: Storing voluntarily submitted "Notify Me" email addresses
- Data processed: Email address only
- Privacy Policy: policies.google.com/privacy
- Data Processing Terms: cloud.google.com/terms/data-processing-terms
No advertising networks, analytics SDKs, or crash-reporting tools are integrated into the App.
7. Your Rights Under GDPR
If you are located in the EEA, UK, or Switzerland, you have the following rights regarding your personal data:
| Right | Description | How to Exercise |
|---|---|---|
| Access | Request a copy of personal data we hold about you | buylaterapp@gmail.com |
| Rectification | Request correction of inaccurate data | buylaterapp@gmail.com |
| Erasure | Request deletion of your account and all associated data ("Right to be Forgotten") | Settings → Delete Account and Data, or email us |
| Restriction | Request that we limit how we use your data | buylaterapp@gmail.com |
| Portability | Request your data in a structured, machine-readable format (CSV export available in-app) | Settings → Export History, or email us |
| Objection | Object to processing based on legitimate interest | buylaterapp@gmail.com |
| Withdraw Consent | Withdraw consent for "Notify Me" email processing at any time | buylaterapp@gmail.com |
We will respond to all valid requests within 30 days. If you believe your rights have not been respected, you have the right to lodge a complaint with your local data protection supervisory authority. In Poland, this is the UODO (Urząd Ochrony Danych Osobowych).
8. Data Retention
| Data | Retention Period |
|---|---|
| Local device data (Offline Mode) | Until you delete the App or use "Delete All Data" in Settings |
| Account and synced data (Supabase) | Until you delete your account via Settings → Delete Account and Data, or by emailing us |
| RevenueCat subscription data | Retained by RevenueCat per their own retention policy. Purchase records may be kept for legal and financial compliance purposes beyond account deletion — this is outside our control. See RevenueCat's Privacy Policy. |
| Email address (Notify Me) | Until you request deletion, or until the "Notify Me" program is discontinued |
9. Children's Privacy
The App is not directed to children under the age of 13 (or under 16 in certain EEA jurisdictions). We do not knowingly collect personal information from children. If you believe a child has created an account or submitted their email, please contact us at buylaterapp@gmail.com and we will promptly delete the information.
10. International Data Transfers
Offline Mode data is stored locally on your device and is not transferred internationally.
For Online Mode users, your account and synced data is stored on Supabase servers, which may be located outside your country of residence, including in the United States. Such transfers are governed by Supabase's Standard Contractual Clauses (SCCs) approved by the European Commission. See Supabase's privacy documentation for details.
RevenueCat processes subscription data on servers in the United States under their own Standard Contractual Clauses.
"Notify Me" email addresses may be transferred to Google Firestore servers under Google's Standard Contractual Clauses as approved by the European Commission. See Google Cloud's GDPR compliance documentation.
11. How to Delete Your Data
Deleting Local Data (Offline Mode)
Go to Settings → Delete All Data. This permanently removes all local wishlist items, photos, notes, decision history, and app settings from your device. This action is irreversible. Alternatively, uninstalling the App removes all locally stored data.
Deleting Your Account and Cloud Data (Online Mode)
Go to Settings → Delete Account and Data. This permanently deletes your Supabase account and all synced data from our servers. This action is irreversible.
Alternatively, email buylaterapp@gmail.com with subject "Account Deletion Request". We will process your request within 30 days.
Subscriptions are not automatically cancelled on account deletion. You must cancel your App Store or Google Play subscription separately through your device's subscription management settings before or after deleting your account. We cannot issue refunds for unused subscription time — please contact Apple or Google directly for refund requests.
Deleting "Notify Me" Email
Email buylaterapp@gmail.com with subject "Data Deletion Request" including the email address you submitted. We will process your request within 30 days.
12. Data Controller
For the purposes of the GDPR and applicable data protection law, the data controller is:
Kacper Majcher
Country: Poland
Email: buylaterapp@gmail.com
13. Contact Information
If you have questions, concerns, or requests regarding this Privacy Policy or your personal data:
Kacper Majcher
Email: buylaterapp@gmail.com
Country: Poland
We aim to respond to all inquiries within 30 days.
14. Changes to This Policy
We may update this Privacy Policy from time to time. When we do, we will:
- Update the Effective Date at the top of this document.
- Publish the updated policy at the same URL where this policy is hosted.
- For material changes affecting account or synced data, notify registered users via email where reasonably possible.
Continued use of the App after changes are posted constitutes your acknowledgment of the updated policy. We encourage you to review this policy periodically.