For the complete documentation index, see llms.txt. This page is also available as Markdown.

App Groups

An App Group is a named set of apps that Appetize installs together on the same device, in one session.

Normally a session runs one build. A group runs up to ten, side by side on the same device, sharing the same state, so the apps can hand off to each other.

When to use one

  • A companion app alongside the app under test. A small internal app that mints a token, seeds data or switches environment, next to the real app. This is the usual way to do impersonation without building the feature into your production app.

  • App-to-app flows. Deep links, OAuth handoffs, share sheets, "open in": anything where the interesting behaviour is one app calling another.

  • A suite in one demo. Several products from the same family on one device, so a prospect or a new hire can move between them without restarting a session.

  • A main app plus a debug tool. A log viewer, a mock server UI or a QA harness that has to be on the device with the app, not beside it in a browser tab.

If your apps never talk to each other, you do not need a group. Run separate sessions.

How a group works

A group stores a query per app rather than a fixed list of builds: an app, and optionally which build of it. Appetize resolves those queries each time a session starts, so a group left on Latest Build keeps picking up new uploads without anyone editing it.

Four things follow from that:

  • A group is one platform, fixed when you create it. Cover both platforms with two groups.

  • Sessions take longer to start, because every app is installed first.

  • If a query stops matching, that app is skipped and the session still starts without it.

  • The session timeout is the longest timeout among the group's builds.

What launches

This surprises people, because a group holding a single app does auto-launch it. Set launchApp to pick a starting app:

launchApp takes an app id; on Android it also accepts packageName/activityName. launchApp=false suppresses launching entirely. From the JavaScript SDK you can also launch at any point during the session with session.launchApp('com.example.myapp').

On iOS, a launchUrl is opened once the session is up and the OS picks the app that handles it. This is the case groups are best at.

On Android, a launchUrl goes to whichever app finished installing first, which is not necessarily the first app in your group. Pin it by passing launchApp alongside the URL.

Using a group

A group has an id of the form ag_…, shown as Group ID on the group's page. It works anywhere a build id works: an app link, an embed, a share link, the JavaScript SDK buildId, and the CLI:

Groups are created and edited in the dashboard or through the v2 API (/v2/app-groups); the v1 API can read a group but not change one.

Next steps

Last updated