We collect nothing.

Révéler has no analytics, no crash reporter, no event telemetry, no user identifier, no view counters, no scroll tracking. Zero third-party SDKs. Zero network calls of any kind. Nothing ever leaves your device — because nothing is ever sent.

The short version: put your phone in airplane mode right now and every feature in Révéler keeps working identically. If any byte ever leaves your device as a result of using the app, that byte is one you explicitly handed to Photos or a share sheet yourself. We don't have a server.

What we collect

Nothing. There is no mechanism in Révéler by which your usage, identity, location, or activity is transmitted off the device. Specifically, we do not collect:

We don't collect any of this because we don't have anywhere to send it. The app ships with no backend, no analytics SDK, no crash reporter, and no network calls of any kind to first- or third-party infrastructure.

What stays on your device

Everything Révéler remembers about your photography, it remembers locally. That data lives in three places, all of which are sandboxed to the app and never transmitted:

All three stores survive an iOS backup-and-restore flow because iOS includes the app sandbox in device backups. All three are deleted with the app if you uninstall Révéler — iOS drops the entire sandbox. Enable Save to Photos if you want a durable off-device copy of your frames.

Permissions we request

Camera

Required. Without it, the viewfinder can't show anything and the shutter has nothing to capture. iOS prompts you the first time you hit the camera screen; declining leaves the rest of the app intact (the contact sheet, settings, and knowledge center all still work) but the viewfinder shows a "Camera access is off" overlay with a Settings-app shortcut. You can revoke the permission anytime in iOS Settings; the app recovers gracefully when you return.

Photos (Add Only)

Optional. Requested only when you toggle on Settings → Save to Photos. Révéler requests the Add-only scope (PHAuthorizationStatus for .addOnly) — which lets the app write new assets to your photo library but explicitly prevents it from reading or deleting anything that's already there. If you never turn Save to Photos on, Révéler never asks for this permission.

Live Activities

Optional. Used to show the develop-bath progress pill in the Dynamic Island so you can leave the app during a bath and come back to it. The Activity's data (progress, phase label, stock short name) is generated entirely on-device and rendered by iOS locally — nothing about your Activity is transmitted anywhere.

Required-reason APIs

Apple requires apps to declare certain low-level iOS APIs in a PrivacyInfo.xcprivacy manifest shipped with the binary. Révéler's manifest declares exactly two, both for app functionality on-device only:

The manifest also declares NSPrivacyTracking = false, NSPrivacyCollectedDataTypes = (empty), and NSPrivacyTrackingDomains = (empty). You can verify these declarations by inspecting the app bundle or by reviewing the app in App Store Connect's privacy nutrition label.

Third parties

There are no third-party SDKs in Révéler. The app is built entirely with Apple-provided frameworks (SwiftUI, AVFoundation, Core Image, Core Haptics, SwiftData, Vision, Core Spotlight, ActivityKit, the Translation framework). All of those frameworks run locally on your device. None of them send data to Apple except as part of iOS's own diagnostics, which are governed by Apple's privacy policy, not ours.

Specifically, we use the following Apple frameworks in ways worth noting:

Children

Révéler is not directed at children under 13 and does not knowingly collect information from any user, regardless of age. There is no account system, no sign-up, and nothing to opt out of — because there is nothing being collected in the first place.

Changes to this policy

If we ever update this policy, we'll change the "Effective" date at the top of this page and note material changes in the app's release notes. If Révéler ever adds any form of tracking, analytics, crash reporting, or cloud sync, it will be opt-in, it will be disclosed here and inside the app first, and the PrivacyInfo.xcprivacy manifest will be updated to reflect the new collection before the change ships. That's a promise, not a plan.

Contact

Questions about this policy or about Révéler's privacy practices in general? Write to honorius@neogy.dev. Every message is read personally.