KB440585
Just summarizing the slides I presented at World, touching on ideas and areas of optimization for lightning fast performance of your mobile apps.
Every step along the way matters.
First up, make sure you consider every layer of the workflow while optimizing for performance. Each and every layer matters, and one can encounter different bottlenecks at each.

To begin with, here is a quick representation of the workflow of the typical Strategy Mobile App - You have your Intelligence Server connecting to your Data Sources, your Mobile server connected to your IServer, and acting as a medium for transferring data to the client over the wireless network, and finally the network over which the data is transferred over to the device in the end.
In order to get great performance with your App, it is important to pay attention to each and every layer of this workflow. Performance is a product of multiple factors: the server, mobile device, network, and programming of the app itself.
The Mobile App itself, or the device that it resides on, is indeed one of the most critical factor in performance, and so we will focus on it the most during this presentation.
But it’s always good to remember – while most people complain about performance under the assumption that the Mobile App itself is at fault. This may not necessarily be true all the time.
Mobile First Design.

Linked Dashboards

Data matters

So you have your dashboard designed well, and split into multiple linked dashboards. Now how do you ensure that each linked dashboard in itself performs well enough?
Caching is key
All of you must be familiar with the concept of caching in general, and it’s implication on overall performance. These concepts are similar to what you encounter for any other App or website. For mobile devices though, the additional layer of caching on the device, is a god send, as far as app performance and availability are concerned.
Imagine if you can cut all the other layers from the picture by putting all your required documents and dashboards on your device. From here on, unless your data changes, you will never have to interact with the network or the servers or the data sources for anything, since the binaries will be on the device for good. Imagine the amount of variability that you can cut down at each of these levels, and how they will add up in the end. Imagine the amount of round trips and data transfers you can save for subsequent executions and manipulations. Imagine that from here on, regardless of which layer fails, you can still access your data anywhere and at any time, even if you are offline!
Of course, not every App lends itself to this model all the time. Also, data needs to be refreshed regularly to keep it current and up to date. But in a majority of cases where our customers leverage device caches, they tend to get the fastest performance and the best reliability metrics in this fashion, as compared to any other arrangement
Caching exists at various levels

Having grasped the concept and benefits of device caching, let me quickly cover some simple things that people miss, or act as impediments in their caching strategies.
Preload Caches wherever possible

Subscriptions
With this method, you create some admin tasks and schedules, be it time based or event based, to generate a bunch of caches on the server automatically, almost like a script. This could cover all the documents you need to ultimately cache on your device.
You set them up and have them ready on the server, you prime the device to pick them up, and as soon as the device and app comes online - the server can push this as a batch of binaries over the network. Depending on the size and number of these binaries, and the overall bandwidth of your network, these caches would be ready to use by the time you reach the target documents on your device.
All the advantages of device caches i mentioned in the earlier slide carry over - performance, reliability, availability, offline usage etc. Except, now you have achieved this ahead of time, in an automated way, making the overall process far more efficient and productive for the end user.
Precaching
Imagine the batch downloading workflow of subscriptions, and consider it more from a client perspective, rather than a scheduled job or admin task on the server.
If we configure the client to look for a set of documents and devices as soon as it comes online, and it has a way to communicate this list to the server, in run time, as if a user was doing it manually. Now imagine, the same process being done for a whole batch of documents with no additional action from the user, everything done in the background, requests sent from client to server, server generating live caches, and sending them over to the device … in a batch. A process, so to speak, that simulates multiple real time requests form a user, like a script generated from the client side. That's what precaching does.
This is another way of loading caches in bulk, with some similarities and differences with subscriptions. Feel free to read more about these if you are interested.
Mobile hardware matters

I would be remiss if I do not cover at least a couple of “non-mstr” factors that play a key role in mobile performance, starting with device hardware.
This is one investment that will surely not go to waste!
Mobile network speeds matter

Hope these tips help you guys on your journey for optimal mobile performance.