From inception to design, so much creativity and hard work goes into building and scaling a mobile app. Unfortunately, there is one common issue that has the potential to continuously derail the entire process: slow, bloated startup times.
What makes this issue so frustrating is that it turns users away before they even get the chance to appreciate what your app has to offer. It’s a terrible shame to see so many mobile apps debut to poor ratings simply because users never make it past the splash screen. After all, you want to be evaluated based on actual, and not attempted, interactions with your mobile app.
Luckily, there are actions you can take to optimize your mobile app’s startup time. In this post we’ll take a brief look at why this issue is so important, touch on different ways to improve your startup times, and discuss why acquiring the right tools is critical for optimizing startup time.
A quick note for those working in Android – we have an on-demand webinar where we show how you can go immediately from a 1-star Google Play Store review to knowing the impact of the issue on your users and business!
Why Startup Time Matters
First of all, you probably didn’t design a sluggish app on purpose, and the reason is that you want your users to have a positive, seamless experience with your product at every turn. But mobile users are demanding, and they don’t just want startup times that merely aren’t slow, they want startup times that are fast. In fact, the ideal startup time for a successful mobile app is less than two seconds.
And mobile apps are becoming more profitable all the time. It was reported that in the first half of 2020, app revenue from the App Store and Google Play was $50.1 billion, up 23.4 percent from the same point the previous year. Consumers already prefer shopping on their phones instead of their desktops, and higher average cart values tell us that they’re frequently spending more money on mobile devices as well. It’s no surprise that businesses around the world are increasingly investing more resources into their mobile offerings.
But the mobile space is just as competitive as it is profitable. Because multiple apps with similar functions exist in almost every industry, consumers aren’t likely to tolerate performance issues of any kind, and are even less likely to tolerate an issue as immediate as a bloated startup time. Currently, as many as 60% of users will abandon an app completely after experiencing a single performance error, leaving businesses almost no wiggle room when it comes to technical difficulties. The truth is, consumers are wildly unforgiving, but as the saying goes, they're always right.
Problems and Solutions
At Embrace, our partners encounter problems with startup times every day, and our experience as well as our platform make us uniquely suited to identify startup problems and improve mobile application performance. Here are some common issues we see and how they might be addressed.
Bad and Unnecessary SDKs
SDKs are a godsend for their versatility and ability to provide measuring, monitoring, and out of the box functionality that’s necessary but undifferentiated. However, they’re also frequently responsible for slowing down startup times. Unfortunately, a lot of bad SDKs are produced by third-parties, and it can be hard to identify the issues they cause when your team lacks visibility into how their code operates. Without your knowledge, errors produced by the poor quality of third-party SDKs can easily lead to lag in your startup time. A few examples include SDKs that fire excessive, failing, or blocking network calls that ultimately result in connection errors, timeouts, freezes, and slowdowns on the device.
It’s important to audit all of your SDKs, and consider removing any that aren’t absolutely critical for the app to run. The more third-party code you introduce into your application, the more likely you’re going to run into errors that slow down your startup and affect performance and stability.
Third-Party Networking Call Blocking Critical First-Party API
Teams are often surprised to find out that a network call from a third-party SDK could block a critical first-party API, effectively stripping the app of its functionality. Users that are forced to stare at frozen screens, unable to meaningfully interact, are at dire risk of abandoning your application. At Embrace, we’ve seen this firsthand on several occasions. One partner had network calls from ad attribution SDKs block first-party calls for up to 30 seconds. Another had a location SDK block the UI thread of the app while it made calls to identify the user’s location. This behavior occurred before the app became interactive, so users couldn’t do anything except stare at a blank screen.
Errors like this are typically missed due to the lack of visibility your team has into third-party code, and it can only be identified with the right tools. Once you know where the calls are coming into conflict, you can set up safeguards to prevent an SDK from taking down your app. Examples include creating proactive alerts that identify failing third-party calls and setting up server-side configuration to remotely disable SDKs that are causing problems. In addition, monitoring key metrics like startup time across versions will instantly show regressions stemming from new additions into the codebase.
Congestion happens when too many network calls are all firing at the same time. When this happens during startup, it can lead to significant slowdowns. We see this quite a bit, and it’s not uncommon for teams to be initializing over 30 unnecessary SDKs at startup, slowing down each process across the board.
Ultimately, the best way to treat congestion is with subtraction. When you have fewer network calls firing at startup, you speed up both the processes and the user’s experience. Figure out which SDKs need to be removed completely, and which need to be moved to a later point in the application. Remember, the goal at startup is to get the user past your splash screen and interacting with your app as quickly as possible, so you’ll want to be judicious with SDKs here.
Lack of Device-Side Monitoring
It’s hard to properly diagnose and improve poor startup times when you’re using the wrong tools. So many talented teams remain blind to the cause of startup issues, and not for lack of effort or ability, but simply because they don’t recognize the limitations of backend monitoring when it comes to mobile app performance.
The key here is considering the fundamental differences between web and mobile platforms. Backend monitoring is great for diagnosing problems when they relate to the fixed and stable environment that web runs in, but it’s seriously limited when applied to mobile environments. This is largely due to the sheer diversity of variables in the mobile space; hundreds of types of devices and operating systems represent their own volatile environments, which are further complicated by user location, network connectivity, and individual device resource constraints. When you consult the backend, it might show perfect connectivity at the level of the server, but provide zero insight as to what’s actually happening on a user’s device.
Even when device-side monitoring is utilized, further mistakes can be made. Usually it’s another case of a self-imposed limitation; teams will be testing on the most optimal mobile environments, such as the latest high-end iPhone or Android device, not taking into account that the average user is dealing with older hardware or an operating system that hasn’t been updated in months.
Embrace’s comprehensive platform gives a more accurate read of what’s actually slowing down your startup. Combining Embrace with testing across diverse mobile environments helps identify common issues among devices, OSs, and regions. Our platform was created to provide the device-side visibility that mobile teams desperately need to solve their toughest user-impacting issues. After all, what makes mobile great is also what makes it so difficult — the sheer number of devices, environments, and connectivities that it must support.
Want to Learn More?
Interested in learning more about how to fix or prevent slow startup times? Check out our recent webinar, in which we provide an extensive breakdown of these issues, as well as guidance for businesses to improve diagnostic and preventative efforts related to bloated startup times.
How Embrace Helps Mobile Teams
Embrace is a mobile infrastructure platform that provides observability, debugging, and proactive alerting for mobile teams. We are a comprehensive solution that fully reproduces every user experience from every single session. Your team gets the data it needs to proactively identify, prioritize, and solve any issue that’s costing you users or revenue.
Want to see how Embrace can help your team grow your mobile applications with best-in-class tooling and world-class support? Request a customized demo and see how we help teams set and exceed the KPIs that matter for their business!
Need help improving the performance and stability of your Unity games? Take our SDK for a spin!
Want to learn best practices for scaling your mobile applications? Check out these helpful eBooks!