How to make your app feel more performant on iOS

28/09/2021 20mins
Prasobh V Nair


iOS users today have higher demands and expectations from the applications they are using. Excellent app performance is critical to be able to deliver good user experience. Otherwise, users will ditch using your app or leave a negative rating which will have a poor impact on your app.

5 Optimization Tricks To Make Your App Feel More Responsive

The advancements in technology has paved the way to the development of tons of applications that are able to accomplish even the most complicated tasks at the quickest time possible.

However, despite the modern iOS hardware developments, the device can still sometimes feel less responsive. As iOS users today always want and expect more, here are some optimization tricks to enhance your apps responsiveness and overall deliver excellent user experience:

1. Reduce Memory Usage by Using dequeueReusableCell.

Imagine if you have to use a single cell with a lot of text for your API. This would greatly impact your memory storage, even cause your app to run out of memory and will make your user interface annoyingly sluggish. Thankfully though, Apple has provided the method called dequeueReusableCell(withIdentifier:for:). This method allows for cell reuse and by utilizing a queue to store the cells the table view need not create a thousand cells. The dequeueReusableCell method reduces the app’s memory usage and the app will be less vulnerable from running out of memory.

Dequeue Reusable cell


2. Using Launch Screen as a Technique to Enhance an App’s Responsiveness.

While Apple has already mentioned in their HIG or Human Interface Guidelines that launch screen can be used to enhance an apps responsiveness, it’s a common mistake done by a lot of developers to use them as a splash screen for branding or adding a loading animation. This significantly slows down the app during first use and give your users an impression that the app is janky. To avoid this, design your launch screen to be identical as that of the first screen this way your app will have a more responsive feel.

Also read related articles:

3. Applying State Restoration and Preservation Mechanisms

Another excellent technique is to use state restoration and preservation method which allows your app users to go back exactly where they left off when they resume using the app. This method ensures the app is not killed in the background and that the app stays in the exact same state before they exited the app. In addition, this will also ensure that the user does not have to deal with the frustration of losing their work in progress. 

Implement these two methods in AppDelegate which is swift to enable state saving and restoring.

screen shot for restore

Next, we’ll tell the app which view controllers need to be preserved. We do this by specifying the “Restoration ID” in storyboard

  Screenshot 2  


Next Implement "encodeRestorableState" & "decodeRestorableState" in ViewController. These methods will call during the state preservation & state restoration.

  Screenshot 2019-03-20 at 1.11.57 PM  

Finally, update the UI by using applicationFinishedRestoringState() delegate function

  Screenshot 2019-03-20 at 1.12.18 PM  

4. Move As Many Heavy Processing Functions to Background Threads As Possible.

Heavy processes on the main thread slows down the user interface. The key is to transfer these heavy processing (heavy computation task, networking, complicated IO operation) into the background so your app isn’t prone to lagging and have a more responsive feel.

Background threads


5. Minimize Usage of Non-Opaque Views to Optimize Drawing Performance While Rendering the Screen

Using an opaque view allows for the UI element behind the app to be invisible. To do this, you can use the code is Opaque property of UIView such that view.isOpaque = true. By setting the view into opaque, the app will have an enhanced drawing performance and overall optimizes your app performance.


Join Our
Mailing List


    Featured Post

    How can we help you?

    Get in touch with us to schedule a consultation.