Privacy Policy

Effective date: 24 September 2026. Last updated: 8 October 2026 (our name changed from DevIndi to Timeskip and our contact address changed; nothing else changed). Applies to the EzClean app for macOS (formerly SwiftClean, bundle ID com.devindi.swiftclean) and the timeskip.dev website.

The short version

  • EzClean scans and cleans on your Mac. The contents of your files, the list of files it finds, their names, their sizes and what you delete are not sent anywhere. If a cleanup fails, only the error's code is sent for diagnosis, not its message.
  • The app uses Google Firebase for usage analytics, crash reports and diagnostic logs. Some diagnostic logs include folder locations written relative to your home folder, such as ~/Library/Caches, so they do not contain your macOS account name. (Versions released before this update did include it; see section 3.3.)
  • There are no accounts, no ads, no advertising identifiers and no tracking across other companies' apps or websites. We do not sell data.
  • Payments go through Apple. We never see your card or Apple Account details.

1. Who we are

EzClean is made by Timeskip (formerly DevIndi), an independent software studio based in Viet Nam ("we", "us"). You can reach us at support@timeskip.dev.

2. What stays on your Mac

To find and remove developer caches, EzClean reads folders on your Mac such as ~/Library/Developer, ~/Library/Caches and, for Deep Scan, other locations you allow. This work happens entirely on your Mac. The following is stored only on your Mac and is not uploaded by the app, except for the diagnostic details listed in section 3.3:

Deleting the app together with its data removes this information.

3. What the app sends

The app uses three Google Firebase services. None of them receive your name or email address from us, and there is no EzClean account.

3.1 Usage analytics (Google Analytics for Firebase)

When the app starts it records an "app open" event. The Firebase SDK also automatically collects standard information such as first launch, sessions and time in the app, app version, macOS version, Mac model, language, and approximate country or region (derived by Google from your IP address). This is tied to a pseudonymous app-instance identifier created by Firebase, not to your identity. See Google's list of automatically collected events. Firebase may also automatically record that an in-app purchase happened (product and price); it does not receive your payment details.

3.2 Crash reports (Firebase Crashlytics)

If the app crashes, a crash report is sent the next time it runs. It contains technical details of the crash (such as the stack trace), the app and macOS versions, the Mac model and a Crashlytics installation identifier.

3.3 Diagnostic logs (Cloud Firestore)

To diagnose problems with folder access and cleaning, the app writes short log entries to a Firebase database. Every entry contains the event name, a timestamp, whether you use the Mac App Store or the direct-download version, and the app's random installation ID. The entries are:

Diagnostic log events and the extra information each contains
WhenExtra information sent
A scan is set upThe location of your Caches folder relative to your home folder (~/Library/Caches), and whether the home folder is accessible.
The app checks access to your Developer folder or SwiftUI Previews folderThe location of that folder relative to your home folder (for example ~/Library/Developer), and whether access was already granted.
You are asked to grant access to a folderThe location of the folder the app asked for and of the folder you actually selected in the Open dialog, and whether access worked. A folder inside your home folder is written relative to it (for example ~/Library/Developer). For a folder anywhere else only its top-level location is kept (for example /Volumes/… or /Applications/…), so disk and folder names are not sent; a folder in another account's home folder is written as /Users/<user>/…. The exception is the shared folder that every account on the Mac can use: a folder inside /Users/Shared is sent as is (for example /Users/Shared/DerivedData).
A scan or cleanup finishesHow long it took.
A cleanup failsHow long it ran and the error's domain and numeric code (for example NSCocoaErrorDomain 513), plus those of the underlying system error if there is one. The error message itself is not sent, so the name of the file or folder that could not be removed is not included.

Please note: on macOS the full path of a folder starts with your home folder, for example /Users/jane/Library/Caches, which includes your macOS account name. The app replaces the home folder with ~ before sending, so these logs do not include your account name. Folder names inside your home folder are kept (for example, if you pick ~/Projects/MyApp in the Open dialog, that is what is sent), because we need them to understand why folder access failed. Versions of EzClean released before this update sent the full path, including your macOS account name, and the full error message of a failed cleanup; you can ask us to delete those logs (see section 11).

These logs do not include the files the app found, their sizes, what you chose to delete, how much space was freed, or any Deep Scan findings.

4. Purchases

EzClean Premium subscriptions and tips are sold through Apple's App Store. Apple processes the payment under Apple's Privacy Policy. The app asks Apple's StoreKit on your Mac which purchases are active in order to unlock features. We do not run our own purchase server, and we do not receive your payment details or Apple Account information. Apple provides developers with aggregated sales reports.

5. App updates

The Mac App Store version is updated by Apple. The direct-download version uses the open-source Sparkle framework: each time it starts it downloads an update feed hosted on Google Drive. Like any web request, this reveals your IP address and the app's name and version to the host. The app does not send a system profile with this check.

Some buttons in the app open web pages in your browser: our feedback form, the App Store's subscription page, and PayPal or Buy Me a Coffee if you choose to tip that way. What you do on those pages is covered by their own policies. Information you choose to submit in our feedback form is sent to us so we can read it.

If you email us, including through the support form (which just opens your email app), we receive your email address and whatever you write, and use it only to reply and to fix problems. This website does not use cookies or analytics. It is hosted on Google's Firebase Hosting and loads a font from Google Fonts, so Google receives your IP address and browser details when you visit, as with any web host.

7. Why we use this information

Where the law requires a legal basis (for example in the EU or UK), we rely on our legitimate interest in keeping the app working and improving it, and on performance of our contract with you for purchases.

8. Service providers

We may disclose information if required by law.

9. What we don't do

10. How long we keep it

11. Your choices and rights

The identifiers the app uses are random and pseudonymous; we cannot look you up by name. Depending on where you live, you may have the right to access, correct or delete personal information, or to object to its use. To make a request, email support@timeskip.dev. Diagnostic logs do not contain your name or account name, and the app does not show its installation ID, so to help us find logs about you, tell us roughly when you used the app (dates and times, with your time zone) and whether you use the Mac App Store or the direct-download version. For logs sent by versions released before this update, you can also tell us your macOS account name (the name of your home folder). If we still cannot pick out your entries, we can instead delete all diagnostic logs recorded before a date you give us. You can also complain to your local data protection authority.

The app does not currently have a setting to turn off analytics or diagnostic logs. If you do not want this information sent, you can block the app's network access with a firewall or stop using and delete the app.

12. Children

EzClean is a tool for developers and is not directed at children under 13 (or the equivalent age where you live). We do not knowingly collect personal information from children. If you believe a child has sent us information, contact us and we will delete it.

13. Changes to this policy

If the app starts collecting something new or we change how we use information, we will update this page and the effective date at the top before the change reaches the app.

14. Contact

Timeskip · support@timeskip.dev · Support page