App analytics New users, active users, retention. For your app, at a glance.
iOS, Android, HarmonyOS, Flutter and React Native. Which store brought the installs, which version is crashing, and who comes back after day one — in the same project as your website and mini-programs.
- iOS · Android · HarmonyOS
- D1 / D7 / D30 retention
- Crashes, ANR, launch time
- Same project as the website
New users
6,120
▲ 9.1%
DAU
42,093
▲ 12.4%
Launches
128,460
▲ 8.3%
D1 retention
41.6%
▲ 1.8 pts
Crash rate
0.42%
▼ 0.08 pts
DAU · daily
This periodPreviousNew users by source · 14 days
Six numbers that say whether the app is healthy
Every metric comes with a trend and a period-over-period delta. Click through to the report — no definitions to assemble.
New users
6,120▲ 9.1%
Devices or accounts that opened the app for the first time. Split by store, channel and version.
Active users
42,093▲ 12.4%
DAU, WAU and MAU, with the DAU/MAU stickiness ratio.
Launches
128,460▲ 8.3%
Cold and warm starts counted separately; 3.1 launches per user per day.
D1 retention
41.6%▲ 1.8 pts
Share of installs that open again the next day. D7 is 24%, D30 is 12%.
Time per session
6m 42s▲ 14s
Median session length; the long tail by hour is under engagement.
Crash rate
0.42%▼ 0.08 pts
Per launch. Crash-free users 99.1%. Most useful when read against versions.
After the install, who comes back
New-user retention asks whether this week's installs opened the app again. Active retention asks whether existing users are slipping away. Dormant and returning users get their own rows so you can run win-back campaigns.
- Cohorts by install week, D1 / D7 / D30 in one row
- New-user and active retention computed separately
- Dormant, churned and returning users become segments in one click
Example scenario: Ops notices the Sep 15 cohort has D7 retention 8 points below the previous weeks. Opening the cohort shows most installs came from one app-store promotion — a traffic-quality issue, not a product one.
New-user retention · by install week
| Install week | Installs | D0 | D1 | D3 | D7 | D14 | D30 |
|---|---|---|---|---|---|---|---|
| Aug 25 | 1,204 | 100% | 44% | 38% | 33% | 29% | 24% |
| Sep 1 | 1,318 | 100% | 47% | 40% | 35% | 30% | |
| Sep 8 | 1,276 | 100% | 51% | 43% | 37% | ||
| Sep 15 | 1,402 | 100% | 49% | 42% | |||
| Sep 22 | 1,366 | 100% | 53% |
Active retention · by active week
Dormant and returning · this period
- Open the people inside a cellEvery cell shows which users it holds and what device they installed on.
- Alert when retention dipsFor example, notify WeCom or email when D1 drops below 35%.
- One person across web and appRetention merges across website and app for the same user — no double counting.
Has the new build rolled out, and which channel brings quality
Version share tells you whether a fix has actually reached users. The channel quality matrix puts "how many installed" and "how many stayed" on one chart, so the channel worth more budget is obvious.
- Version share and upgrade speed
- New users × retention quadrant
- D1 retention and crash rate for every channel
- on the latest version
- 58%
- on the latest version
- install channels
- 5
- install channels
- since 4.2.1 shipped
- 9 days
- since 4.2.1 shipped
Version share · active users
4.2.1 shipped 9 days ago and covers 58% of active users; 9% are still on 4.1.x or older, where the crashes concentrate.
Channel quality · new users × D1 retention
App Store and Google Play bring both volume and retention; direct downloads retain only 28% on day one — mostly one-off installs.
Example scenario: After shipping the 4.2.1 crash fix, the product team waits for version share to pass 80% before judging whether the overall crash rate really fell — instead of reading the number on release day.
How long, how often, when, and where they go
Four charts for usage habits. Hour-of-day tells you when to schedule pushes; screen paths show which screen people leave from.
Session length
Median 6m 42s; a third of sessions last 1–5 minutes.
Active hours
Peak at 8–10 pm; weekends are flatter during the day.
Frequency
Opens per week; 35% open four times or more.
Screen paths
From launch onward. The highlighted path reaches checkout.
Sample data
Crashes, ANR and launch time, read against versions
Crash rate is per launch; ANR and launch time are shown by device. Every crash group carries a stack summary, the screen and the version, ready to hand to whoever ships the release.
- Crashes grouped by version and screenIdentical crashes are merged, with affected users and share.
- ANR and launch timeCold-start P50 / P90, with device models over 2 seconds listed separately.
- Crash-free usersCloser to what users feel than crash rate; 99.1% here, target 99% or above.
- Watch 48 hours after a releaseNotify when a new version crashes 1.5× more than the previous one.
Stability · acme.app
Last 14 days · all platformsCrash rate
0.42%
−0.08 pts vs previous
ANR rate
0.11%
Android · flat
Cold start P90
1.8s
iOS 1.4s · Android 2.1s
Crash-free users
99.1%
Target ≥ 99%
Top crashes · by affected users
- NullPointerException · CheckoutViewAndroid · 4.1.818631%
- EXC_BAD_ACCESS · ImageDecoderiOS · 4.2.09416%
- SocketTimeout · OrderAPIAndroid · 4.2.16110%
- OutOfMemory · FeedListAndroid · 4.1.x488%
Bring in attribution results and read them next to retention
Receive install attribution from AppsFlyer, Adjust and similar platforms, so every install carries its campaign and channel. TapCub does not replace the attribution platform — it connects its results to what happens afterwards: retention and payment.
- Installs, D1 and D7 retention and paying rate per campaign
- Organic installs on their own row, never mixed with paid
- Clicks on the website by the same person connect too
| Channel | Campaign | Installs | D1 | D7 | Paying | Source |
|---|---|---|---|---|---|---|
| Apple Search Ads | summer_launch_ios | 4,820 | 46% | 31% | 8.4% | AppsFlyer |
| Ocean Engine | brand_search_cn | 3,106 | 42% | 27% | 6.1% | Adjust |
| Meta | retarget_cart | 1,984 | 58% | 39% | 12.6% | AppsFlyer |
| WeChat Moments | wechat_moments | 1,410 | 37% | 22% | 4.3% | Adjust |
| Organic | — | 12,640 | 49% | 34% | 7.2% | Store organic |
- Works with AppsFlyer, Adjust and othersReceive install attribution through a postback — no SDK change.
- Quality per campaignEvery campaign gets D1, D7 retention and paying rate, not just install counts.
- Import ad spendOnce costs are in, app-install ROI sits on the same chart as the website.
The same user, across the app and the website
App analytics answers "how many, and how many stayed". For "who they are, what they did and why they stayed", switch to Insights — same data.
One site key per platform, a few lines to start
Start once and launches, screens, crashes and device info are collected automatically; business events go through track. Event names and fields are shared across every platform.
import TapCub
// Initialise once at launch
TapCub.start(siteKey: 'SITE_KEY')
// Business event: payment
TapCub.track('order_paid', props: [
"amount": 74, "currency": "USD"
])import com.tapcub.sdk.TapCub
// Initialise once at launch
TapCub.start(this, 'SITE_KEY')
// Business event: payment
TapCub.track("order_paid", mapOf(
"amount" to 74, "currency" to "USD"
))import { TapCub } from '@tapcub/harmony'
// Initialise once at launch
TapCub.start(this.context, 'SITE_KEY')
// Business event: payment
TapCub.track('order_paid', {
amount: 74, currency: 'USD'
})import 'package:tapcub/tapcub.dart';
// Initialise once at launch
await TapCub.start(siteKey: 'SITE_KEY');
// Business event: payment
TapCub.track('order_paid', {
'amount': 74, 'currency': 'USD'
});import TapCub from '@tapcub/react-native';
// Initialise once at launch
TapCub.start({ siteKey: 'SITE_KEY' });
// Business event: payment
TapCub.track('order_paid', {
amount: 74, currency: 'USD'
});import TapCub from '@tapcub/uni-app'
// Initialise once at launch
TapCub.start({ siteKey: 'SITE_KEY' })
// Business event: payment
TapCub.track('order_paid', {
amount: 74, currency: 'USD'
})Native, cross-platform and HarmonyOS, side by side in one project
Seven SDKs share one event vocabulary. Each platform gets its own site key; reports can be merged or split by platform.
iOS and Android
Native Swift / Kotlin SDKs with crashes, ANR, launch time and push-source detection.
HarmonyOS
ArkTS SDK for native apps and atomic services, same fields as every other platform.
Flutter, React Native, uni-app
Wrappers for each cross-platform framework — instrument once, both iOS and Android report.
Questions about app analytics
Still have a question?
Chat with the team behind TapCub — we usually reply within a few hours on business days.
How is this different from web analytics?
Web analytics counts pages, sources and visitors. App analytics counts launches, new users, active users, retention, versions, store channels and crashes. Both live in the same project and one user counts once. See web analytics.
Which platforms are supported?
Native SDKs for iOS, Android and HarmonyOS, plus Flutter, React Native and uni-app. One site key per platform; reports merge or split as you like.
What is in the crash report?
Crash rate, ANR rate, cold-start time, crash-free users, and top crashes grouped by version and screen with a stack summary and affected users. Abnormal crash rates within 48 hours of a release trigger an alert.
Can I bring in AppsFlyer or Adjust attribution?
Yes. Install attribution arrives through a postback, so each install carries its channel and campaign, then sits next to D1 / D7 retention and paying rate. TapCub does not replace your attribution platform.
Which plan includes app reports?
Web analytics is on every plan; app and mini-program analytics start on Pro ($9/month). See pricing.
How long is app data kept?
Same as the website: Free 6 months, Pro 12 months, VIP 24 months or more. Enterprise retention is set by contract.
Will the SDK slow down the app?
It adds under 30 ms to launch. Events are batched and compressed in the background, cached locally on poor networks and sent when the connection returns. Crash collection can be disabled on its own.
Four steps to connect your app
Same account and project as your website — no separate sign-up.
-
1
Create a project
Free account, no credit card. If you already have a web project, add the app inside it.
-
2
Add the app
Pick the platform and get its site key.
-
3
Add the SDK
Start it with the code above; add business events as needed.
-
4
Ship a build
Once the build reaches users, launch data appears within minutes.
Read the install guide, or explore the console with demo data first. Install guide