PushPact icon
PushPact

Privacy

Last updated September 2026

The short version

PushPact doesn't have accounts, doesn't run analytics, and doesn't show ads. Everything you log — your routine, reps and seconds, levels, targets, streak — is stored in a local database on your phone (and in your own Android backup, if you have it turned on). Nothing about you is sent to us unless you turn on the optional Pact feature, and even then, only a small, specific set of numbers is shared with the one person you paired with. (The app does check for updates, which involves a public version file and Expo's update service — see below.)

What's stored on your device

Your routine, rep and seconds counts, levels, daily targets, and streak history live in a local SQLite database inside the app. We never receive it; only the optional Pact feature sends anything about your exercise, as described below.

The six starter-routine questions are answered on your phone, and nothing is sent. Your answer about what to go easy on (wrists, knees, lower back, shoulders) is used once to choose exercises and is never saved, so no backup or export can contain it.

If Android backup is on for your phone, Android includes that history database in your own Google account backup, so reinstalling PushPact or moving to a new phone brings your stats back. That backup belongs to your Google account and PushPact can't read it. Pact pairing details are deliberately left out of it, so a restored phone never shares a pairing with your old one. You can turn this off in your phone's backup settings.

Settings → Export Data also saves your history as a file you control, and Import Data loads it on another phone. "Reset History" deletes your history immediately.

What the optional Pact feature shares

Pact is off by default. If you turn it on to pair with a partner, the app sends the following to a small Cloudflare Worker that relays data between the two paired devices:

That's the entire set. No location, no contacts, no photos, no device identifiers beyond a randomly generated pairing token. Your partner sees the same set of numbers about you, and you see theirs — nothing more.

The relay keeps only the latest copy of those numbers, overwriting it on every sync. Anything nobody has synced for 30 days is deleted automatically, and an unused invite code expires after one hour.

The relay doesn't keep request logs. If a request fails, it records the error and which endpoint failed (never your pairing token), kept for 3 days so bugs can be fixed. To stop abuse, pairing requests are counted per network address for a minute; that count isn't stored.

Update check and reminders

About once a day the app downloads a tiny public file, pushpact.pages.dev/version.json, to tell you when a newer version is out. The request carries nothing about you or your reps.

Each time the app opens, it also asks Expo's update service (EAS Update, run by Expo, the company behind the framework PushPact is built with) whether newer app code is available, and downloads it if so. That request includes the app's version and platform and a random ID created on your phone the first time the app runs, which Expo uses to count how many devices use the app. It contains nothing you log and nothing that says who you are, though like any internet request it reveals your network's IP address to Expo. See Expo's privacy policy.

Daily reminders, if you turn them on, are scheduled on your phone and never touch a server.

What we don't do

Leaving a Pact

Tapping "Leave Pact" deletes your snapshot from the relay as soon as your phone can reach it — right away if you're online, otherwise the app keeps retrying in the background until it succeeds. If you're the last member left, the pairing record itself is deleted too.

Questions

If anything here is unclear, or you've found a way this doesn't hold up, email shankscodes12@gmail.com.