HeadSpin Proposes Speed Optimizations as Preventive  Measure for Kaiser Permanente


Overview and Methodology For Our Analysis




iPhone 8 / Verizon / San Francisco

iPhone 8 / Wi-Fi / Miami

Products Used:

HeadSpin Connected Intelligence Platform



  • Launch time impacted by slow backends 
  • Optimize connection reuse
  • Review loading animation
  • Dynatrace consumes too much CPU resources
  • HeadSpin analyzed the latest version of the Kaiser Permanente iOS app on a real iPhone 8 in San Francisco, on the Verizon network and in Miami, on WiFi.
  • NO SDK, code change or instrumentation was needed to run the remote performance sessions.
  • HeadSpin’s AI engine sifted through network traffic, client-side metrics, and videos of the test execution to find areas of poor user experience and performance bottlenecks.
  • Recommendations were provided for every issue that was surfaced.

User Reviews

HeadSpin looked at Kaiser Permanente’s reviews in the App Store and found many users struggling with functional issues and technical errors.

Kaiser’s ratings is currently 3.1/5 on the App Store.

Server Side Insights and Recommendations

HeadSpin’s proprietary AI technology analyzes and prioritizes the core issues impacting critical user journeys. Using computer vision techniques to quantify blank screens, time to interact, loading time, loading or buffering animations, and content quality, our AI models can automatically diagnose server-side issues whether they arise from infrastructure deployment issues, poor performance, or API errors. For a custom analysis of your app, request a Performance Insight report from HeadSpin. 

HeadSpin Performance Session on Verizon, San Francisco (link)

Launch Time

The launch time was 7.2 seconds for the app. 


The launch time is impacted by Slow backends as below:

Can the BEACON backend calls to Dynatrace backend be backgrounded? Example

The other API call that takes too long is this.

The developer will need look into the backend for the cause of this slowdown. 

Connection Reuse

There were 12 instances of new TCP connections created instead of reusing existing ones.

HEADSPIN RECOMMENDATIONConsider organizing your connections into a few large buckets, versus many small buckets. Since every connection to your server keeps the device radio on, it’s crucial to minimize the connections that occur to preserve the battery consumption and cellular data used.

Loading Animation

The orange bars represent periods in the session where the app was displaying loading animations. It took 9.941 seconds after clicking the “register” button for any content to be displayed, and the animation persisted for 2.528 seconds after that. After hitting continue, it took 9.596 seconds for the content to load. 

The user spent an additional 22 seconds waiting for loading animations just to get to the second screen of the registration page.

A large part of this slowdown is due to HOST:

Here is the breakdown of the host requests:

HeadSpin Performance Session on WiFi, Miami (link)

Launch Time

The app took 5.04 seconds to launch 

Slow TLS

The purple bars represent slow TLS handshakes. There were 5 instances of slow TLS connections to Kaiser’s hosts, which resulted in a 4.272 second wait time to the user. The long launch time could be attributed to some of these slow connections.


HEADSPIN RECOMMENDATIONThis device was in Miami, and made a request to a server in Walnut Creek, California. If possible, consider serving content to users from servers located closer to them. Also, determine if these hosts are passing back sensitive data. If they aren’t, consider making the requests over HTTP instead of HTTPS.

Client Side Profiling & Recommendations

Using our Client side profiler, companies can monitor every critical user flow for every build of your mobile app. Pinpoint issues that degrade user experience early in the dev cycle Seamlessly integrate with your CI workflow.

Results of the test execution

Here we profiled the cold startup of the app and found that it took ~ 4.87 seconds to start the app.

Here is what we found:

1. On the UI thread the connection with okhttp3 is taking some time – and is blocking the UI thread, so the app hangs for about half second:

2. In the full call stack we see that Dynatrace is consuming a lot of CPU resources relative to total CPU consumption by all parts of the app:

3. We can see that the response from Dynatrace init ends up calling getResourceAsStream which is very slow on Android.

Here’s a blog post explaining why that is and what can be done instead to get better performance: Why Is ClassLoader.getResourceAsStream So Slow in Android?


How to Work With HeadSpin

HeadSpin Powers Flawless Mobile App Performance

HeadSpin’s state-of-the-art Digital Experience Intelligence Platform™ will empower your engineering teams to:

  • Execute automation tests on real carrier-enabled devices worldwide
  • Discover performance bottlenecks
  • Collect and visualize your performance data
  • Seamlessly integrate with your CI/CD workflow
  • Monitor every critical user flow of your mobile experience
  • Pinpoint issues that cause performance regressions and impact user experience earlier in your development cycle
Overarching Areas of Opportunities

  • Launch new features confidently by monitoring and analyzing root causes of performance issues throughout the development life cycle
  • Drive new user installs and user engagement with optimized performance
  • Forge user trust and safety, accelerating consumer services for critical user paths across your apps and website
  • Benchmark KPIs for mobile performance to understand how your user experience for your mobile app and website compares to your peers in the same industry
  • Support localized testing across 32,000+ devices and 160+ countries around the world, on real devices under real-world conditions
Expert Holistic Consultation and Strategy 

HeadSpin has the product and solutions expertise to help you perfect the digital experience for your customers! Our team hails from digital pioneers, such as Google and Facebook, and has already delivered enhanced mobile-centric experiences for a diverse set of Fortune 1000 clients. HeadSpin’s strategic insights can help you:

  • Drive new user acquisition, user engagement, and feature adoption
  • Deploy app security measures on iOS and Android
  • Build consistent performance standards and experiences across all your mobile apps and websites 

... insight from HeadSpin helps us prioritize issues so we could deliver a better user experience.

Maria Zhang, CTO, Tinder