Skip to content

Instantly share code, notes, and snippets.

@shuklz
Last active May 10, 2026 03:15
Show Gist options
  • Select an option

  • Save shuklz/aac973f3127997b60223fb9714659379 to your computer and use it in GitHub Desktop.

Select an option

Save shuklz/aac973f3127997b60223fb9714659379 to your computer and use it in GitHub Desktop.

Privacy Policy — StayCount Resident

Last updated: 2026-05-10

StayCount Resident tracks your stays in different countries from boarding-pass data. Every scan, every calculation, and every record stays either on your device or in your private iCloud database — accessible only to you, on your devices.

No tracking. No analytics. No advertising. No personal data is collected by the developer or sent to any server operated by us.

What the app reads

To record a flight, the app needs the boarding pass itself:

  • Camera scan — when you point the camera at a boarding pass, StayCount uses Apple's on-device DataScannerViewController to recognize the PDF417 / Aztec / QR barcode and capture a photo of the pass. Both the parsed barcode payload and the photo (a JPEG snapshot of the physical pass at the moment of recognition) are stored as evidence for the flight record. Camera access is used only while you are actively scanning; the app never accesses the camera in the background.
  • Wallet pass import — you may import a .pkpass file directly, or share a pass to StayCount Resident from Apple Wallet. The app reads the embedded IATA BCBP barcode message and the pass metadata (passenger name, serial number, relevant date) to populate the flight record. The original .pkpass is stored alongside the parsed flight so you can re-open it in Wallet later.
  • Manual entry — when no boarding pass exists, you can record a flight by hand: date, From/To country, optional carrier / flight number / IATA codes / cabin / seat / booking reference, and an optional evidence image (camera or photo library).

The app verifies that the passenger name on each scanned pass matches the name you entered in Settings. Passes belonging to other passengers are rejected at import.

What the app stores

All records are kept in the app's SwiftData database. The database lives in two places, both controlled by you:

  1. On your device, in the app's private container — sandboxed by iOS so no other app can read it.
  2. In your private iCloud database, synced through Apple's CloudKit infrastructure to the iCloud container iCloud.com.sanjayshukla.staycount. This database is accessible only to you, on devices signed into the same Apple ID. Apple's CloudKit privacy model applies: the developer cannot see, query, or export the contents of your private iCloud database.

The data stored in both locations:

  • The decoded boarding-pass fields (origin / destination airport, flight number, date, seat, cabin, PNR, passenger name).
  • The raw barcode string for each scanned pass.
  • For camera scans and manual-entry photos: a JPEG image attached to the flight record.
  • For Wallet imports: the original .pkpass archive.
  • Your settings: first name, last name, residence country, and tracking-year start month/day. Settings are stored locally only and are not synced via iCloud.

A small App Group container is shared between the main app and its Share Extension so that passes shared from Wallet can be handed off to the main app. It contains only the .pkpass files in transit; the main app drains it on launch and removes the files.

If you sign out of iCloud or disable iCloud Drive, the app continues to work locally without sync. Uninstalling the app removes all of its on-device data; iCloud-stored records can additionally be removed from Settings → Apple ID → iCloud → Manage Storage → StayCount Resident → Delete Data.

Network usage

The only network activity StayCount Resident performs is iCloud sync of your records to your own private iCloud database via Apple's CloudKit. The app does not connect to any developer-operated server. Barcode parsing, airport-to-country lookup, day counting, and PDF generation all run locally on your iPhone. No telemetry, no analytics, no third-party SDKs.

Permissions

  • Camera — used while you actively scan a boarding pass barcode, and when you choose "Take photo" while creating a manual entry.
  • Photo Library (optional) — used only when you choose "Choose from library" while attaching evidence to a manual entry.
  • Apple Wallet Share Extension — used only to receive a pass you explicitly share into StayCount Resident.

The app does not request access to contacts, calendars, microphone, location, health data, or any other system resource.

Reports you generate

StayCount Resident can render a PDF compliance report (country totals, chronological timeline, per-flight detail with optional pass images). The report is generated on-device. What you do with the resulting PDF — email it to your tax advisor, save it to Files, AirDrop it — is entirely up to you; StayCount Resident itself never transmits the report anywhere.

Third parties

The app does not share any data with third parties. The only data flow outside the app is the iCloud sync described above, which travels only to the user's own private iCloud database.

Children

StayCount Resident is not directed at children under 13 and does not knowingly collect any data from children.

Changes to this policy

If this policy changes materially, the updated text will appear at this URL with a new "Last updated" date.

Contact

Questions about this policy can be sent to shuklz@gmail.com or via 3sstudio.net.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment