FOURTEENERLABS

Range Stats

Privacy policy v3.3.0

Effective Date: June 10, 2026

Last Updated: October 7, 2026

Range Stats ("the App") is developed and published by Fourteener Labs, LLC ("we," "us," or "our"). We are committed to protecting your privacy. This policy explains what data the App collects, how it is stored, and your choices regarding that data.

1. Data Storage

By default, all data you enter into Range Stats is stored locally on your device using Apple's SwiftData framework. This includes your firearms collection, range trip logs, ammunition records, maintenance logs, accessories, target sessions, training courses, certifications (including CCW/CHL permits), range reviews, dealer/transfer records, and photos. Range Stats 3.3.0 and later: it also includes reloading records you choose to keep (recipes, batches, and component stock) and any certificate documents you attach to a certification or training course as a photo or PDF. A PDF is chosen through the iOS file picker, so the App receives only the file you select.

No data is transmitted to Fourteener Labs servers. We do not operate any servers that receive, process, or store your personal data.

Range Stats remains local-only unless you deliberately enable Cloud Sync and complete its full privacy and safety setup on that device. You may move data manually at any time using the App's Export / Backup features.

2. Optional Cloud Sync

Cloud Sync is optional and off by default. Merely installing or updating Range Stats, signing into iCloud, restoring a device backup, or enabling iCloud Drive does not turn it on. To enable it on a device, you must deliberately switch it on in Settings and complete separate disclosures, a device-owner authentication check, an iCloud-account check, a read-only data audit, an encrypted safety-backup export, and a final authenticated Enable action.

When enabled, Range Stats uses Apple's CloudKit service to store and synchronize your Range Stats database in the private iCloud database associated with your Apple Account. Synced content can include your firearm collection, ammunition, range trips, target sessions and images, saved range names and coordinates, maintenance, accessories, training and certification information (including attached certificate photos and PDFs), reloading recipes, batches, and component records, notes, photos, documents, prices, permit or certificate numbers, and related records. This data may count against your iCloud storage. Additions, edits, and deletions can propagate to your other devices where you separately enable Cloud Sync while signed into the same Apple Account.

