Privacy Policy — Tactical Ballistics
Effective date: 2026-05-10 Last updated: 2026-06-04
This document describes what data the Tactical Ballistics mobile app ("the app") accesses, processes, stores, and transmits. It applies to every published build of the app on Google Play and the Apple App Store.
Short version. The app is designed to work fully offline. It does not collect analytics, does not track you, has no user accounts, and stores everything you create — profiles, shots, custom drag curves, settings — only on your device. A few optional features send the coordinates you point the app at to public services (weather, magnetic declination, map tiles) when you actively use them. Nothing is sold or shared with advertisers.
1. Data controller
This app is published by Olexandr Pasichniy as an individual developer.
Contact for privacy questions: compasalex0@gmail.com
2. Data we do not collect
The app does not:
- create or require user accounts;
- include analytics SDKs (no Firebase Analytics, no Google Analytics, no third-party behavioural tracking, no advertising IDs);
- enable any error/crash reporting by default in public production builds. The Sentry SDK is packaged in the app, but it stays asleep — zero network calls — unless you opt in via Settings → Crash reporting. (Beta/test-track builds are the one exception and enable it by default; see §10.) See §10 below for the exact contract;
- collect device identifiers (IDFA / GAID), or fingerprints;
- read your contacts, photos, microphone, camera, or files outside of what you explicitly pick;
- show ads;
- share or sell any data to third parties.
3. Data we store on your device only
The app keeps the following information locally on your device, in on-device storage that is private to the app (Android Hive boxes / SharedPreferences, the iOS application sandbox). It is not uploaded anywhere by the app:
- shooting profiles (rifle, ammunition, scope, optional notes);
- shot history (range, conditions, computed corrections, optional GPS pins captured via the Geo-Shot map);
- custom drag (Cd-vs-Mach) profiles you import or generate;
- preferences (measurement system, locale, default physics flags, per-profile range cap, offline tile cache settings).
You can clear all of this at any time by deleting the app, or by using the in-app delete actions for individual profiles, history records, or custom drag curves.
3.1 Backups
You control your own backups; we never receive them.
- Manual backup (Settings → Backup & restore). "Create backup"
writes a
.balbackup.jsonfile containing the on-device data listed above and hands it to your operating system's share sheet. You choose where it goes (your cloud drive, a messaging app, local storage). The file is plain JSON and is not encrypted — store it somewhere you trust. "Restore from file" replaces the app's current data with a backup file you select. - Operating-system Auto Backup (Android). If you have Android's backup-to-Google enabled in your system settings, Android may copy the app's on-device data to your own Google account, like it does for other apps. This is a function of your device and your Google account, not of a server we operate — we have no access to it. The offline map tile cache is excluded from this backup (it is large and re-downloadable). You can disable Android backup in your system settings.
In both cases the data goes to storage you own and control. We operate no backup server and never receive a copy.
4. Data that leaves the device — only on opt-in
A few features call public network services. They are off until you use them, and they only ever send the values you have explicitly provided to the app:
| Feature | Service called | What is sent |
|---|---|---|
| Live atmosphere (Atmosphere card) | Open-Meteo (open-meteo.com) |
The latitude/longitude you typed or pinned |
| Geo-Shot weather + elevation | Open-Meteo (open-meteo.com) |
Shooter and target latitude/longitude |
| Magnetic declination correction | NOAA NCEI (ngdc.noaa.gov) |
Latitude/longitude and the current date |
| Map tiles (Geo-Shot map) | OpenStreetMap and OpenTopoMap tile servers | The map viewport you scroll to |
| Offline tile pre-download | Same tile servers as above | The region you select for download |
All of these requests are made directly from your device to the named service. The app does not proxy them through any server we operate; we do not see, log, or retain those requests. Each upstream service has its own privacy policy:
- Open-Meteo: https://open-meteo.com/en/terms
- OpenStreetMap tile usage policy: https://operations.osmfoundation.org/policies/tiles/
- OpenTopoMap: https://opentopomap.org/about
- NOAA NCEI: https://www.noaa.gov/protecting-your-privacy
If you do not use these features, no network requests carry your coordinates.
5. Permissions the app may request
| Permission | When it is requested | Why |
|---|---|---|
| Location (precise / approximate) | First time you open the Coriolis or Geo-Shot screens | Latitude/bearing inputs to the ballistic engine; never stored on a remote server |
| Accelerometer (motion sensor) | When you open the inclination tilt picker on the Range card | Reads gravity vector to estimate the target angle locally |
| Storage (file picker) | When you import/export a .balprofile.json or .balbackup.json file |
You pick the file; no scanning of the wider filesystem |
You can revoke any of these in the operating system settings at any time. The app will fall back to manual entry where possible.
6. Children
The app is not directed at children under 13 and does not knowingly collect any personal information from them. Because no personal data is collected from anyone, no special handling is required.
7. Security
All data the app stores stays in the operating-system-provided
per-app sandbox. Profile import/export uses files you choose, encoded
as plain JSON; the app does not encrypt the export. Treat exported
.balprofile.json files like any other personal document.
8. Changes to this policy
If the app starts collecting any data not described here, this policy will be updated and the Last updated date at the top of the page will change in the same release. Material changes will also be called out in the release notes.
9. Your rights
Because the app does not collect personal data outside your device, there is no remote dataset to export, correct, or delete. To delete everything the app has, uninstall the app or use the in-app actions described in §3.
If you have a privacy question, email compasalex0@gmail.com.
10. Optional crash reporting
The app ships with the Sentry SDK in the bundle, but it is off by default and inert until you turn it on. There is no automatic initialisation, no silent telemetry, no "anonymous usage statistics" flag elsewhere — just the explicit Settings → Crash reporting switch.
When (and only when) you flip that switch on:
- What is sent: an unhandled exception (the type of crash, the exception message, and the stack trace), the app version, the OS version, the device model, the build mode (debug/release), and the current locale.
- What is NOT sent: shooting profiles, recipes, history records,
notes, coordinates, weather lookups, custom drag curves, any text
you have ever typed into a field, any value you have ever computed,
the timestamp of when you took the shot, or anything that could be
linked back to your identity. The Sentry integration is configured
with
tracesSampleRate=0,profilesSampleRate=0,enableAutoSessionTracking=false, andmaxBreadcrumbs=0— i.e. everything beyond the bare unhandled-exception payload is disabled in code, not just in spirit. - Where it goes: Sentry's servers, under the project owned by the developer named in §1. Sentry's own privacy and data-retention policy applies on top: https://sentry.io/privacy/.
- How to turn it off: flip Settings → Crash reporting off and restart the app. The SDK will not initialise on the next launch and will not transmit anything until you turn it back on.
The toggle is intentionally an app-restart change, not a hot toggle, so the privacy contract is: whatever Settings shows at boot is what the SDK does for the entire session.
Beta builds. Builds distributed on a beta/test track (compiled with
--dart-define=BETA=true) enable this crash reporting by default, so
the limited test audience gives the developer crash visibility without
each tester hunting for the switch. The what is sent / what is NOT
sent lists above apply unchanged — only the unhandled-exception payload
is transmitted, and only when a SENTRY_DSN is compiled in. The Settings
card shows a note when this is the case. Public production builds are
unaffected: crash reporting stays off until you turn it on.
11. Optional catalog contributions
The app ships a built-in catalog of rifles, ammunition and scopes, and lets you add your own custom entries — which, like everything else, stay on your device. If and only if you turn on Settings → Improve the catalog (off by default), the app will, after you save a custom rifle, offer a one-tap "Suggest to catalog" action.
- It sends nothing by itself. The action opens your own email app with a pre-filled message addressed to the developer. Nothing leaves your device until you read the message and press send yourself. The app makes no network call of its own for this feature.
- What is included: only the rifle's catalog specification — its name and, when set, brand, model and caliber, plus the barrel length and twist rate.
- What is NOT included: your profiles, shot history, notes, coordinates, the rifle's on-device id, or anything else stored on the device.
- Your email address: because the message is composed and sent by your own mail app, your email address is visible to the developer, as with any email you send. If you would rather not reveal it, simply do not use this feature — your custom rifle still works fully on-device.
- What happens to it: the developer reviews submissions and may add them, in a later app update, to the catalog that ships to all users. Treat anything you send as potentially public — do not include details you are not comfortable sharing.
- How to turn it off: flip Settings → Improve the catalog off and no further prompt appears.
12. Purchases (Pro unlock)
Some advanced features (reloading recipes, Geo-Shot, DOPE-fitter, truing drop and drift) are unlocked by a one-time Pro purchase. The full ballistic engine, calculator and the other tools remain free.
- Who handles payment: the purchase is processed entirely by Google Play Billing. We never see or receive your card number, billing address, or any payment credentials — Google's Payments privacy notice applies to that transaction.
- What the app stores: only a local on-device flag recording that Pro is unlocked (so paid features work offline). This flag lives in the same private app storage as your other settings and is never uploaded by the app. There is no account and no server that tracks your purchase on our side; the app re-checks your entitlement with Google Play on launch.
- Restoring: "Restore purchase" on the paywall asks Google Play to re-confirm a purchase tied to your Play account — useful after a reinstall or on a new device.
We run no payment server, store no transaction history, and do not use purchase data for advertising or analytics.