In effect from: October 30, 2026
CleanerZX is an iPhone and iPad app published by ZXApps (the developer behind the apps offered from the contact address listed in §19). It helps you reclaim storage by spotting duplicate photos, oversized videos, screenshot clutter, and messy contact cards. This document explains, in plain language, what the app does with information on your device — and what it deliberately avoids doing.
In this document, “CleanerZX” or “the app” refers to the application; “ZXApps,” “we,” “us,” or “our” refers to the publisher.
The short version is below in §1. The long version takes the same statements apart and explains them piece by piece.
If you stop reading after this section, take these eight facts with you:
The remainder of this document expands on each of these claims so you can verify them.
CleanerZX is what the iOS community calls a local-first app. Practically, that means:
The reason these architectural choices matter for privacy is straightforward: your personal content — photos, videos, contacts, files, face data, and scan results — is never sent to us or to Google. Photo locations are sent to Apple only to name places on the Places map (§7), and anything you share through the iOS share sheet goes where you choose. Limited information may be sent to Google for analytics, crash reporting, and advertising as described in §3.7, §3.8, §3.9, and §7.
The sections below list, by category, every type of information CleanerZX touches while it is running. Everything in sections 3.1–3.6 is processed on your device and is never sent to us or to Google. Apple-operated services that receive some of it, such as place names for photo locations, are listed in §7. The exceptions are the usage analytics described in §3.7, advertising-related data described in §3.8, and crash reports described in §3.9.
When you grant access to Photos, CleanerZX uses Apple’s PhotoKit framework to look at your library and:
PhotoKit supports two modes — Full Access and Limited Access. Either works with CleanerZX. If you choose Limited Access, the app only sees the items you specifically picked.
If an original is stored only in iCloud Photos, PhotoKit may download it from Apple when the app needs to analyse, preview, or compress it. The results of the analysis — fingerprints, recognised text, face descriptors, People groups, and places — are kept in the app’s database on your device (§6) so the next scan is faster. They never leave the device and are deleted when you delete the app.
When you grant access to Contacts, the app uses Apple’s Contacts framework to find:
The app reads contact fields during a scan and shows them to you so you can choose which duplicates to merge. A summary of the last scan — including the names, phone numbers, and email addresses in the duplicate groups it found — is saved in the app’s cache on your device so the Contacts screen opens without rescanning. The next scan replaces it, iOS may remove it to free storage, and it is deleted with the app. None of this content is copied off the device.
The Library tab contains a Places map that shows you where your photos were taken. The map by itself does not need any iOS Location permission — it reads coordinates from photo metadata. The only time the app touches Core Location is when you tap the “center on me” control. At that point iOS asks you for When In Use access, and the resulting coordinate is used solely to recenter the map. The app does not record it, does not derive your home or work address from it, and does not perform background location.
To show a place name for a group of photos, the app sends the coordinate stored in one of those photos to Apple’s geocoding service and keeps the returned name with the place on your device (§7).
If you use the file-review feature, you can hand the app a folder via the iOS document picker. The app reads file names, sizes, modification dates, and types so it can list candidates for cleanup. To find duplicates it compares file names and sizes (the same download saved twice) and reads file contents on your device to compute fingerprints, including to spot files that are also in your photo library. It can show Quick Look previews of files. It uses Apple’s security-scoped bookmark APIs, the standard sandbox-safe way for an iOS app to look inside a user-selected folder, and keeps a bookmark to each folder you pick so you don’t have to pick it again.
To draw the storage indicator on the home screen, the app reads the total and available capacity of your device’s storage using standard URLResourceKey values. It also records the free space from time to time and keeps up to 120 days of these readings on your device, to estimate when storage may run low.
CleanerZX keeps a small amount of bookkeeping on the device:
This is stored in the app’s own iOS container and in an App Group container shared with the app’s widget and Live Activity extensions. Nothing in this subsection leaves the device.
CleanerZX uses Google Firebase Analytics to understand, in aggregate, how the app is used — for example, which screens are opened most often and how often a Quick or Deep scan is started. This helps us decide what to improve.
What is sent to Google for analytics:
screen_view (which screen was shown), scan_button_tap (which scan button was tapped), and review_prompt_requested (that the App Store rating prompt was requested, from which part of the app, roughly how many megabytes had been freed, and the app version), plus events Firebase records automatically, such as first open, session start, and app updates. These events do not contain your photos, videos, contacts, files, or the contents of your library.This data is not linked to your identity. Unless you allow tracking through App Tracking Transparency, it is not used to track you across other companies’ apps or websites. Google processes it as our service provider/processor; its handling is also governed by Google’s Privacy Policy (https://policies.google.com/privacy) and the Firebase data-processing terms. You can read how Firebase uses data at https://firebase.google.com/support/privacy.
Because this data is not tied to your identity, deleting the app stops all further analytics collection from your device. See §13 for the controls available to you.
CleanerZX uses Google AdMob to display advertisements in the free version of the app. Ads help support the free features of CleanerZX.
AdMob may process limited advertising-related information, such as device information, app interaction information, approximate location derived from network information, advertising performance data, and advertising identifiers where permitted by your choices and applicable law. AdMob does not receive your photos, videos, contacts, files, face data, scan results, or the contents of your library from CleanerZX.
Before CleanerZX accesses Apple’s advertising identifier (IDFA) for personalized advertising, the app asks for permission using Apple’s App Tracking Transparency (ATT) framework.
Your choice is optional:
You can change your ATT choice at any time in Settings → Privacy & Security → Tracking → CleanerZX.
Consent message (EEA, UK, and Switzerland). If you are in the European Economic Area, the United Kingdom, or Switzerland, CleanerZX shows Google’s consent message, provided by Google’s User Messaging Platform, before ads use your data. The message names Google and the advertising partners that may receive data, and lets you consent, refuse, or choose by purpose. If you do not consent, the app works the same, and ads may be limited or non-personalized. You can change or withdraw your choice at any time from Account → Privacy choices in the app. Your choice is stored on your device and sent with ad requests so that ads respect it.
Install measurement (SKAdNetwork). If you tap an ad and then install the advertised app, iOS may send the ad network an anonymous confirmation of that install through Apple’s SKAdNetwork. Apple designed this so the confirmation contains no information that identifies you or your device, and it works the same whether or not you allow tracking.
Conversion measurement. The Firebase SDK in CleanerZX includes Google’s on-device conversion measurement library. CleanerZX’s own code never calls it. Google’s SDK may use it to measure whether ads for CleanerZX led to installs or activity in the app, if CleanerZX’s Google Analytics data is linked to Google Ads and your advertising consent allows it.
Google’s handling of advertising data is governed by Google’s Privacy Policy (https://policies.google.com/privacy) and Google’s advertising and AdMob privacy information (https://support.google.com/admob/answer/6128543). How Google uses information from apps that use its services is explained at https://policies.google.com/technologies/partner-sites.
If CleanerZX crashes, Google’s Firebase Crashlytics sends a crash report, usually the next time you open the app, so we can find and fix the problem.
A crash report contains:
Crash reports do not contain your photos, videos, contacts, files, face data, scan results, or the contents of your library. They are not linked to your identity and are not used to track you. Firebase keeps crash reports and their identifiers for 90 days, then starts deleting them. Google processes them as our service provider; see https://firebase.google.com/support/privacy.
On devices that support Apple Intelligence, CleanerZX uses Apple’s on-device language model (the Foundation Models framework) to write a short summary of your scan results, suggest a name for a People group, and answer questions in the Cleanup coach. The model runs on your device; what you type and your scan results are not sent to us or to Google. The latest summary is kept on your device (§6).
CleanerZX also offers Siri and Shortcuts actions: How Much Can I Free, Delete Old Screenshots, Compress Large Videos, Ask CleanerZX, and Start Scan. They run on your device and use your photo library and scan results the same way the app does. Ask CleanerZX answers with the same on-device model.
For complete clarity, here are categories of data the app does not touch:
The only information that leaves your device is limited to the usage analytics in §3.7, advertising-related data handled through Google AdMob as described in §3.8, crash reports described in §3.9, Apple-operated services described in §7 (such as naming places from photo locations and downloading iCloud Photos originals), and anything you choose to share through the iOS share sheet. The app does not upload your personal content or scan results to us or to Google.
CleanerZX requests only the permissions listed below. Photos and Tracking are requested soon after you first open the app; the others only when you use the feature that needs them.
| iOS permission | Why it is needed | When the prompt appears |
|---|---|---|
| Photos (read/write) | Scanning your library for duplicates, large files, and clutter; showing previews; deleting the items you choose; saving compressed copies of videos. | When you first reach the Home screen after onboarding, or the first time a feature needs your library. |
| Contacts | Finding duplicate, empty, or incomplete contact cards. | The first time you tap to scan your contacts. |
| Location — When In Use | Centering the Places map on where you currently are. | Only when you tap the current-location button on that map. |
| Notifications | Sending the cleanup reminders you opt into. | When you turn on reminders inside the app. |
| Tracking (App Tracking Transparency) | Letting Google AdMob and Firebase Analytics use the advertising identifier (IDFA) for personalized ads and ad measurement (§3.8). | Once, shortly after you first open the app. |
Saying “no” to any prompt simply disables the feature that needed it. The rest of the app continues to work.
Because everything is on-device, it helps to know which on-device location holds what:
| Bucket | What’s inside | When it goes away |
|---|---|---|
| Standard UserDefaults | App preferences (language, reminders, overnight scan), onboarding and coachmark flags, free-usage counters, cached subscription state, your advertising consent choice, names you give to People groups, the latest Apple Intelligence summary, bookmarks to the folders you picked for file scans, and pending compression results. | When you uninstall the app. |
App Group container group.com.zxapps.cleanerzx |
A small shared payload that lets the widget and Live Activity show the same numbers as the main app. | When you uninstall the app. |
| Local SwiftData store | The latest scan results, scan history, review state, per-photo analysis (fingerprints and recognised text), face descriptors and People groups, places with their coordinates and names, and up to 120 days of free-space readings. | Scan results are replaced by newer scans; the rest stays until you uninstall the app. |
| In-app caches | Thumbnails, derived layouts, snapshots of the Places map, and the summary of your last contacts scan (§3.2). | When the app replaces them, when iOS removes them to free storage, or when you uninstall the app. |
| Library/Sounds | Notification sounds the app creates for reminders. | When you uninstall the app. |
Nothing in this table is uploaded, apart from the photo locations sent to Apple to name places (§7). None of it is encrypted with a separate password — it relies on the same hardware-backed device encryption iOS provides whenever your device is locked.
CleanerZX does not contact a ZXApps-owned server — there isn’t one. Outbound network activity is limited to the following:
The Apple-operated calls are subject to Apple’s own privacy policy (https://www.apple.com/legal/privacy/). Firebase Analytics, Firebase Crashlytics, Google AdMob, and Google’s consent tool are subject to Google’s Privacy Policy (https://policies.google.com/privacy) and relevant Google service terms.
CleanerZX does not upload your personal content to ZXApps, Google, Apple, or any other party.
If you allow notifications, CleanerZX sends local notifications through iOS: the reminders you set, a notice when a scan finishes (including an overnight scan), and a warning when your free storage is running low. These notifications are produced by your device and never go through a push server. The app does not register for remote push notifications and never transmits an APNs device token.
CleanerZX also provides a home-screen widget and a Live Activity that appears on the Lock Screen and in the Dynamic Island while a scan or compression is in progress. Both are rendered entirely on the device using Apple’s WidgetKit and ActivityKit frameworks.
Overnight scan. Unless you turn it off in Account → Overnight scan, CleanerZX may scan your library in the background while your device is charging, using Apple’s BackgroundTasks framework. It runs on your device like any other scan.
You can adjust notification preferences in Settings → Notifications → CleanerZX, and widget presence by editing your Home Screen.
CleanerZX is free to install. Some advanced features are unlocked through an optional subscription called CleanerZX Pro, sold by Apple via the App Store and processed using Apple’s StoreKit 2 framework.
What this means in practice:
Apple’s processing of your purchase is described in Apple’s privacy policy and in the Apple Media Services Terms.
For transparency, here is the full list of Apple-provided system frameworks CleanerZX uses for anything user-facing:
All of the frameworks listed above are provided by Apple. The app’s third-party SDKs are Google Firebase Analytics (which includes Google’s on-device conversion measurement library), Google Firebase Crashlytics, Google Mobile Ads (AdMob), and Google User Messaging Platform, used as described in §3.7, §3.8, §3.9, and §7.
Because your personal content never leaves the device, the security model is essentially the security model of iOS itself, plus a small amount of care on our side:
No technical system is ever provably perfect. But the smaller the surface area, the smaller the risk; and CleanerZX’s surface area is intentionally tiny.
CleanerZX is a general-audience utility, not directed at children. We do not knowingly collect personal data from children — and, because the app does not collect personal content and only processes limited analytics, crash-report, and advertising-related information as described in §3.7, §3.8, and §3.9, this restriction is largely automatic. In jurisdictions where the digital age of consent is 16 (such as much of the EU), users under that age should use the app with a parent’s or guardian’s involvement.
If you believe a minor has used CleanerZX in a way that raises a privacy concern, please write to the address in §19.
You don’t need to file a written request to exercise control over what CleanerZX can see. iOS gives you everything you need:
These controls are immediate, do not require contacting us, and are honored by iOS itself.
This section provides additional information required by the EU General Data Protection Regulation (GDPR), the UK GDPR, and the Swiss FADP.
Controller and processor. ZXApps, the publisher of CleanerZX, acts as the controller of the limited personal data processed in connection with the app. For the usage analytics described in §3.7 and the crash reports described in §3.9, Google acts as our processor through Firebase Analytics and Firebase Crashlytics. For advertising described in §3.8, Google may process data as an advertising service provider under its applicable terms.
Legal bases. Where processing performed in connection with the app could fall under GDPR, the basis is:
Your rights. Subject to GDPR conditions, you have the rights of:
In practice, because CleanerZX does not retain personal data on a server, the most effective ways to exercise these rights are also the fastest: revoke an iOS permission, change your choices in Account → Privacy choices, or delete the app from your device. If you would prefer a written response from us about a specific GDPR right, write to the address in §19 and we will respond within one month (extendable by two months for complex matters, with notice to you).
Complaints. You have the right to lodge a complaint with the supervisory authority in your country. Useful links:
This section addresses additional disclosures expected under the California Consumer Privacy Act (as amended by the California Privacy Rights Act), referred to here as the CCPA.
Categories collected, sold, or shared. CleanerZX may transmit limited identifiers, internet/app activity information, and crash diagnostics for analytics, crash reporting, and advertising purposes as described in §3.7, §3.8, and §3.9. This may include a per-install app instance ID, a Crashlytics installation ID, IDFV, advertising-related signals, and the IDFA only if you allow tracking through ATT. CleanerZX does not upload your photos, videos, contacts, files, face data, scan results, or library contents.
CleanerZX does not sell personal information for money. Depending on how California law applies to advertising identifiers and personalized advertising, some advertising activity may be considered “sharing” for cross-context behavioral advertising. You can opt out by denying tracking permission in Settings → Privacy & Security → Tracking → CleanerZX and by using any in-app advertising consent controls where available.
CleanerZX does not use or disclose sensitive personal information in any way that triggers the CCPA’s “limit the use” right.
Your CCPA rights. You have the right to know, to delete, to correct, to opt out of sale or sharing, to limit the use of sensitive personal information, and to be free from retaliation for exercising those rights. Because CleanerZX does not maintain user accounts or a ZXApps server database, many controls are handled directly on your device: revoke permissions, change tracking settings, or delete the app. You may also submit a request to the email in §19, and we will respond within the timeframes California law sets.
“Shine the Light.” We do not share personal information with third parties for their own direct-marketing purposes.
Authorized agents. If you wish to use an authorized agent to submit a request, please send proof of the agent’s authorization to the contact email.
If you live in a jurisdiction not specifically addressed above — for example, Brazil (LGPD), Canada (PIPEDA), Australia (Privacy Act 1988), Japan (APPI), South Korea (PIPA), or others — many of the rights described in §14 and §15 have analogues in your local law.
Because CleanerZX is engineered to keep your data on your phone, the iOS-level controls in §13 are usually the most direct way to enforce those rights. For a written response from us, write to the email in §19.
Your personal content never leaves your device, so it is never transferred internationally. The usage analytics described in §3.7, advertising-related data described in §3.8, and crash reports described in §3.9 may be processed by Google on its global infrastructure, which may include servers in the United States and other countries. Google applies appropriate safeguards for such transfers (including the European Commission’s Standard Contractual Clauses where applicable), as described in Google’s Privacy Policy and relevant Google service terms.
If you contact us by email (to ask a question, exercise a right, or report a problem), the content of that email will pass through and be retained by the email service we use to read and reply to it.
If we change this Privacy Policy, the “In effect from” date at the top will move. For material changes — for example, the addition of any third-party SDK, or any change that would alter the on-device-only nature of the app — we will also tell you inside the app where the law requires it.
The current version of this document is always considered the version “in effect” for new sessions. You should re-read this document occasionally; continued use of CleanerZX after a revised date is taken as acceptance of the revised text, except where local law requires explicit consent.
For any question, request, or report related to this Privacy Policy:
We do our best to reply within the timeframes required by applicable law and to answer in plain language.
If you ever find a behavior of CleanerZX that does not match a statement in this document, please tell us. We treat any such mismatch as a bug to fix, not a definition to broaden.