Skip to content

Latest commit

 

History

History
49 lines (35 loc) · 6.61 KB

PERFORMANCE_METRICS.md

File metadata and controls

49 lines (35 loc) · 6.61 KB

Performance Metrics

This project tracks various performance metrics to monitor and improve the application's efficiency and user experience.

Tracked Metrics

The following table shows the key performance metrics that are being monitored in the application.

Project is using Firebase for tracking these metrics. However, not all of them are sent there - some of them are only used internally by the Performance module.

Metric name Sent to Firebase Description Start time End time
_app_start The time between when the user opens the app and when the app is responsive.

Platforms: Android
Starts when the app's FirebasePerfProvider ContentProvider completes its onCreate method. Stops when the first activity's onResume() method is called.
js_loaded The time it takes for the JavaScript bundle to load.

Platforms: Android, iOS
Android: Starts in the onCreate method.

iOS: Starts in the AppDelegate's didFinishLaunchingWithOptions method.
Stops at the first render of the app via native module on the JS side.
_app_in_foreground The time when the app is running in the foreground and available to the user.

Platforms: Android, iOS
Android: Starts when the first activity to reach the foreground has its onResume() method called.

iOS: Starts when the application receives the UIApplicationDidBecomeActiveNotification notification.
Android: Stops when the last activity to leave the foreground has its onStop() method called.

iOS: Stops when it receives the UIApplicationWillResignActiveNotification notification.
_app_in_background Time when the app is running in the background.

Platforms: Android, iOS
Android: Starts when the last activity to leave the foreground has its onStop() method called.

iOS: Starts when the application receives the UIApplicationWillResignActiveNotification notification.
Android: Stops when the first activity to reach the foreground has its onResume() method called.

iOS: Stops when it receives the UIApplicationDidBecomeActiveNotification notification.
homepage_initial_render Time taken for the initial render of the app for a logged in user.

Platforms: All
Starts with the first render of the AuthScreens component. Stops once the AuthScreens component is mounted.
sidebar_loaded Time taken for the Sidebar to load.

Platforms: All
Starts when the Sidebar is mounted. Stops when the Splash Screen is hidden.
calc_most_recent_last_modified_action Time taken to find the most recently modified report action or report.

Platforms: All
Starts when the app reconnects to the network Ends when the app reconnects to the network and the most recent report action or report is found.
search_render Time taken to render the Chat Finder page.

Platforms: All
Starts when the Chat Finder icon in LHN is pressed. Stops when the list of available options is rendered for the first time.
load_search_options Time taken to generate the list of options used in Chat Finder.

Platforms: All
Starts when the getSearchOptions function is called. Stops when the list of available options is generated.
search_filter_options Time taken to filter search options in Chat Finder by given search value.

Platforms: All
Starts when user types something in the Chat Finder search input. Stops when the list of filtered options is generated.
trie_initialization Time taken to build the emoji trie.

Platforms: All
Starts when emoji trie begins to build. Stops when emoji trie building is complete.
open_report Time taken to open a report.

Platforms: All
Starts when the row in the LHNOptionsList is pressed. Stops when the ReportActionsList finishes laying out.
switch_report Time taken to open report.

Platforms: All
Starts when the chat in the LHN is pressed. Stops when the ReportActionsList finishes laying out.
open_report_from_preview Time taken to open a report from preview.

(previously switch_report_from_preview)

Platforms: All
Starts when the user presses the Report Preview. Stops when the ReportActionsList finishes laying out.
switch_report_from_preview [REMOVED] Time taken to open a report from preview. Starts when the user presses the Report Preview. Stops when the ReportActionsList finishes laying out.
chat_render Time taken to render the Report screen.

Platforms: All
Starts when the ReportScreen is being rendered for the first time. Stops once the ReportScreen component is mounted.
report_initial_render Time taken to render the Report screen.

Platforms: All
Starts when the first item is rendered in the LHNOptionsList. Stops when the ReportActionsList finishes laying out.
open_report_thread Time taken to open a thread in a report.

Platforms: All
Starts when user presses Report Action Item. Stops when the ReportActionsList finishes laying out.
message_sent Time taken to send a message.

Platforms: All
Starts when the new message is sent. Stops when the message is being rendered in the chat.

Documentation Maintenance

To ensure this documentation remains accurate and useful, please adhere to the following guidelines when updating performance metrics:

  1. New Metrics: When a new metric is introduced in the codebase, add it to the table with all relevant details.

  2. Metric Renaming: If a metric is renamed, update the table entry. Mark the old name as deprecated and include a reference to the new name.

  3. Metric Removal: If a metric is no longer used, don't delete its entry. Instead, mark it as deprecated in the table and provide a brief explanation.

  4. Code Location Changes: If the placement of a metric in the code changes, update the "Start time" and "End time" columns to reflect the new location.

Additional Resources