How to measure threaded iOS app performance (Source: Meta Engineering Blog)
-
The premise of Thread iOS app performance standards is to provide the best user experience. To achieve this, the app must be fast and outstanding, and the following performance metrics are selected and used.
-
%FIRE (Frustrating Image-Render Experience): Percentage of frustrating image-rendering experience. If it takes more than 1 second for an image to appear on the screen or if the user leaves without being able to wait, it is considered slow loading. If this ratio is more than 15% of the total images, the problem is considered serious.
-
TTNC (Time-To-Network Content): The time it takes to load a feed after the app is launched. If users have to look at the loading screen or spinner for too long, they close the app. To improve this, we worked to reduce the size of the thread app to 1/4 of the current Instagram size. During development, a warning will appear if the app size is about to increase.
-
cPSR (Creation-Publish Success Rate): The success rate when users try to post text, photos, or videos. In particular, photos and videos have a long upload time and high data usage, so there is a high possibility of failure, and uploads may be interrupted when the app is switched to the background. Various strategies have been introduced to solve this.
-
Save drafts: Don't lose your posts even if the upload fails. Post-introduction, reports of user complaints related to posting decreased by 26%. Users feel very frustrated when they lose posts while trying to upload.
-
Optimistic text posting (Blazing fast text posts): We used to let the backend process all post requests and respond, but now the backend will pop up a toast saying it was posted as soon as it receives the post request. If subsequent processing fails, receive a callback. Once a request is received, the chances of success are very high.
- Navigation latency: Measures the time it takes for content to be rendered when the user moves to a specific screen after starting the app.
-
We conducted boundary testing to see users' reactions by intentionally adding support time when navigating to certain screens, such as profile and activity feed. As a result, iOS users are sensitive to latency, and as latency increases, they read less, post less, and interact less with apps.
-
We have developed and are using a tool called SLATE that automatically measures search latency. Even if developers do not set performance markers, data is automatically collected and performance analyzed as long as common components are used.
-
Uses GraphQL. Effective in reducing network data transfer volume and simplifying new feature development. Testing GraphQL and REST on the follower list screen showed similar performance. This was also verified with SLATE.
- In the future, we will continue to monitor these performance indicators while adding new features to the thread service to ensure that the user experience does not deteriorate.
