View
45
Download
3
Category
Preview:
Citation preview
Proprietary + Confidential
App performance reportPowered by HeadSpin
Airbnb
Proprietary + Confidential
Device class BudgetMoto E2 like OS version: 5
New YorkAT&T<$250
Mid RangeLG Nexus 5x likeOS version: 7.1
Mountain ViewAT&T$250 - $500
High EndSamsung S8 likeOS version: 7.5
New YorkSprint$500+
Market share XX% XX% XX% HeadSpin Console
We tested your app by executing 10 iterations on key devices and operators
Proprietary + ConfidentialProprietary + Confidential
App Startup
Proprietary + ConfidentialProprietary + ConfidentialYour app takes ~16s before a user can interact (TTI)
Low end Mid Tier High end
Slowest API
https://api.airbnb.com/v2/logins?client_id=3092nxybyb0otqw18e8nh5nty&locale=en-US¤cy=USD
Slowest Download
https://a0.muscache.com/pictures/f759fb5d-0fd7-4f80-b1a2-23a1915298f4.jpg
Fixing these issues could improve your TTI by 2,600 ms
Client side
View in HeadSpin Console
Proprietary + ConfidentialProprietary + ConfidentialYour app takes ~16s before a user can interact (TTI)
Low end Mid Tier High end
Eliminate the serial loading of FB SDK to save 5.3 seconds of TTI.
Load FB SDK in parallel and then show the FB login screen later with other login options.
This is with a user that has no FB account
Fixing these issues could improve your TTI by 2,600 ms
Client side
View in HeadSpin Console
Proprietary + ConfidentialProprietary + ConfidentialHow Airbnb compares to peers on Time To InteractClient side
Rank App TTI
1 Trip (Gogobot) 2,900
2 TripAdvisor 3,200
3 Vacationrentals 4,530
4 Booking.com 8,000
5 Priceline 9,060
6 Hotels.com 9,420
7 Expedia 16,000
8 Airbnb 16,280
9 HotelTonight 19,680
Rank App TTI
1 Trip (Gogobot) 1,160
2 Vacationrentals 1,750
3 Priceline 3,200
4 Airbnb 3,500
5 TripAdvisor 4,800
6 Booking.com 6,600
7 Hotels.com 6,840
8 Expedia 9,100
9 HotelTonight 13,520
Rank App TTI
1 Trip (Gogobot) 800
2 Vacationrentals 800
3 Booking.com 2,600
4 Priceline 3,200
5 Airbnb 3,800
6 TripAdvisor 4,250
7 Hotels.com 6,140
8 Expedia 7,300
9 HotelTonight 14,040
Budget Mid Range High End
Focus on improving performance on budget and mid range devices (80% market share)
Proprietary + ConfidentialProprietary + ConfidentialYour app takes 3.7s for a cold startup 1.2 higher than the max recommended time
Top issues causing slowdowns
UI Blocked Method
478 ms ExopackageApplication.onCreate
416 ms LoginLandingFragment.onCreateView
Hung CPU methodsHung methods make the UI lag and become unresponsive to the user for longer than 32ms. Methods reported here are doing so because they are using the CPU during this time.
Hot methodsA hot method takes more than 100ms of total app CPU time to execute all its calls.
Total CPU Time
Calls Method
661 ms 1164 I18nModule.fieldNameToString
DependenciesSometimes dependencies you include in your app may affect performance. Below are the ones that are significantly impacting performance.
CPU Time SDK Name
638 ms Threat Metrix
Client side server
View in HeadSpin Console
Proprietary + ConfidentialProprietary + Confidential
App Login Time
Proprietary + ConfidentialProprietary + Confidential
Optimize Slow App Login Time
App Login time is ~ 32 seconds! This is due to several factors:
1. Several Slow Airbnb API Requestsa. Example 1 has ~ 2 seconds of Time to First Byteb. Example 2 has ~ 780 ms of Time to First Bytec. Multiple requests to API each with Time to First Byte of ~ 600msd. Fixing these will save ~ 3.5 seconds
2. Slow Googleapis.com and GoogleAdServices.com API requestsa. These 8 API calls made during login flow adding 12 seconds of delay
3. Multiple CDN Calls (muscache.com) adds ~ 4 seconds
Proprietary + ConfidentialProprietary + Confidential
APK size
Proprietary + ConfidentialProprietary + Confidential
Reducing your apk size increases the likelihood users will immediately open your app
Given your app is 82.86 Mb, users on..
.. WiFi (5 Mbps) will wait 121.6
.. 3G (1.6 Mbps) will wait 251.4
.. 2G (150 Kbps) will wait +8 minutes (timed out)
Case study published on Medium showed every 6 MB increase to an APK’s size decreases install conversion by 1%.
Proprietary + ConfidentialProprietary + Confidential
You can reduce your APK size from 82.86 MB to 21.85 MB
82.86
Current APK size
21.85
*Estimated APK size
24.89
35.01
1.11
Optimize config files
Proguard
Images to webp
You can benefit from a smaller apk size by publishing your app with App bundles
More tips on reducing your reducing your APK size
Large files (>0.10 MB):classes.dex (2.69 MB)classes2.dex (2.56 MB)resources.arsc (2.35 MB)res/drawable-xxhdpi-v4/loading_background.jpg (0.75 MB)com/jumio/nv/mrz/environment/mrz_mobile/dictionaries/surname (0.57 MB)res/raw/livenessmodel (0.46 MB)res/raw/model (0.46 MB)META-INF/CERT.SF (0.35 MB)META-INF/MANIFEST.MF (0.35 MB)res/raw/idcardmodel (0.24 MB)res/drawable-land-nodpi-v4/empty_messages.jpg (0.21 MB)res/drawable-nodpi-v4/deposit_message_modal.jpg (0.21 MB)res/drawable-xxhdpi-v4/n2_lux_background_gradient.png (0.19 MB)res/drawable-land-nodpi-v4/whyhost1.jpg (0.18 MB)res/drawable-nodpi-v4/group_payment_message_modal.jpg (0.17 MB)res/drawable-land-nodpi-v4/whyhost3.jpg (0.17 MB)res/drawable-land-nodpi-v4/whyhost4.jpg (0.16 MB)res/drawable-nodpi-v4/whyhost1.jpg (0.16 MB)res/drawable-land-nodpi-v4/whyhost2.jpg (0.15 MB)res/drawable-nodpi-v4/whyhost2.jpg (0.15 MB)res/drawable-nodpi-v4/empty_messages.jpg (0.15 MB)res/drawable-nodpi-v4/whyhost4.jpg (0.13 MB)res/drawable-nodpi-v4/whyhost3.jpg (0.11 MB)assets/drawable-mdpi/apps_cityhostsguest_images_nuxhomes.jpg (0.1 MB)
*Please note that these numbers are just estimates, as we do not have access to your codebase.
Proprietary + ConfidentialProprietary + Confidential
AirBNB Method Count is 460,453 > 65,536 limit
Proprietary + ConfidentialProprietary + Confidential
Battery usage
Proprietary + ConfidentialProprietary + Confidential
Merge network requests to reduce radio wakeups
Off
Dormant
Send
Snd/Rcv Requests that your app makes to the network are a major cause of battery drain because they turn on the power-hungry mobile or Wi-Fi radios.
To make your app more battery efficient, we recommend you merge multiple network requests into fewer ones where it makes sense to limit turning on the radio periodically.
AirBNB.com app consumed 4% battery power over 10 mins of use with min screen brightness when tested on a Samsung S8.
Proprietary + ConfidentialProprietary + Confidential
Merge network requests to reduce radio wakeups
Third Party SDK like branch keeps radio awake. Try to merge these API and CDN calls
Third Party SDK like branch keeps radio awake. Merge these API and CDN calls.
Examples: Request 1 and Request 2 can be potentially merged.
Convert JPEG to WEBP for faster downloads.
Reuse CDN connections to prevent new TCP/TLS connections from waking up Radio. About 33% of CDN connections are new.
Proprietary + ConfidentialProprietary + Confidential
Progressive loading
Proprietary + ConfidentialProprietary + Confidential
We recommend using Volley to handle your Http requests. You can use it in addition to Okhttp.Volley offers the following benefits:
● Automatic scheduling of network requests.
● Multiple concurrent network connections.
● Transparent disk and memory response caching with standard HTTP cache coherence.
● Support for request prioritization.
● Cancellation request API. You can cancel a single request, or you can set blocks or scopes of requests to cancel.
● Ease of customization, for example, for retry and backoff.
● Strong ordering that makes it easy to correctly populate your UI with data fetched asynchronously from the network.
Images take 3-4s to load as you scrollYour code indicates you are using Glide to load images. Some image downloads are duplicated. One such Example, where an image is downloaded 4 times. This added an extra 1 second and additional 50KB download.
Proprietary + ConfidentialProprietary + Confidential
Search Execution Time
Proprietary + ConfidentialProprietary + Confidential
Search is fastest on AirBNB app in the Category
Budget Mid Range High end
View in HeadSpin Console
Proprietary + ConfidentialProprietary + Confidential
Time to make a Reservation
Proprietary + ConfidentialProprietary + ConfidentialHow AirBnB compares to peers on Time To Book
Rank App Time to Book
1 Vacation Rentals 3,700
2 Priceline 4,000
3 HotelTonight 6,800
4 Hotels.com 7,000
5 Trip (Gogobot) 7,000
6 Expedia 10,000
7 TripAdvisor 20,000
8 Booking.com 21,000
9 AirBNB 24,000
Rank App Time to Book
1 Priceline 3,000
2 TripAdvisor 3,000
3 Vacation Rentals 3,100
4 Hotels.com 4,000
5 HotelTonight 5,000
6 Trip (Gogobot) 6,000
7 Expedia 9,000
8 Booking.com 14,000
9 AirBNB 21,000
Rank App Time to Book
1 Priceline 3,500
2 Vacation Rentals 3,600
3 Hotels.com 6,000
4 HotelTonight 6,400
5 Expedia 8,000
6 Trip (Gogobot) 8,000
7 TripAdvisor 12,000
8 Booking.com 16,000
9 AirBNB 23,000
Budget Mid Range High End
Focus on improving performance on budget and mid range devices (80% market share)
Proprietary + ConfidentialProprietary + Confidential
Your app take ~ 20-24s to a make a reservation
AirBNB.com (24s ) Expedia (10s ) Hotel Tonight (6.8s )
Proprietary + ConfidentialProprietary + Confidential
Slow API Calls during Booking flow
Https POST to this request is ~ 4.7 seconds consistently. Fixing this will save significant time during reservation.
Client side slowness also making an impact on the booking time. This will need further debugging
Proprietary + ConfidentialProprietary + Confidential
Slow Third Party Calls
Proprietary + ConfidentialProprietary + Confidential
Several Third Party Calls are slow impacting UX
1. Google Calendar API is slowa. Average Time to First Byte is ~ 600msb. Examples - Request 1, Request 2, Request 3, Request 4 take > 1 second to
respondc. Consider merging these requests to save up to 4 seconds!
2. Branch.io makes an API request 10 times!a. Fixing this issue will save on the number of extra requestsb. Either merge or don’t make these requests
Proprietary + ConfidentialProprietary + Confidential
Recommendation Summary
Proprietary + Confidential
Summary of Recommendations1. Asynchronously load the FB SDK to boost the Time to Interact.2. Fixing Hot methods will speed up App startup time3. Eliminate or optimize Third party SDK usage. Examples include Third party calls to
GoogleAPI.com and Branch.com 4. The APK is large sized causing slow download/install time on Budget/Mid-Range phones and
on operators5. Using Volley will speed up the progressive loading of images6. Power consumption of the app can be significantly reduced by
a. Optimizing Third Party SDK callsb. Merging API requestsc. Merging CDN Requestsd. Converting the JPEGs to WEBPse. Reusing CDN TCP/TLS Connections
7. Boost App login time by optimizing calls to Google API8. Boost App booking time by optimizing the following:
a. Google Calendar API callsb. One Airbnb specific Https POST call that always consumes ~ 4.7 seconds
Proprietary + ConfidentialProprietary + Confidential
HeadSpin Console
Proprietary + ConfidentialProprietary + ConfidentialClient-Server AI based issue detection
Proprietary + ConfidentialProprietary + ConfidentialClient-Server AI based issue detection
Proprietary + ConfidentialProprietary + ConfidentialClient Side AI based issue detection
Proprietary + ConfidentialProprietary + Confidential
Thank you!
You can test your app on >20k devices and 150+ locations using headspin.io
Recommended