Privacy Policy for FPS Logger
Last updated: 11 Aug, 2026
This policy covers FPS Logger for Mac (Mac App Store) and FPS Logger for iPhone, iPad and Apple TV. The two apps behave differently and are described separately below.
Overview
FPS Logger ("the App") is a developer tool created by Stewie Jones for measuring app performance with Apple's Metal HUD. The Mac version is a sandboxed application distributed via the Mac App Store. The iOS, iPadOS and tvOS versions are companion apps: they browse a catalog of tested games, and — when paired with a Mac running FPS Logger — can ask that Mac to launch an app on the device with the HUD enabled.
Analytics are opt-in and off by default in every version. Each app has its own separate opt-in; agreeing on one device does not agree on another.
Analytics are not the only time the apps use the network. Both apps also download a public catalog of tested games, and the Mac app uploads a copy of your imported apps list so your iPhone, iPad or Apple TV can reach it from outside your home network. Neither of those is controlled by the analytics switch, and both are described in full below.
The data controller is Stewie Jones, reachable at support@fpslogger.com.
Part 1 — FPS Logger for Mac
Data Collected
Analytics (Opt-In)
If you opt in to analytics, the App sends usage data to a private server each time you test an app with the HUD ("launch" events) and each time you press Show Games to list apps on a connected device ("scan" events). Both are covered by the same opt-in toggle and can be disabled at any time in the App's settings.
Launch events (sent when you test an app with the HUD) include:
The time the event was received, recorded by the server
FPS Logger's own app version, and whether it's the free or paid version
Device model (display name and terminal format) and OS version of the tested device
Wireless state (display name and terminal format)
App name tested (display name and terminal format), its bundle identifier, and its version/build number
App icon URL, and — when available — a small, downscaled copy of the app's icon image itself
Icon lookup method (how the icon was matched — e.g. App Store ID, Bundle ID, Name Search — plus a link to the matched App Store page, if any)
Metal HUD compatibility status for the app tested
HUD metric preset used (e.g. Default, Custom, Full)
Your Mac's hardware model, macOS version, and the Xcode/devicectl versions installed
Whether the launch was started on the Mac or from FPS Logger on an iPhone, iPad or Apple TV
A snapshot of the App's own log panel up to the moment of the test
Scan events (sent when you press Show Games) include the same device, Mac, and app-identifying fields as above, plus a name, icon, bundle identifier, version, build number, and Metal HUD status for every app detected on the connected device in that scan — not just the one you go on to test.
No name, email, or other identifying information is included, and none of this data is linked to your identity. Note that the log snapshot is a copy of what the App printed in its own log panel, which can include the names you have given your Mac and your connected devices.
App Reports (Optional, User-Initiated)
When you submit a report via the right-click context menu, the following data is sent to the same private server:
App version
Report type (one of: Report: Wrong Icon, Report: Wrong Name, Report: Not a Game, Report: Metal HUD Supported, Report: Metal HUD Unsupported, Report: Issue Enabling Metal HUD — the last of which is recorded as either "HUD Did Launch" or "HUD Didn't Launch" depending on your answer)
App name (display name and terminal format)
App icon URL
Suggested name (only when submitting a "Report: Wrong Name" report, and only if you type one — it can be left blank)
Your Mac's hardware model, macOS version, and the Xcode/devicectl versions installed
These reports are submitted only when you explicitly choose to send one.
Support Requests (Optional, User-Initiated)
When you use the in-app Contact Support form, the following is sent to the same private server:
The email address you enter
The subject line the form was opened with (for example "Connection Issue – iPhone 17 Pro Max")
The message you write
System info: app version, build type, macOS version, and the selected device's model, OS, and connection state
Session logs (only if you leave "Attach session logs" enabled) — up to ~30 KB, which may include names of apps you tested and your Mac's hardware details
This is sent only when you fill in the form and tap Send. Submissions are stored as records on the developer's server and read there; they are not automatically forwarded as email. If the developer replies, the reply is sent to the address you provided.
Catalog and status updates (no opt-in, no personal data)
Separately from analytics, the App downloads public files from cdn.fpslogger.com — at launch, and each time you press Show Games. These are the Metal HUD status corrections, custom app names, unhide list, the tested-games catalog, its icons, and two small version counters (statuses.json, names.json, statuses_raw.json, names_raw.json, visible_overrides.json, apps.json, version.json, data_version.json, and icons/).
These are ordinary downloads of public files. They happen whether or not analytics are enabled, they contain no information about you or your devices, and nothing is uploaded as part of them. As with any web request, the server sees the IP address the request came from.
The App also asks Apple's public iTunes Lookup API whether a newer version of FPS Logger is on the App Store. That request contains only FPS Logger's own bundle identifier.
Connecting to your iPhone, iPad or Apple TV
The Mac app advertises itself on your local network as _fpslogger._tcp using Bonjour, so FPS Logger on your device can find it. On the same network, that connection is directly between your machines and nothing about it reaches the developer.
So that your device can still reach your Mac from a different network, the Mac also uploads a copy of each imported apps list to a relay at ingest.fpslogger.com, and polls that relay for launch requests. This happens on every import, whether or not your device is on the same network as your Mac, and it is not controlled by the analytics setting. What is uploaded is:
The list of apps your Mac imported from your device — names, bundle identifiers, versions and icons
The device's marketing name and hardware identifier (for example "iPhone 17 Pro" / "iPhone18,1"), its UDID, and the name of your Mac as macOS reports it (for example "Stewie's Mac Studio")
The relay is reached through a per-Mac secret token, generated on your Mac and handed to your device the first time the two meet on a local network, so the address cannot be guessed by others. See "Data Retention" below for how long the relay keeps this.
You can prevent this upload entirely by not importing apps from a device — that is the action that publishes the list.
Local Storage
The following data is stored locally on your Mac in the App's sandbox container, under ~/Library/Containers/com.stewie.metalhud/Data/Library/Application Support/com.stewie.metalhud/. It's split across a few JSON files rather than one combined file:
App preferences (HUD settings, window geometry, analytics opt-in state) — data.json
Connected device identifiers, names, and models — one file per paired device, under the devices/ subfolder
Hidden/pinned apps, custom app name mappings, and saved games — apps.json
Command history (including HUD settings used per session) — commandHistory.json
The App also keeps a small amount of state in macOS user preferences (the App's own defaults): the relay token described above, the last-downloaded copy of the status and name corrections, and the catalog version counters.
None of this is transmitted except as described in this Part — that is, under Analytics, App Reports, Support Requests, or the relay upload described under "Connecting to your iPhone, iPad or Apple TV".
Your Mac's hardware information (model name, chip, memory, macOS version) is shown in the App's in-app log panel at launch, and is also sent to the developer as part of Analytics and App Reports if you've opted in — see those sections above.
Your device's identifier (UDID) is stored locally to remember device pairing, pinned apps, and launch history for each device. It is never included in analytics, reports, or support submissions. It is included in the relay upload described above, because that upload is how your device confirms a list belongs to it and not to another device of yours.
App icons are read from the connected device and cached locally in the App's sandbox container, under ~/Library/Containers/com.stewie.metalhud/Data/Library/Caches/com.stewie.metalhud/icons/.
iCloud Storage
Your saved performance sessions — performance_sessions.json and the individual per-session .fpslog recordings in the PerformanceSessions/ folder — are stored in your iCloud Drive "FPS Logger" folder when iCloud is available on your Mac. This means Apple syncs these files to your own iCloud account and across your signed-in devices. This data stays within your personal iCloud account and is never sent to the developer or any third party. If iCloud is unavailable, these files are kept locally in the App's sandbox container instead.
Part 2 — FPS Logger for iPhone, iPad and Apple TV
The companion app is mostly read-only: it ships with a bundled copy of the tested-games catalog and works offline. There are four situations in which data leaves the device, described below.
Catalog updates (no opt-in, no personal data)
The App fetches the current catalog, its icons, and its version counters from cdn.fpslogger.com — apps.json, version.json, data_version.json and icons/ — so the list stays current between App Store updates. These are ordinary web requests for public files. No information about you is included in them. As with any web request, the server sees the IP address the request came from.
App Store taps (Opt-In)
If you turn on "Share App Store taps", then each time you tap "Get on App Store" on a catalog entry, the App sends the following to a private server:
The app's name
The app's bundle identifier
The App Store link for that app
Nothing else is included — not your device model, not your iOS version, not which build of FPS Logger you are running. This is off by default, is asked once on first launch, and can be changed at any time in About & Privacy.
Launching a game from your device
When you press play on a game in FPS Logger on your iPhone, iPad or Apple TV, the launch itself is carried out by FPS Logger on your Mac. If analytics are enabled in the Mac app, that Mac records the launch as described in Part 1 — including your device's model and OS version, the app launched, the HUD settings used, and a snapshot of the Mac's log panel.
This record is made by the Mac under the Mac's own analytics setting. The "Share App Store taps" switch on your device does not control it; it can only be changed in FPS Logger on the Mac.
Connecting to your Mac
The App finds FPS Logger on your Mac using Bonjour on your local network, which is why iOS asks for Local Network permission on first use. It looks only for the _fpslogger._tcp service; it does not scan for anything else on the network. When the two are on the same network, launch requests travel directly between your devices and nothing about them reaches the developer.
When no Mac is visible on the local network, the App instead reads from a relay at ingest.fpslogger.com, and sends launch requests through it. The data that passes through, and is held on, the relay is:
The list of apps your Mac imported from your device — names, bundle identifiers, versions and icons
Your device's marketing name, hardware identifier and UDID, and the name of your Mac (for example "Stewie's Mac Studio")
Launch requests you make, and the results your Mac returns for them
Two things to be clear about. First, the imported apps list is uploaded by your Mac on every import, not only when the two are on different networks — the relay copy is kept ready in case you need it. Using your device only at home means the copy is never read, but it is still made. Second, the relay is reached through a per-Mac secret token exchanged the first time your Mac and device meet on a local network, so these addresses cannot be guessed by others.
The relay holds only the most recent imported-apps payload and a short queue of pending launch requests. Retention is described below.
Local Storage
On your device, the App stores:
Your analytics choice, the relay token, the last-used launch options, and the catalog version counters — in the app's preferences
The imported apps list received from your Mac — importedApps.json, in the app's Application Support directory
A cached copy of the catalog — in the app's Caches directory
Log files written only when you use the export/share log option
None of this is transmitted except as described above. The App cannot see the other apps installed on your device; iOS does not permit that. The list it shows comes from your Mac.
Applies to both apps
Data Not Collected
Neither app collects:
Personal information such as your name, phone number, or account credentials. (The Mac app does not collect your email address unless you voluntarily provide it in the Contact Support form — see Support Requests above.)
Location data
Advertising or tracking data, and no advertising identifier
Contacts, photos, camera or microphone data
A list of the apps installed on your iPhone, iPad or Apple TV, other than the imported list your own Mac sends you
There is no user account and no login in either app.
Network Usage
The apps make network requests solely to:
Check for a newer FPS Logger release via Apple's iTunes Lookup API (Mac)
Fetch the public catalog, status and name files from cdn.fpslogger.com (Mac, iPhone, iPad, Apple TV)
Transmit analytics data (opt-in only) to a private server, as described above
Transmit user-submitted app reports to the same private server (Mac)
Transmit support-form submissions (email, subject, message, system info, and optional logs) to the same private server (Mac)
Publish imported-apps payloads to, and exchange launch requests through, the relay at ingest.fpslogger.com
App icons are read from the connected device itself and are not fetched over the network. No data is shared with third-party advertisers or data brokers.
Where Your Data Is Processed
The private server and the relay run on Cloudflare (Workers and R2 object storage), under the developer's account, at ingest.fpslogger.com. The public catalog files are served from Cloudflare's CDN at cdn.fpslogger.com. Cloudflare processes this data only to host it. Analytics, report and support records are pulled down from there and kept in a database on the developer's own Mac.
Cloudflare applies a per-IP rate limit to the relay and the analytics endpoint, so IP addresses are visible to it in the course of serving those requests, as they are for any web request. IP addresses are not recorded in the analytics, report or support records themselves.
No other third party receives this data.
Data Retention
Analytics events (launch and scan), app reports, and support submissions are kept indefinitely, because they form the tested-games catalog the apps ship with. You can ask for a support submission to be deleted at any time; analytics and reports carry no identifier that would let a specific record be traced back to you.
The relay's copy of your imported apps list is held until your Mac's next import replaces it. It is not deleted on a timer. Deleting the app from your Mac stops new copies being made but does not remove the last one — email support@fpslogger.com with a request and it will be deleted.
Queued launch requests are deleted as soon as your Mac collects them, and in any case discarded after two minutes. Launch results are deleted the moment your device reads them.
Locally stored data on your Mac or device is removed when you delete the app.
Your Choices and Your Rights
Analytics can be turned off at any time in the Mac app's settings, and "Share App Store taps" at any time in About & Privacy on your device. Both are off until you turn them on.
To stop the relay copy being made, do not import apps from a device.
To request access to, correction of, or deletion of anything you have sent — most realistically a support submission, since that is the only place you provide an email address — write to support@fpslogger.com.
Where the UK GDPR or EU GDPR applies, the legal basis for analytics, App Store taps, and support submissions is your consent, which you can withdraw at any time. The legal basis for the catalog downloads and the relay is legitimate interest in making the app function. You have the right to complain to your local data protection authority.
Children
Neither app is directed at children, and neither knowingly collects data from children under 13 (or the equivalent age in your country). Nothing in either app asks for age, and there is no account system.
Changes to This Policy
If this policy changes materially, the "Last updated" date at the top will change and the current version will be published at https://www.fpslogger.com/privacy. Changes that broaden what is collected will be reflected in the apps' in-app privacy screens as well.
Contact
For privacy questions: support@fpslogger.com