Performance on Mobile – Best Practices
The success of mobile application depends on the experience delivered to the users. And ‘performance’ plays a critical role too. Here are the top 10 parameters that impact performance and which we must consider while building and deploying a mobile application.
1. UI/UX Design
A compelling App design – in terms of UI/UX and the architecture. Both the technologies (iOS and Android) have listed down specific guidelines in terms of designing the UI and optimizing the layout, having effective navigation, notifications and search.
2. Device Variety
With varied device models and specifications available in terms of Operating Systems, individual device performance also plays a part in App performance, like CPU and battery. This is more pronounced for Android and these are some tips to ensure good device coverage:
- Using string resources different languages could be supported.
- Creating different layouts matching different sizes and densities.
- Specifying minimum and Target API levels, verifying system versions and using platform specific styles and themes.
- Using the available best practices to transfer data without battery drain – schedule and execute downloads using caching, polling and prefetching.
- Using efficient download techniques, avoiding redundant downloads etc. would help to improve performance.
3. Efficient Coding techniques
Following the right coding techniques is vital. Some aspects to consider are:
- Managing App Memory, caching, data flow design and reducing the memory footprint using proven techniques.
- Reduce the power consumption by optimizing the usage of features involving CPU, Wi-Fi/Network, location and the disk.
- Making Apps responsive without much user blocking.
- Security considerations and permissions usage with focus on App Vulnerability, network security and identify management.
- Using asynchronous calls for network and DB access for faster App Launch.
4. APIs for Integration
A good API design ensures that Mobile Apps could access data in a faster way, improving the App performance. Referring this to the network factor in-parallel helps to drive this point. It is always preferable to use standard API’s and plugins wherever available and widely supported open source libraries.
5. Usage of Tools for Crash Monitoring and Profiling
We should leverage good tools within the IDE or even third party tools for detecting and fixing memory management issues, efficient code, and even reporting and monitoring crashes. This might even involve tools for performance tuning. Some of the tools widely used in industry are Crittercism for Crash Monitoring, in-built tools in xCode for iOS and Traceview, ddtracedump for Android.
6. Good Testing Strategies
Before deploying the mobile app, testing the app for its performance is essential. They are multiple tasks to consider.
- Ensure a good test coverage on expected set of physical devices of different make and OS versions
- Consider Stress/Load testing if the App uses large images and complex operations.
- Security is a factor to be considered with privacy in play
- Comparison Testing by comparing with competitors app in terms of features and performance.
- Performance testing for change in network and the images and size.
- Usability and interface testing with focus on offline/online areas, if applicable.
7. Network Connectivity
Connectivity is a major factor to consider in the design of the App – bandwidth, latency and the state of the connection. It may vary in availability, capacity and latency, so apps must make allowances for the network to change as the app is being used.
- Design the App considering the best practices in HTTP and TCP connection usages.
- A better way would be to reduce the network connections and attain more with less traffic hops and sending the right data over network.
8. Integration with other SDKs
Consider the latency and performance characteristics of the third party services and identify the right set best suited for the need. Mobile app dependencies include tools and SDKs from the platform vendor (e.g. Xcode+iOS SDK, Android Studio/ADT+Android SDK) as well as 3rd-party modules. It’s important to keep these dependencies as up-to-date as possible in order to take advantage of bug fixes and stability improvements.
9. Using Images and Large Files
Many times the images and files used in the app are large.
- Try the various best practices in terms of controlling the resolution of images for loading. The other areas to look for are caching images and network traffic to fetch the images.
- Use the best practices available to display a bitmap in Android in the references for Android – in terms of loading, caching, processing and managing the bitmap memory.
- Use available best practices for Video Streaming by utilizing techniques in both iOS and Android.
10. Page Loading and User Experience
One sure-fire way to lose your users is to give them a slow, unresponsive UI. Research has shown that the importance of speed is amplified on mobile devices since users often need their information on the go and in a hurry. Optimizing individual screens, flows and UI elements will reduce waiting times.
- Provide a user perception of App performance by introducing progress indicators and optimizing individual UI elements.
- Provide a professional touch for the App in terms of Appearance and Aesthetics.
- Consider the end-user expectation while design and development of the App – a good way would be to compare with competitors in the same space to know whether the app meets or outperforms.
If you have any questions on this topic, please write to firstname.lastname@example.org
Sr. Project Manager, RapidValue Solutions