Comparison

AppGlance vs Aptabase

Aptabase is the open-source answer to "privacy-first app analytics", and if you searched for that phrase it is probably what you found first. It deserves to be: a real product since 2023, the whole server on GitHub, and a privacy model stricter than ours. This page is about the two things it will not do, and whether you need them.

Short answer

Aptabase stores no identifier at all, not even a random one, so it cannot count returning users, retention or who is in your app right now. It is open source, you can host it yourself, and you can keep the data in the US as well as the EU. AppGlance keeps a random install id on the device, which is what makes "active right now", retention and a per-user page possible, and lets you attach a name if your app has accounts.

Pick Aptabase if open source, self-hosting or "we hold no identifier" is the requirement. Pick AppGlance if you want to watch your app live, get a push when someone buys, and know whether people come back.

Who wrote this: we make AppGlance. Aptabase is an independent product and we do not speak for it. Everything below was checked in August 2026 against aptabase.com and the public source on GitHub, and products move, so verify anything decision-critical with them. If we have got something wrong, tell us and we will fix it.

What both of us already agree on

Most of the list, and the reason either one beats the ad-funded default:

No IDFA
No advertising identifiers, no fingerprinting, no cross-app tracking, no data brokers.
No prompts
No ATT dialog and, in a standard setup, no cookie or consent banner.
Small SDKs
Native Swift and Kotlin packages with no third-party runtime dependencies.
EU option
Aptabase in Germany (or the US, your choice). AppGlance in Ireland.
Open SDKs
Client code you can read before you ship it, both MIT licensed.
Indie-priced
A free tier you can launch on, and paid plans that stay in indie territory.
Six things neither of us will argue about. The rest of this page is the disagreement, and it is a real one.

The real difference: what "anonymous" means

Both tools call themselves anonymous and both mean it. They just draw the line in different places, and where the line sits decides which numbers you get to see.

Aptabase no identifier, ever

The device sends no id at all. A "user" exists on their server for one day and then cannot be found again.

The SDK sends events and a session idOS, app version, locale, device model. Nothing that names the install.
The server hashes IP + user agentWith a random salt per app per day, into a daily "user" id. The IP itself is not written to the events table.
Tomorrow the salt changesSo the same phone becomes a new user, on purpose. Two days can never be joined.
Which is why, in their words"it's not possible to perform user-level analytics such as Monthly Active Users or User Retention."

AppGlance a random id, no name unless you add one

Anonymous out of the box, but the same install is the same install next week, which is what retention needs.

Every install gets a random idMade up on the device the first time the app runs. No name, no email, nothing from Apple or Google.
That is where it stays by defaultYou have to write a line of code to change it.
Call identify and a name appearsEmail, name, or your own account id. Searchable, and shown on the feed.
Your App Store label carries an Identifiers rowUser ID, not linked, tracking No. Aptabase's default label is lighter: only Usage Data. Details below.
Neither column is the naive one. Aptabase removes a whole class of questions by refusing to keep the key to them. AppGlance keeps the key, keeps it anonymous, and makes the cost of naming someone visible.

What that buys you, concretely. With Aptabase you get sessions, events and their properties, daily unique users as a per-day estimate, countries, versions and a live view of the last hour. With AppGlance you additionally get who is in the app right now, installs versus returning users, retention cohorts, and a page per install with its whole story. If you have never wanted to click on one user, the first list is complete and the stricter model is free.

Open source, self-hosting and where the data lives

This is the section where Aptabase simply wins, and we would rather say so than write around it.

Which one to pick

Pick Aptabase if…

  • Open source is a requirement, or you want to read the server before you trust it.
  • You want to self-host, or your data must stay in the US.
  • You want the lightest possible App Store label: Usage Data only, no Identifiers row.
  • You ship on Flutter, React Native, Tauri, Electron, .NET MAUI, Unity or Unreal and want one SDK family across all of it.
  • You need to support iOS 13 to 15.

Pick AppGlance if…

  • You want to open a page and see who is in your app right now.
  • You want a push on your phone the moment someone buys.
  • You want to know whether people come back: installs versus returning, retention cohorts.
  • Your app has accounts and support emails you cannot answer without a user's story in front of you.
  • You want your App Store answers generated rather than explained.

Side by side

