Skip to content

Manual Annotation for User Flows

In addition to automatically instrumenting your app, the Product Science SDK provides a userflow library that enables manual annotation of user flows in your code. This can be useful for tracking and comparing timing changes between specific events across traces.

The steps to add and use the library are below.


Add the userflow library as a dependency in app/build.gradle

    dependencies {
        implementation "com.productscience.userflow:userflow:0.18.17"

Annotation Process

There are three static methods used to annotate user flows:

  • UserFlow#start
  • UserFlow#custom
  • UserFlow#end

Each of these methods takes a string argument (UserFlow ID) and a nullable String argument (comment message).

Import UserFlow class.

import com.productscience.userflow.v2.UserFlow;

1. Starting a UserFlow

To start a UserFlow, call UserFlow#start and pass it an ID and a String message.

    // ...
    // or
    UserFlow.start("appStart", "Comment message")

2. Annotations UserFlow's milestones

While a UserFlow is in progress, you can make calls to UserFlow#custom passing the UserFlow ID and a String message.

This can be useful to annotate events along the UserFlow (e.g., reaching a milestone or annotating different conditional paths among others).

    UserFlow.custom("appStart", "UserFlow hit a milestone")

3. Ending a UserFlow

To end a UserFlow, call UserFlow#end passing the ID of the UserFlow to end and an optional String message.

    // or
    UserFlow.end("appStart", "One more comment message")


UserFlow Annotations on PSTool

An example of a slice added via the UserFlow Annotations library. The gray flag on the trace is automatically created for events marked by these slices. trace

Sample app

There is a sample app demonstrating the use of the userflow library at:

Project Integration

If you want to enable UserFlow Annotations to be used with Regression Analysis feature, you should enable UserFlow#setRegressionAnalysisEnabled(true).

CAUTION: this method can enable some extra work. You will have to take steps to ensure that regression analysis is disabled in production builds.