Filter data using attributes


With Performance Monitoring, you can use attributes to segment performance data and focus on your app's performance in different real-world scenarios.

After you click a trace name in the traces table (located at the bottom of the Performance dashboard), you can drill down into metrics of interest. Use the Filter button (top-left of the screen) to filter the data by attribute, for example:

an image of <span class=Firebase Performance Monitoring data being filtered by attribute" />

  • Filter by App version to view data about a past release or your latest release
  • Filter by Device to learn how older devices handle your app
  • Filter by Country to make sure your database location isn't affecting a specific region

For even more powerful analysis based on attributes, export your performance data to BigQuery.

Default attributes

Performance Monitoring automatically collects a variety of default attributes depending on the type of trace.

In addition to these default attributes, you can also create custom attributes on your custom code traces to segment data by categories specific to your app. For example, in a game, you can segment data by game level.

Default attributes for Apple and Android apps

All traces for Apple and Android apps collect the following attributes by default:

  • App version
  • Country
  • OS level
  • Device
  • Radio
  • Carrier

In addition, network request traces also collect the following attribute:

  • MIME type

Collecting user data

Create custom attributes

You can create custom attributes on any of your instrumented custom code traces.

Use the Performance Monitoring Trace API (Swift | Obj-C) to add custom attributes to custom code traces.

To use custom attributes, add code to your app that defines the attribute and associates it with a specific custom code trace. You can set the custom attribute anytime between when the trace starts and when the trace stops.

Note the following:

  • Names for custom attributes must meet the following requirements:

    • No leading or trailing whitespace, no leading underscore (_) character
    • No spaces
    • Max length is 32 characters
    • Allowed characters for the name are A-Z, a-z, and _.
  • Each custom code trace can record up to 5 custom attributes.

  • Please ensure that custom attributes do not contain any information that personally identifies an individual to Google.

    Learn more about this guideline

Swift

Note: This Firebase product is not available on macOS, Mac Catalyst, watchOS targets.
let trace = Performance.startTrace(name: "CUSTOM_TRACE_NAME")

trace.setValue("A", forAttribute: "experiment")

// Update scenario.
trace.setValue("B", forAttribute: "experiment")

// Reading scenario.
let experimentValue:String? = trace.valueForAttribute("experiment")

// Delete scenario.
trace.removeAttribute("experiment")

// Read attributes.
let attributes:[String, String] = trace.attributes;

Objective-C

Note: This Firebase product is not available on macOS, Mac Catalyst, watchOS targets.
FIRTrace *trace = [FIRPerformance startTraceWithName:@"CUSTOM_TRACE_NAME"];

[trace setValue:@"A" forAttribute:@"experiment"];

// Update scenario.
[trace setValue:@"B" forAttribute:@"experiment"];

// Reading scenario.
NSString *experimentValue = [trace valueForAttribute:@"experiment"];

// Delete scenario.
[trace removeAttribute:@"experiment"];

// Read attributes.
NSDictionary <NSString *, NSString *> *attributes = [trace attributes];