AppGlanceAptabase
Identity Random install id, generated on the device. Optionally identify attaches an email, a name, or your own user id. None from the device. The server derives a daily "user" from IP + user agent hashed with a per-app daily salt; nothing links two days.
Returning users, retention Yes. Installs vs returning, retention cohorts, per-install pages. No, by design. Their FAQ says so plainly. Daily uniques are an estimate.
Live "Active right now" per app, built on a once-a-minute presence ping; on paid plans the dashboard updates itself in place. A Live View: users in the last hour, and a list of recent sessions with their events.
The feed One row per visit, read as a story: install → paywall.viewed → purchase, expandable, searchable. A session timeline per session in the live view; no per-user page, because there is no user.
Alerts A push on any signal. Install, purchase, anything, to your phone through ntfy or Discord, or a signed webhook to your server. A native iPhone app is in development. Not among the listed features as of August 2026.
Panels Fixed panels: overview, funnels, retention, sessions, versions, countries, users, CSV export. Events with property breakdowns, sessions, versions, countries and regions, CSV export. No funnels or retention.
Privacy labels Generated. The exact App Store Connect ticks from your own toggles, plus a free public tool. Default: Identifiers → User ID and Usage Data → Product Interaction, not linked, tracking No. A written guide. Default: Usage Data → Product Interaction only, not linked, tracking No. The lighter label.
What is automatic Install, sessions, "active right now" and retention from one modifier (.trackAppLifecycle()); Android watches the process lifecycle itself. Nothing is tracked until you call trackEvent; they recommend one event at app start. Sessions are derived on the server (a new one after an hour of quiet).
Debug builds Simulator and debug builds send nothing unless you pass debug: true; then they are tagged and kept out of Live. Detected automatically and sent, with a Debug / Release switch in the dashboard. Handy for experiments; debug data is kept six months in the open-source server.
Setup AppGlance.configure(apiKey:) plus the modifier, or a paste-in prompt that makes an AI agent do the integration and a tracking plan. Aptabase.shared.initialize(appKey:) then trackEvent. Comparable, and well documented.
SDK size About 197 KB compiled on iOS with no dependencies; an 83 KB AAR on Android with one AndroidX dependency. Smaller: about 76 KB compiled on iOS with no dependencies. It also does less: no presence, no identify, no persisted offline queue. Measured 2026-08-16 on aptabase-swift 0.3.11 with the same method as our own figure (size on the iOS release object).
Platforms Swift (iOS 16, macOS 13, tvOS 16, watchOS 9, visionOS 1 and up), Kotlin (Android 5.0 and up), and an HTTP API for anything else. Broader. Swift from iOS 13, Kotlin, Flutter, React Native, Tauri, Electron, NativeScript, .NET MAUI, Unity, Unreal, web.
Open source SDKs, MIT. The server is hosted only and not published. Everything. Server AGPL-3.0, SDKs MIT, self-host with Docker for free.
Where the data lives EU only: Cloudflare at the edge, Postgres in Ireland. IPs never written; country is opt-in and two letters. Your choice of EU (Germany) or US (Virginia), or your own server. Country, region and city stored per event; the IP is not.
Track record New. Built for the author's own nine apps, then opened up. Swift and Kotlin SDKs at 1.0.0. Since 2023, about 1.8k GitHub stars, a real community. The Swift SDK is at 0.3.x.
Apps per account 20 on every plan. Unlimited on every plan.
Pricing Free to 100k events a month, then $4.99/mo for 1M, $14.99/mo for 2.5M, $39/mo for 7M and $99/mo for 18M. Presence pings and identify never count. USD, excluding VAT or sales tax. Free to 20k events a month, then $10/mo for 200k, $20 for 1M, $40 for 2M, $75 for 5M, $140 for 10M, $240 for 20M, $300 for 30M, $450 for 50M, and contact them above that. Every event counts. Self-hosting is free.
Going over the plan Recording continues for 7 days or 25% past the cap, then new billable events pause until the month resets. History and charts are never touched. Paid plans can move up one tier at renewal. No overage fees. A warning email near the cap, then analytics are paused for the rest of the month.
Event history 90 days free, 6 months on Indie, 12 months above. Charts and cohorts kept forever. The open-source server keeps release events for five years and debug events for six months. Check their site for the hosted plans.

Where Aptabase is the better pick

Where we think we are better

The fastest way to compare is to look

The demo is the real dashboard on sample data from four apps. No account, nothing to uninstall.

Also worth reading: all the comparisons, how this compares with TelemetryDeck, how this compares with Firebase Analytics, what privacy-first analytics actually means, and the free App Store privacy label tool.