% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/st_active_users.R
\name{st_active_users}
\alias{st_active_users}
\title{Fetch Active User Metrics with a Tidy Long Output}
\usage{
st_active_users(
  os,
  app_list,
  metrics = c("dau", "wau", "mau"),
  date_range = list(start_date = Sys.Date() - 90, end_date = Sys.Date() - 1),
  countries,
  granularity = "monthly",
  parallel = FALSE,
  verbose = TRUE,
  auth_token = NULL,
  max_cores = 2
)
}
\arguments{
\item{os}{Character. Required. Operating system: `"ios"`, `"android"`, or
`"unified"`.}

\item{app_list}{List or data frame containing app information. Same formats
accepted by [st_batch_metrics()].}

\item{metrics}{Character vector. Active-user metrics to return. Must be one
or more of `"dau"`, `"wau"`, `"mau"`. Default is all three.}

\item{date_range}{List with `start_date` and `end_date`.}

\item{countries}{Character vector of country codes.}

\item{granularity}{Character granularity (`"daily"`, `"weekly"`,
`"monthly"`, `"quarterly"`). Default `"monthly"`.}

\item{parallel}{Logical. Whether to use parallel processing.}

\item{verbose}{Logical. Whether to print progress messages.}

\item{auth_token}{Character string. Sensor Tower API token. Defaults to
`SENSORTOWER_AUTH_TOKEN` environment variable.}

\item{max_cores}{Integer. Maximum cores for parallel processing.}
}
\value{
A tibble with columns including `original_id`, `app_name`, `app_id`,
  `app_id_type`, `date`, `country`, `metric`, and `value`.
}
\description{
Lightweight wrapper around [st_batch_metrics()] focused only on active-user
metrics (`dau`, `wau`, `mau`). Returns a tidy long-format tibble that is
designed for straightforward tidyverse chaining.
}