Firearm serial numbers, accessory serial numbers, and dealer/transfer text details (dealer name, phone, address, and transfer notes) remain encrypted by Range Stats before storage. While Cloud Sync is on, the App refuses to store those protected fields unencrypted: if encryption is ever unavailable, the change is not saved and you are told, rather than an unencrypted value being written or uploaded. Transfer dates and the transfer type are stored and synced without app-level encryption (all synced data is additionally protected by CloudKit's own encryption in transit and at rest). If you enable Cloud Sync, the key needed to read the protected fields is copied through iCloud Keychain so your other opted-in devices can decrypt them, and the App verifies against a key fingerprint in your private database before any device may introduce a new key. Cloud Sync authorization is bound to the specific Apple Account that consented (by its CloudKit user record, which does not depend on iCloud Drive being on); signing out or switching accounts returns the device to local-only storage until setup is deliberately completed again. On every launch, Range Stats opens your data locally first and connects to iCloud only after confirming that iCloud is available, that the signed-in account is the one that consented, that no account-wide deletion is pending, and that the protected-field key matches; if any check cannot be completed, the App stays local-only for that session and tries again later. Please note a behavior of iOS itself: when you sign out of iCloud on a device, or turn iCloud off for Range Stats in iOS Settings, iOS removes the synced copy of Range Stats data from that device. Range Stats cannot prevent this once Cloud Sync is active; the encrypted safety backup required during setup is the recovery path, and the in-app disclosures say so before you enable Cloud Sync. Fourteener Labs does not operate an account system for Cloud Sync, receive a separate copy of your private CloudKit database, or receive your backup password. Apple operates iCloud, CloudKit, iCloud Keychain, and the associated account infrastructure under Apple's Privacy Policy and applicable terms.

You can turn Cloud Sync off for a device in Settings; the change applies after Range Stats reopens its data container. Turning it off does not delete records already stored in iCloud, turn it off on another device, or delete the synchronized encryption key. Individual record deletions made while Cloud Sync is active may propagate to other opted-in devices. Version 3 also provides a separate "Delete Synced Data from iCloud" flow. It requires a fresh encrypted backup, confirmation that other opted-in devices are closed, an explicit permanent-deletion acknowledgement, device-owner authentication, and an available iCloud account. After Range Stats reopens in local-only mode, it deletes and verifies the App's custom private CloudKit record zones, removes the synchronized protected-field key, and erases that device's local Range Stats records. Deletion only proceeds against the same Apple Account that scheduled it, and only the device that requested it deletes the iCloud copy. Two independent signals make older Cloud Sync authorizations fail closed when a previously opted-in device reopens: a synchronized deletion marker in iCloud Keychain, and a tombstone record in your private CloudKit database that reaches devices even when their iCloud Keychain sync is turned off. A device that observes either signal erases only its own local copy and turns its Cloud Sync off; it never deletes the account's iCloud data or keys, so a device opened long after the deletion cannot remove data you have since synced again. If iCloud becomes unavailable before the deletion completes, you can erase the device's local copy immediately after device-owner authentication, and the App retries the iCloud deletion each time it opens or comes to the foreground, reporting its unverified status until CloudKit confirms; records you add after that point are never erased by the retry, and Cloud Sync cannot be turned on again until the deletion is verified. Keep the backup until you have verified the result on every device. The ordinary "Delete All Data" action is separate and must not be treated as account-wide cloud erasure.

Apple states that data stored in iCloud by third-party apps can be reviewed and deleted through iCloud storage management, even when the data is not visible in iCloud Drive. On iPhone or iPad, open Settings, tap your name, tap iCloud, then tap Storage or Manage Account Storage and select Range Stats if it appears. Available controls and labels can vary by system version. See Apple's guide to third-party app data in iCloud and Apple's iCloud storage instructions.

3. Data We Collect

Range Stats does not collect, transmit, or share any personal data with Fourteener Labs or any third parties. Specifically:

4. AI Coaching Feature

Range Stats includes an optional AI coaching feature. You choose the AI provider it uses in Settings > AI Coaching: Google Gemini (default), Anthropic Claude, OpenAI, a custom OpenAI-compatible endpoint you configure, or Apple's on-device model (Apple Intelligence). Before any data is sent to a cloud provider for the first time, the App presents a consent prompt naming that specific provider. You must explicitly agree before any data is transmitted, and consent is requested separately for each provider you switch to.

When you use this feature with a cloud provider:

5. Location Data

The App includes a range finder feature that uses your device's location services to display nearby shooting ranges on a map within a user-configurable search radius. Your location is used in real time only and is never recorded, stored, or transmitted by the App. You may also enter range locations manually without granting location access.

Location permissions can be revoked at any time in your device's Settings > Privacy & Security > Location Services.

6. Photos & Camera

You may attach photos to firearms, range trips, target sessions, training course certificates, and certification/permit documents within the App. When photos are imported or captured via the camera:

Camera and photo library access can be managed in your device's Settings > Privacy & Security.

7. Home Screen Widgets

Range Stats offers optional Home Screen and Lock Screen widgets. Widgets display a small summary (round counts, cleaning status, accuracy trends, ammo counts, renewal countdowns, and your latest target) generated by the App and stored in the App's own protected app-group container on your device. Widget data is never transmitted off your device and is not accessible to other apps. An optional "Discreet Widgets" setting replaces firearm names with generic labels and hides dollar values in all widgets. Widget data is removed when the App is deleted.

8. Notifications

Range Stats may request permission to send local notifications for maintenance reminders and certification, permit, and training-course certificate expiration alerts. These notifications are generated entirely on your device. No notification data is sent to any server. You can manage notification permissions in your device's Settings > Notifications.

9. In-App Purchases

Range Stats offers a one-time in-app purchase ("Range Stats Pro") processed entirely through Apple's App Store. Fourteener Labs does not receive, process, or store any payment information. All purchase and billing data is handled by Apple under Apple's Privacy Policy.

10. App Lock (Face ID / Touch ID)

You may optionally protect the App with a biometric lock (Face ID, Touch ID, or your device passcode) in Settings. When enabled:

Separately, and regardless of whether App Lock is enabled, the most sensitive firearm record fields — serial numbers and Form 4473 / acquisition details (dealer name, phone, and address, and transfer notes) — are encrypted at rest using AES-256-GCM. The encryption key is held in your device's Keychain and is never transmitted to Fourteener Labs. If you deliberately enable Cloud Sync, a synchronizable copy of that key is placed in iCloud Keychain so your other opted-in devices can decrypt the protected fields. This applies to records created or edited in version 2.2 and later.

11. Data Export & Sharing

You may export your data as CSV, JSON, or PDF files from within the App. You may also generate Insurance Documentation Reports (per-firearm cards or full collection reports) and shareable firearm cards using the built-in export features. When you export or share:

12. Crash Reporting

Range Stats uses Apple's MetricKit framework for on-device crash detection. This is a privacy-preserving approach with no third-party SDKs involved:

13. Data Deletion

You can delete individual records (firearms, trips, accessories, maintenance logs, target sessions, training courses, certifications, range reviews, photos) from within the App at any time. "Delete All Data" removes records from the currently active store only. If Cloud Sync is active and you intend to erase the synchronized Range Stats dataset, use Settings > Cloud Sync > "Delete Synced Data from iCloud" and complete its backup, acknowledgement, authentication, restart, and verification steps. Reopen every previously opted-in device afterward so it can observe the deletion marker and erase its older local copy before using Cloud Sync again. Deleting the App removes its local data but does not by itself delete records already stored in your private iCloud database or data on another opted-in device. You can also use Apple's iCloud storage-management controls described in Section 2. Fourteener Labs has no server-side copy or Range Stats account to delete.

14. Children's Privacy

Range Stats is not directed at children under the age of 13. We do not knowingly collect any data from children.

15. Changes to This Policy

We may update this Privacy Policy from time to time. The "Last Updated" date at the top of this page reflects the most recent revision. Continued use of the App after changes constitutes acceptance of the updated policy.

16. Contact Us

If you have questions about this Privacy Policy, contact us at:

support@fourteenerlabs.com