MoodFlix-ios
MoodFlix · Last updated:
MoodFlix — Privacy Policy
Last updated: 2026-05-01
This document explains what data the MoodFlix iOS app collects, how it is used, where it is stored, and what choices you have. Plain English; no legalese where we can avoid it.
Who we are
MoodFlix is built and operated by Azimjon Abdurasulov as an indie developer. There is no company; there is no marketing department; there is no third-party analytics SDK. The app is a personal project published through the Apple Developer Program.
Contact: azimxxm@gmail.com
TL;DR
- No analytics, no tracking, no advertising.
- All app data lives on your device by default.
- The only network requests the app makes are to The Movie Database (TMDB) at
api.themoviedb.organdimage.tmdb.org. - Your TMDB token / session is stored in the iOS Keychain on your device only (never synced to iCloud).
- If you sign in to TMDB through the app, TMDB has its own privacy policy at
https://www.themoviedb.org/privacy-policy. We don't see your TMDB password.
What data does MoodFlix process?
1. TMDB authentication tokens (stored on-device only)
When you paste a TMDB v4 Read Access Token, or sign in with your TMDB account, the app stores the resulting session and token in the iOS Keychain on your device.
- Storage class:
kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly— the keychain item never roams to other devices via iCloud and is only available after the first device unlock following a reboot. - We never transmit this token to any server other than TMDB itself.
- Sign Out wipes the Keychain entry.
2. Watchlist (stored on-device by default)
The titles you save to your Watchlist are stored locally using SwiftData. If you choose to enable Sync with TMDB in Settings, the app pushes those entries to your TMDB account using the standard TMDB Watchlist API. Sync is off by default.
3. Search history (on-device only)
Recent searches are kept in UserDefaults on your device so the search field can offer them as suggestions. They are never transmitted.
4. Settings preferences (on-device only)
Your appearance choice (System/Light/Dark), language, content rating cap (default PG-13), and region preference are stored in UserDefaults on your device. Never transmitted.
5. Image cache (on-device only)
The app caches movie/TV poster images to disk so the UI feels fast and works offline. The cache is governed by URLCache.shared (80 MB RAM, 500 MB disk by default). You can clear it from Settings → Storage.
6. Notifications (local-only)
If you enable a "Notify me when this title is on Netflix"-style alert, the app uses iOS's Local Notification system. The alert is delivered by your iPhone, not by a remote push server. There is no remote push infrastructure; no APNs token; no notification ID is sent to anyone.
What data leaves your device?
Only requests to TMDB, and only when you actively use a feature. Specifically:
- Searches you type → TMDB search endpoints
- Discover / mood requests → TMDB discover endpoints
- Detail page loads → TMDB movie/tv/person endpoints
- Watchlist sync (if enabled) → TMDB account endpoints
- Sign-in flow → TMDB OAuth (
ASWebAuthenticationSession)
These requests carry only the TMDB API token that authenticates them. They do not carry your name, email, phone, IP-as-identifier, or any device-fingerprint header. Standard TLS-protected HTTPS is used in every case (iOS Network Framework defaults; no NSAppTransportSecurity exemptions).
TMDB's own privacy policy applies to anything you submit to TMDB. See: https://www.themoviedb.org/privacy-policy
What we do NOT do
- We do not run any analytics SDK (no Firebase, no Sentry, no Mixpanel, no Amplitude, no anything).
- We do not show advertising.
- We do not track you across other apps or websites.
- We do not sell or share your data with third parties (because we never have your data in the first place).
- We do not target this app at children under 13. The app does not fall under COPPA.
App Tracking Transparency
The app does not call requestTrackingAuthorization. You should never see the "Ask App not to Track" prompt because the app has nothing to track.
Permissions
The app may request the following permissions:
- Notifications — only when you tap to enable a provider availability alert. Used to deliver local-only notifications when a watchlist title becomes available on a flagged streaming service.
The app does not request: Camera, Microphone, Photos, Contacts, Calendar, Location, Health, Motion, Bluetooth, or Local Network.
Background activity
The app declares the Background Fetch capability and registers a single background task identifier (uz.azimxxm.MoodFlix.providerCheck). When iOS schedules it (typically every 6 hours, system-controlled), the app queries TMDB to check whether any watchlist title has become available on a streaming service the user flagged. If a match is found, a single local notification is delivered.
This task does not transmit any new data off-device beyond the same TMDB requests the app would make in the foreground. No analytics ping, no telemetry, no third-party calls.
Children
MoodFlix is rated 12+ on the App Store. The app does not target users under 13 and does not collect any data with the intent of identifying children. The default content cap is PG-13, which can be lifted by an adult user in Settings.
Your choices
- Sign Out clears your TMDB session, access token, and account ID from the Keychain.
- Settings → Storage → Clear Image Cache removes the on-disk image cache.
- Delete the app removes the SwiftData store (your local Watchlist), the UserDefaults bag, and the Keychain item — i.e., all your data.
- iOS 17+ also provides Settings → MoodFlix → Reset → Reset Privacy Permissions to revoke the notification grant.
You always have the right to:
- Know what data the app stores about you (this document plus the in-app Settings → About screen).
- Delete that data (uninstall the app, or use the choices above).
- Opt out of TMDB Watchlist sync (turn off "Sync with TMDB" in Settings).
Data retention
Because all data lives on your device, retention equals the lifetime of the app on your device. We have no servers, so we cannot retain anything about you on our side.
Security
- Tokens are stored in the iOS Keychain, never in plaintext files.
- All network traffic is HTTPS with TLS 1.2+ (system-default).
- The app pins no certificates beyond what iOS provides; this means the app benefits from Apple's CT/CRLite/OCSP infrastructure automatically.
- The Universal Link / custom URL scheme handler validates host and path strictly to prevent malicious deep-link injection.
Changes to this policy
If this policy ever changes, we will update the "Last updated" date at the top and (where reasonable) flag the change in the app's release notes. You should treat the version of this document at the URL on your App Store listing as authoritative.
Contact
If you have a privacy question, write to:
**azimxxm@gmail.com**
This document was last updated on 2026-05-01.