Skip to content

Commit 343f111

Browse files
committed
Migration from the draft our design doc
1 parent e3c01e6 commit 343f111

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

docs/ex_perfomance_metrics.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# EX Performance metrics
2+
3+
| Status | Last updated |
4+
|--|--|
5+
| In progress | December 3, 2025 |
6+
7+
<hr />
8+
9+
## Objective
10+
Crashes are already tracked on Sentry. Performance metrics are also useful health metrics to check. This can be tracked by Sentry too.
11+
12+
This document specifies what metrics we track and how we measure them. It has a focus on EX but it could be extended (and renamed) to track any matrix client app performance.
13+
14+
## UX metrics
15+
16+
17+
| Title | Android name / Description | What it is measuring | Initial and final conditions | Tech metrics | Notes |
18+
| :---- | :---- | :---- | :---- | :---- | :---- |
19+
| Cold start time | Cold start until cached room list is displayed | How long it takes from launching the app to displaying cached data on the screen | From:<ul><li>The user is already connected</li><li>The app is not running in background User taps on the app icon</li></ul> To:<ul><li>The room list is fully loaded from the permanent cached and displayed to the end user | <ul><li>First rooms displayed after login or restoration (TBD) </li></ul> | It does not consider Sentry init time and the check that the user has consented from disk. |
20+
| Catch-up | Room list says it is resumed and running | How long until the room list is up-to-date | From:<ul><li>The app was inactive in background and get debackgrounded</li><li>Or the app just finished its cold start</li></ul> To:<ul><li>The room list service turns into `Running` No more Syncing spinner | | The expected final conditions should be:<ul><li>The room list is updated</li><li>Properly sorted</li><li>Last messages are up-to-date</li></ul> But we need more work to get it |
21+
| Notification to message | A notification was tapped and it opened a timeline | How long it takes from taping the notification to the message becoming visible in the app | From:<ul><li>The app is in background or active The user taps on a notification</li></ul> To:<ul><li>The message is visible in the timeline The timeline around this message is fully loaded | | |
22+
| Open a room | Open a room and see loaded items in the timeline | How long it takes from tapping a room in the room list to displaying a full page of messages | From:<ul><li>User taps a room from the room list</li></ul> To:<ul><li>The timeline is fully loaded with first items loaded | <ul><li>Get and display first timeline items</li></ul> | |
23+
| Send a message | ? | How long it takes from tapping send to the message appearing in the timeline as sent | From:<ul><li>User hits the send button</li></ul> To:<ul><li>The timeline shows it as sent | | Needs to be tested for validation |
24+
25+
26+
## Additional data
27+
28+
We need to add some data to the metrics so that we can better characterise them:
29+
30+
| Data | Why it is useful | Notes |
31+
| :---- | :---- | :---- |
32+
| Device information | <ul><li>It helps to detect specific device problem, especially on the fragmented Android ecosystem</li></ul> | It is provided by Sentry. No additional work |
33+
| Homeserver URL hash | <ul><li>To compare matrix.org and element.io homeservers speeds</li><li>Measure the impact of a slow server</li></ul> | We use SHA-512 for the hash |
34+
| DBs file size | <ul><li>Check the impact of growing DB on speed performance</li><li>Check disk space used by the app</li></ul> | We have 4 DBs: state, event, media, crypto |
35+
| Account size | <ul><li>Check the impact on speed performance</li><li>Check the impact on \`/sync\` response size</li></ul> | It should be part of a new stats FFI API |
36+
| First /sync response size | <ul><li>Check it stays as small as possible</li></ul> | It should be part of a new stats FFI API |

0 commit comments

Comments
 (0)