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.
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:
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.
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.
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.
- The whole server is on GitHub under AGPL-3.0, with the SDKs under MIT. You can read the ingestion path, the hashing, the retention rules, all of it. Our SDKs are MIT and public; our server is not published.
- You can run it yourself with Docker, for free, on your own machine, and the SDK takes a custom host. AppGlance is hosted only.
- You choose the region. Aptabase's hosted plans let you keep data in the EU (Germany) or the US (Virginia). AppGlance is EU only: Cloudflare at the edge, Postgres in Ireland.
- Location detail. Aptabase derives country, region and city from the request at ingest and stores them per event. AppGlance stores at most a two-letter country, and only if you turn that option on.
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
| AppGlance | Aptabase | |
|---|---|---|
| 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
- You want to read the server. All of it is public, and it is a real codebase you can run tonight. Ours is not, and no amount of privacy policy is the same thing as source.
- You want to self-host, or you need US residency. We are EU only, and hosted only.
- You want no identifier at all. If "we hold nothing that could ever become a person" is the promise, that is their architecture. Ours holds a random id, and it stays random unless you decide otherwise.
- You want the lighter App Store label. Usage Data only, versus our Usage Data plus an Identifiers row. Both are "not linked to you", but theirs is one row shorter.
- You ship on many platforms and want one SDK family for Flutter, React Native, desktop and game engines as well as native mobile.
- You still support iOS 13 to 15. Our Swift SDK starts at iOS 16.
- You have more than 20 apps. Their plans have no app limit.
Where we think we are better
- The live glance. "Eight people in the app right now" is a different number from "users in the last hour", and it is the thing this product is named after.
- Returning users and retention. A random install id costs you one row on the privacy label and gives you the answer to "do people come back", which their model cannot produce.
- Alerts that reach your phone the moment someone buys.
- Visits as stories, and a page per install when a customer writes in.
- The App Store questionnaire, answered. Generated ticks rather than a guide.
- The free tier goes further. 100k billable events a month against 20k, and the chatty part of app analytics, presence, is never billed at all.
- The agent prompt. Paste one block into Claude Code or Cursor and the integration and a sensible tracking plan get written for you.
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.