๐ผ
MilkNote Privacy Policy
Your baby's feeding data is deeply personal. Here's how we protect it.
Last updated: July 7, 2026
Welcome to MilkNote (the "App"). We understand that your baby's feeding records are deeply personal and important to your family. This Privacy Policy explains how the App collects, uses, stores, backs up, and protects your data.
This policy applies to the MilkNote iOS app (Bundle ID: com.milknote.app) and its companion Widget extension.
Core commitment: The App processes your data locally by default and collects no data for tracking, advertising, or behavioral analysis. All backup features require your explicit opt-in.
1. Data We Collect
1.1 Feeding Records You Voluntarily Enter
The App's core function is to help you record your baby's feeding activities. When using the App, you may voluntarily enter:
- Feeding records: bottle feeding volume, breastfeeding side and duration, pumping volume, solid food type and amount
- Diaper records: wet/dirty status
- Baby profile: baby name (optional), birthday (optional)
- Reminder settings: feeding reminder interval, quiet hours
- App preferences: unit system (milliliters / ounces), language
All of the above data is stored locally on your device in a SwiftData database, fully controlled by you.
1.2 Auto-Generated Metadata
- Record creation timestamps (for timeline sorting and charts)
- Last-modified timestamps (for sync conflict resolution)
1.3 Backup Configuration (Only When You Enable It)
- SMTP email backup configuration: SMTP server address, port, encryption method, sender email, recipient email
- SMTP password: stored exclusively in iOS System Keychain, never uploaded to any server
- Backup files: JSON-formatted snapshots of your local data
1.4 Data We Do NOT Collect
โ Personal identification
โ Device identifiers (IDFA/IDFV)
โ Precise or coarse location
โ Microphone/camera content
โ Contacts/photo library
โ Health data (HealthKit)
โ Browsing/usage history
โ Advertising or tracking IDs
2. How Your Data Is Used
Your data is used solely for:
- Core App functionality: displaying records in timelines, charts, and reminders
- Local backup & restore: generating and restoring JSON backup files you trigger
- Your configured backup channels: CloudKit sync, iCloud Drive file backup, SMTP email backup (all require explicit opt-in)
- Local Widget display: showing the most recent feeding record on the home-screen Widget (device-local only)
Our commitments: We will never use your data for advertising, sell or share it with any third party, use it to train machine learning models, or build user profiles or perform behavioral analysis.
3. How Your Data Is Stored & Protected
3.1 Local Storage
- All feeding records are stored locally using SwiftData
- The database file resides in the App sandbox, inaccessible to other apps
- iOS Data Protection is enabled by default
3.2 Keychain Secure Storage
- SMTP password is stored in iOS Keychain (
kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly)
- The password never appears in plaintext in the database, preferences, or any file
- The password is read only when an email backup is actually being sent
3.3 SMTP Communication Encryption
- All SMTP connections enforce TLS 1.2 or higher
- Supports Implicit TLS (port 465) and STARTTLS (port 587)
- Unencrypted plaintext SMTP is not supported
3.4 Backup File Encryption
- JSON backup files are stored in the App Group container or your selected iCloud Drive directory
- Protected by iOS sandbox and iCloud Drive end-to-end encryption
4. How Your Data Is Backed Up & Synced
The App offers three optional backup methods, all requiring your explicit opt-in:
4.1 CloudKit Sync (Optional)
- Uses Apple CloudKit Private Database
- Syncs only to your own iCloud account; the developer cannot access your data
- Managed automatically by the SwiftData framework
- Can be disabled anytime in iOS Settings โ Apple ID โ iCloud โ iCloud Drive
4.2 iCloud Drive File Backup (Optional)
- Writes JSON backup files to the MilkNote folder in iCloud Drive
- Protected by iCloud Drive encryption
- You can view, copy, or delete these files in the Files app
4.3 Email Backup (Optional)
- Sends JSON backup files as email attachments to an address you specify
- Sent directly through your configured SMTP server, with no intermediary
- The email content is subject to your SMTP provider's privacy policy
4.4 Local Snapshots
- The App automatically generates daily local snapshots (kept for the last 7 days)
- Snapshots live in the App Group container and are cleared when the App is uninstalled
- This default-on safety net ensures recoverability in case of accidental data loss
5. Third-Party Services
Third-party components used by the App:
| Component | Purpose | Data Flow |
| Apple CloudKit | Optional data sync | Your iCloud account only; no developer access |
| Apple iCloud Drive | Optional file backup | Your iCloud account only; no developer access |
| Your SMTP provider | Optional email backup | Your configured SMTP server (e.g., Gmail, Outlook) |
The App does NOT integrate any of the following SDKs:
โ Google Firebase / Analytics
โ Facebook SDK
โ Crashlytics / Sentry
โ Any advertising SDK
โ Any tracking SDK
External links (e.g., SMTP provider help pages) open in the iOS system browser; the App collects no browsing data.
6. Data Sharing
We do not share your data with any third party.
The only exceptions:
- When you actively enable email backup and trigger a send, the backup file is sent via your SMTP server to your specified mailbox. This process is handled by your SMTP provider under its terms of service.
- When compelled by law (after receiving a formal legal document, and only the minimum necessary data is provided). As of this policy's publication date, we have never received such a request.
7. Your Rights & Controls
7.1 Full Control
You have full control over your data and can at any time:
- View: see all records in Timeline and Stats pages
- Edit: tap any record to modify
- Delete: delete a single record or erase all data at once (Settings โ Data โ Erase All Data)
- Export: export as CSV (Settings โ Data โ Export CSV) or JSON backup
- Disable backups: turn off any backup channel in Backup Center
7.2 Uninstall
- After uninstalling the App, the local database, Keychain SMTP password, and preferences are all cleared
- iCloud Drive backup files must be manually deleted in the Files app
- CloudKit data can be removed via iOS Settings โ Apple ID โ iCloud โ Manage Account Storage
7.3 Revoke Permissions
- Notifications: iOS Settings โ MilkNote โ Notifications
- Background refresh: iOS Settings โ General โ Background App Refresh โ MilkNote
8. Children's Privacy
The App is designed for parents/guardians to record infant feeding activities. We do not collect any personal information from children. All data is entered by parents/guardians and stored on their devices; nothing is sent to any server.
9. International Users
- The App processes data locally by default, with no cross-border transfer
- Only when you enable CloudKit or iCloud Drive backup does data sync across Apple's global data centers via your iCloud account, subject to Apple's iCloud Privacy Policy
- Only when you enable email backup does the backup file go to your configured SMTP server, subject to that provider's policies and the laws of its jurisdiction
10. Data Retention
- Active data: retained until you delete it or uninstall the App
- Local snapshots: rotated and cleared after 7 days
- CloudKit/iCloud Drive backups: remain in your iCloud account until you delete them
- Email backups: retained in your mailbox per your email provider's management
11. Privacy Policy Changes
We may update this Privacy Policy. Material changes will be communicated via in-app notice or App Store release notes. Continued use of the App constitutes acceptance of the updated policy.
Change history:
- 2026-07-07: Initial publication
Appendix: Permissions
iOS permissions requested by the App and their purposes:
| Permission | Info.plist Key | Purpose |
| Notifications | NSUserNotificationsUsageDescription | Send feeding reminder notifications |
| Background fetch | UIBackgroundModes: fetch | Refresh reminder state in background |
| Background processing | UIBackgroundModes: processing | Generate backup snapshots in background |
| File sharing | UIFileSharingEnabled | View backup files in Files app |
| Document editing | LSSupportsOpeningDocumentsInPlace | Open .milknote.json backup files for restore |
Permissions the App does NOT request:
โ Camera
โ Microphone
โ Location
โ Contacts
โ Photo Library
โ Bluetooth
โ Health (HealthKit)
โ Face ID / Touch ID
โ Tracking (ATT)