Rally is a platform for buying & selling equity shares in collectible assets: from classic cars and memorabilia to NFts and Pokemon cards. Rally acquires rare collectibles and enables individuals to trade shares in them while sharing all key information about the assets their user-friendly mobile platform, including provenance and ownership history, photos and videos, and market prices for comparable assets.

Their iOS app allows users to browse, purchase and manage investments on-the-go. A smooth and fast user experience is crucial in retaining customers, increasing user satisfaction, and driving growth for the platform.

PS Tool enabled Rally’s engineers to see what happens on the code level during real user experience: measure wait time for a user on each priority user flow, and focus on optimisation opportunities on the front-end side of the app separating it from their own backend as well as from time spent on third party vendors such as Plaid

For one of the most important interactions in the app: confirming investment - the final step of converting a user/guest into an investor - Product Science identified as much as 2.5 seconds on average of time that could be saved (45% of total user wait time) on iPhone 12.

Confirming investment – heart of the app

Being one of the most important user flows, confirm investment is highly dependent on the network as transactions need to go through. For this feature, security and reliability comes first and when it comes to performance – it is easy to fall behind. For the user experience, this user flow as well is crucial as it forms the final impression of the product: the user gets confirmation that they  own a share of the asset.

One of the goals that Rally put for themselves is to minimize wait time for the user. In the meanwhile, their front-end engineers were busy delivering new features on schedule. It was a known issue that back-end work of Rally app was rather slow and all the performance optimization resources were pulled that way. That was before Product Science tool came in and revealed that almost 50% of users’ wait time can be saved via front-end changes only and without damaging security and reliability of financial transactions. All this in addition to ongoing back-end work.

What PS Tool Showed

PS Tool revealed to the Rally team what was happening in their app on the code level while the user was waiting for the congratulations screen to appear. Its unique trace-video synchronization feature allows users to see frame-by-frame what was happening in the code at the same time. It also showed the execution path, a sequence of events that led to the last UI change of the user flow and split those of all the other unrelated code that was executed in the background (see Picture 1)

Picture 1     Full execution path for Confirm Investment user flow with the last frame of the user flow on the right side (video panel)
  Product Science Tool has made it so much easier for us to take a look at a call stack and isolate issues that are causing hangs that aren’t enjoyable from user experience.  
    - says Akshay Bharath, lead iOS engineer at Rally.

PS Tool showed that only sections A and B on the screenshot (Picture 1) were requests to the server covering 55% of total user wait time. The rest was front-end work ready for optimization!

Optimization Opportunity - Hard Coded Delays - Low Hanging Fruit in Legacy Code

One of the optimization opportunities that PS Tool highlighted in the Confirm investment flow was a hard coded 1 second delay between two network requests (Picture 2).

Picture 2     1 second delay between a pair of network requests

This is a common case when legacy code contains such delays. Usually they are placeholders for some additional logic and complex conditions: the time that will certainly cover all the necessary conditions to fulfill without causing an error. This is one simple line of a working code and that is why such delays are often overlooked even when logic changes and conditions are no longer relevant. 

In this particular case, removing the delay did not break anything and saved a whole second of user’s wait time “for free”.

Optimization Opportunity - View Updates

The second optimization opportunity that PS Tool revealed regarded view updates leading to the congratulations screen. 

Picture 3      UI-updated after confirm investment was clicked

It is noticeable on video that there are several UI-updates after user clicks confirm investment and after loader stops running. PS Tool shows that all of those updates happened after network requests confirming investment returned with success and added 1.5 seconds of different transition animations (Picture 4)

Picture 4     Transition animation and code executing in the meanwhile

PS Tool showed that transition animations were used to switch from Invest Details View Controller to the Home Tab Bar View Controller. This was done in order for users to see the home screen with more available assets once they click OK and congratulations screen disappears. Rewriting the View logic to enable showing Congrats screen while still revealing the home screen after the user clicks on, saves 1.5 seconds of transition time.

Effortless Results

After code fixes were implemented, the user’s wait time for confirming investment shortened from 5.5 seconds to 3 seconds on iPhone 12 (the most popular iOS device on the market). It took an engineer 2 hours to implement those changes and PS Tool indicated the opportunities automatically. Before employing PS Tool it took hours of research to find such opportunities or weeks of back-end work to get the similar improvement on the server side and now improvement is easy to do and easy to check (Picture 5).

Picture 5     Execution path for Confirm investment user flow after code fixes - no delays, >90% of the user flow time spent on network requests
  PS Tool helps us to understand our codebase on a different level: you can separate up the  threads and see  what’s going on with them; you can see the video, go back if you need; you can see your code  and spot optimization opportunities putting all the guesswork aside. Going though different layers of your codebase in Xcode takes a lot of time while PS Tool provides you with “mantal model” of your code.  
    - says Akshay Bharath, lead iOS engineer at Rally.