- Use the KPI Visualizer
- Measure and understand your app’s key performance metrics
- Set up measurements
- Interpret results
Prerequisites
Before you use the Vega App KPI Visualizer, make sure you:-
Install the Vega Performance API module:
-
Read the following sections:
- What each KPI measures and its target guidelines. See App KPI metrics and guidelines.
- How apps launch in different scenarios. See Launch scenarios.
- When to set performance markers. See Fully drawn marker.
- To measure foreground memory, video fluidity, or UI fluidity, follow the instructions in Measure Fluidity and Foreground Memory.
- Choose your measurement method:
App KPI metrics and guidelines
The following table presents both main KPIs and their associated Micro KPIs. Main KPIs measure overall performance metrics, while Micro KPIs represent specific measurable components that contribute to a main KPI. For example,Application JavaScript bundle load time is a Micro KPI that contributes to the overall time-to-fully-draw (TTFD) KPI. Empty Micro KPI cells indicate that no specific sub-components are currently being measured for that main KPI.
Launch scenarios
The KPI Visualizer measures two types of app launch scenarios to evaluate performance for TTFF and TTFD:- Cool start - When a user launches an app for the first time, and the system loads all resources and dependencies into memory.
- Warm start - When a user moves an app from background (an inactive state) to foreground (an active state) with some resources and dependencies already in memory.
Fully drawn marker
A fully drawn marker signals when your app becomes interactive for users. The marker:- Indicates when your app completes loading its essential components.
- Marks when users can start interacting with your app.
- Helps measure TTFD performance.
- Add the
useReportFullyDrawnhook to your app. - Place markers at these key points:
- Cool start - After loading initial data and rendering the main screen.
- Warm start - When your app becomes responsive after foregrounding.
Measure KPIs in VS Code
Step 1: Open the command palette in VS Code
- For Mac: Shift+Command ⌘+P
- For Linux: Ctrl+Shift+P
Step 2: Add Vega: Launch App KPI Visualizer and press Enter
You can also select the App KPI Visualizer from the Vega Studio panel.
Step 3: Select a use case
To measure foreground memory and video streaming fluidity, create a custom test scenario that match how your users interacts with your app.
For example:
- For memory testing - Include video playback or image loading.
- For streaming - Include typical video watching patterns.
Cool start KPIs
- Launch the test app on the device.
- Wait for 10 seconds for the test app to completely load.
- Close the test app.
- Process the KPIs.
Warm start KPIs
- Launch the test app on the device.
- Launch another app on the device, moving the test app to the background.
- Launch the test app, moving it to foreground.
- Wait for 15 s for the test app to completely load.
- Close the test app.
- Process the KPIs.
Foreground memory KPIs
- Launch the test app on the device.
- Perform the specified steps in test scenario, and capture the KPIs for analysis and reporting.
- Close the test app.
- Process the KPIs.
Background memory KPIs
- Launch the test app on the device.
- Launch another app on device, moving the test app to the background.
- Wait for 15 s to collect the KPIs of the test app.
- Close the test app.
- Process the KPIs.
UI fluidity KPIs
- Launch the test app on the device.
-
Choose your test method:
- Custom test - Use your own UI interaction scenarios
- Default test - Uses standard scrolling patterns
- 2 sets of horizontal scrolls (5 left, 5 right)
- 2 sets of vertical scrolls (5 down, 5 up)
- 900 ms between actions
-
Select the Cancel button or Esc key to end the test.
- Capture the KPIs for analysis and reporting.
- Close the test app.
- Process the KPIs.
Video playback fluidity KPIs
- Launch the test app on the device.
- Perform the steps in video playback test scenario, and capture the KPIs for analysis and reporting.
- Close the test app.
- Process the KPIs.
Step 4: Choose whether to ignore trace loss during the test
When your app has performance issues, significant trace loss can occur. The Vega App KPI Visualizer won’t load traces and shows no KPIs (appear as N/A) in the report.
You can choose to ignore trace losses when generating KPI reports to view the metrics. However, ignoring trace losses produces KPI values that appear better than actual performance.
Step 5: View KPI scores in the visualizer window
The window shows the P90 (90th percentile) value calculated from three test iterations.Step 6: Assess results
To assess the results, see Understand the performance report.Measure KPIs with CLI commands
-
At the command prompt, run the
vega exec perf doctorcommand to check if your host and target devices are ready.Replace--app-namewith the package ID from themanifest.tomlfile. If multiple devices are running (including Vega Virtual Device), specify the device serial number in the perf commands using the--device-serial-numberparameter. Example if only single device is connected:Example if multiple devices are connected: -
Start the Vega App KPI Visualizer:
For kpi-visualizer,
app-nameis the only required parameter. Replace[app-name]with the id of default interactive component from themanifest.tomlfile. -
(Optional) Specify the default number of iterations. Default iterations: 3 or 30 if –certification is used.
-
(Optional) Specify which KPI to measure:
Without this parameter, the visualizer measures cool start TTFF and TTFD KPIs by default.
-
View all available options:
Example:
stdout.
Example report:
Understand the performance report
The Vega App KPI Visualizer shows a performance report, which includes:-
Test information
- Date - The date when the system captures the KPI data.
- Device Serial ID - The unique identifier of the device running the app.
- App - The name of the app for which the KPI data appears.
- Number of iterations - The number of times the KPI measurement process runs.
- KPI Name - The name of the KPI with its unit.
- Test Name - The name of the test or the completed use case.
-
KPI Health - A color-coded system representing the health of each KPI:
- 🟢 (Green) - Meets the recommended guideline.
- 🟡 (Yellow)- Within 10% of the guideline.
- 🔴 (Red) - Exceeds the guideline by more than 10%.
- KPI Score - The numeric value of the KPI, which appears in the same unit as specified in the KPI name. If the visualizer can’t calculate the KPIs, it displays “N/A” for the KPI score and list the KPI Health as “Unknown.”
- Guideline - The recommended value or range for the KPI score based on industry standards or performance targets.
Example results
The following images show sample results for each use case. Pay attention to the KPI Health indicators and scores relative to guidelines.Use case: Cool start TTFF and TTFD
The following result shows launch performance metrics. Red indicators show the app exceeds the launch time guidelines.
Use case: Warm start TTFF and TTFD
The following results shows how your app resumes from background state. Compare TTFF and TTFD times to evaluate optimization needs.
Use case: Foreground memory
Shows your app’s memory usage during active use. Monitor this metric to prevent performance issues from excessive memory consumption.
Use case: Background memory
Shows your app’s memory footprint while in background state. Important for understanding your app’s impact on system resources when inactive.
Use case: UI fluidity
Shows how smoothly your app handles user interactions. The percentage indicates frames successfully rendered during scrolling and navigation.
Use case: Video playback fluidity
Shows how smoothly your app plays video content. The percentage represents successful frame delivery at the intended playback rate. This scenario also includes media player and input event micro KPIs.
Open a KPI report
After the Vega App KPI Visualizer completes the test scenarios, it generates the following report files:- aggregated-kpi-report-[timestamp].json - Consolidates KPI data from all test scenarios.
- [test-name]-kpi-report-[timestamp].json - Creates one file for each individual test scenario. The [test-name] identifies the specific scenario.
Option 1 (Preferred): Use Quick Open
This method provides access to your recordings through VS Code’s interface or CLI.From VS Code
- Find the KPI report file (example:
app-launch-kpi-report-[timestamp].json) using VS Code Quick Open or in the project’sgenerateddirectory. - Select the file once to preview or twice to open in active mode.
From the CLI
-
Open a terminal window and enter:
If your terminal doesn’t recognize the code command, open the VS Code Command Palette:
- Mac: Cmd+Shift+P
- Linux: Ctrl+Shift+P
- Run “Shell Command: Install code command in PATH”.
- Retry the command.
Option 2: Use the VS Code Command Palette
This method provides access to your recording using VS Code’s built-in command interface or if Quick Open isn’t available.- Open VS Code.
-
Open the command palette:
- Mac: Cmd+Shift+P
- Linux: Ctrl+Shift+P
- Enter Vega: Open Recording View.
-
Select the file you want to open, such as
app-launch-kpi-report-[timestamp].json.
Related topics
- ▶️ Improve App Performance on Vega
- Measure Fluidity and Foreground Memory
- Identify UI Rendering Issues
- Monitor CPU Usage
- Monitor and Record Memory
- Detect Overdraw

