App: WaterBuddy (iPhone and Apple Watch)
Developer: Sardor Allaberganov
WaterBuddy keeps everything you log on your own devices, sends nothing to us or to anyone else, and contains no code capable of contacting a server — the only data that ever leaves your iPhone is the water you logged, travelling to your own paired Apple Watch and back.
Most privacy policies ask you to trust a promise. This one describes a structural fact about how the app is built.
WaterBuddy contains no networking code at all. There is no URLSession, no URLRequest, no Network framework, no web view, no HTTP request of any kind anywhere in the app's source. A search across all four shipping parts of the app (the iPhone app, the Home Screen widget, the Watch app and the Watch complication) returns zero matches for every networking API. There is not a single server address, domain name or API endpoint anywhere in the code or its resources.
The complete list of Apple frameworks the shipping app uses is: Foundation, SwiftUI, SwiftData, WidgetKit, Observation, UserNotifications, WatchConnectivity, AppIntents, and UIKit (used in exactly one place, to open the iOS Settings app so you can change notification permissions). None of them can reach a network on the app's behalf, and none of them is used to.
There are also zero third-party libraries in the project. No Swift packages, no CocoaPods, no embedded frameworks. Nothing was added by anyone but the developer, so nothing can phone home behind the developer's back.
Because there is no way for the app to send anything anywhere, there is no data for us to collect, store, sell, share, lose or be compelled to hand over. We do not have a server. We do not have a database with your name in it. We do not have your name.
Everything below lives on your device, inside the app's own private storage (an Apple "App Group" container). Nothing here is uploaded.
On your iPhone:
| What | Details |
|---|---|
| Your water servings | Each serving you log: an amount in millilitres, the date and time you logged it, and a random identifier generated fresh for that serving. This is the app's record of your history. |
| Today's total | Recalculated from your servings, kept so the widget can display it quickly. |
| Your daily goal | A number of millilitres. |
| The current day marker | Used to reset your total at midnight. |
| Your three quick-add serving sizes | Three amounts in millilitres. |
| Your chosen language | en, ru or uz, or nothing at all if you let the app follow your device's language. |
| Two internal flags | Whether you have set a goal yet, and whether a one-time internal data move has already happened. |
| Your reminders on/off setting | A yes/no value. |
| A record of which Watch servings have already been counted | A list of serving identifiers grouped by day, so a serving logged on your Watch is never counted twice. This list is kept for 90 days and then discarded. |
On your Apple Watch:
| What | Details |
|---|---|
| Servings you logged on the Watch that your iPhone has not confirmed yet | Amount, time and identifier for each. Cleared as soon as your iPhone confirms them. |
| A copy of what your iPhone last sent | Your total, goal, serving sizes, language and goal-set flag, so the Watch face and complication can show something before the next sync. |
Also on your iPhone, held by iOS itself: up to 28 pending reminder notifications, if you turn reminders on. See Notifications below.