Page MenuHomePhabricator

DE3 - DAU on mobile apps
Open, HighPublic

Description

Datasource

app_open events will be written to event.product_metrics_app_base when T423720 and T423721 are finished
Need to migrate / integrate with existing data in @SNowick_WMF's tables (see datasets in dashboard)

Definition

User: uniquely identified by app install id in imported events (see above)
App Open: anytime the screen of the app is in the foreground of the user's device (not backgrounded or displayed as a secondary widget - see tasks mentioned above for details).
DAU: Daily active user count. How many unique Users send the "app open" event on a given day?

Metric: Compute DAU at the end of each day, UTC time

NOTE: if it can be delivered later in the day, that's better for sustainability, see T384166 (for this metric it seems like it's not a problem to delay the metric results)

Baseline

1.85M (March 31 2026) Android source iOS source

Target

4.52M (245% increase) by July 2027

Details

Related Changes in GitLab:
TitleReferenceAuthorSource BranchDest Branch
Reorganize Tiger Team metrics and add modelsrepos/data-engineering/dbt-jobs!56milimetricadd-de3-daily-active-usersmain
Customize query in GitLab

Event Timeline

Milimetric renamed this task from DE3 DAU on mobile apps to DE3 - DAU on mobile apps.Apr 28 2026, 6:14 PM
Ahoelzl triaged this task as High priority.
Ahoelzl moved this task from Start to In Progress on the Metrics-Sprint-2026-2027 board.

This is a very basic daily DAU query for when the event.product_metrics_app_base app_open event instrumentation is distributed to app users - I will need to fine tune when we have data coming in - with DAU/MAU and Retention metrics we need to eliminate users with malformed/bad device dates since they can throw off our counts, as well as specifying Production app version data from Android.

iOS Release: 8.0.1 (6042) Submitted to App Store, waiting for review 2026-05-07
Android Release: TBD

SELECT
  DATE(from_iso8601_timestamp(dt)) AS "date",
  COUNT(DISTINCT CASE WHEN agent.client_platform = 'android' AND REGEXP_LIKE(agent.app_version_name,'-r-')  THEN agent.app_install_id END) AS android_n_uniques,
  COUNT(DISTINCT CASE WHEN agent.client_platform = 'ios' THEN agent.app_install_id END) AS ios_n_uniques
FROM event.product_metrics_app_base
WHERE YEAR = 2026 AND MONTH >= 05 AND DAY >= 1
  AND instrument_name = 'apps-open'
  AND action = 'app_open'
  AND agent.client_platform IN ('android', 'ios')
  AND DATE(from_iso8601_timestamp(dt)) < current_date
GROUP BY DATE(from_iso8601_timestamp(dt))
ORDER BY 1

need to eliminate users with malformed/bad device dates since they can throw off our counts

This happens a lot, but usually we rely on meta.dt instead of dt which sidesteps issues with people's time settings. Is that possible here? Like are app teams sending this event relatively quickly after they would've triggered. If so, we can just depend on the meta.dt set by EventGate at intake. Otherwise, can the app teams just set dt to their best approximation? If it's a lot of users that would get filtered out, I'd just worry we're throwing out otherwise good data (people with bad time settings are just a weird "normal" thing on the internet).

Thanks @Milimetric, agreed we can switch to using meta.dt in all queries going forward. For DAU/MAU it should help to eliminate the bad device dates.

@Milimetric @SNowick_WMF,
Can we call this metric "Daily Readers on apps" to parallel "Weekly logged-in Readers on web"
A less wordy solution could alternatively be "Daily app Readers" and "Weekly logged-in web Readers"