I’ve been making games for close to 15 years now and in 2020 and 2021 I helped release over 100 mobile games, many of them developed and designed by me. However, I always dreaded the thought of having to port my games from iOS and optimize them for Android devices. In this article I’m going to do my best to answer the question: Why do games run better on iOS?
Your Answer Upfront:
Games run better on iOS devices because of the inherent nature of the optimizations that are happening on the OS level. iOS has to support very little hardware compared to Android which means less bloat and instructions needed to be processed. There are over 24.000 Android devices out there compared to a handful of iPhone devices. The performance difference between top tier, premium, Android devices and iPhones is negligible but not many people game on top tier Android Hardware.
In this article we’re going to talk about the differences between perceived performance between Android devices and iPhones when it comes to gaming. We’re going to start by taking a look at the wide range of devices available and use a little anecdote to explain why people perceive such a big difference in performance between them. After that I’m going to go into details, from my own experience, on why it’s so much easier to develop games for iOS and make them look and perform better. By the end of this article you’ll have a pretty good idea why games run better on iOS.
Android vs iOS Performance Differences
There are more different Android devices launching in a year than the entire history of iOS device releases combined. This is a fact and it’s well known. Head on over to android.com and scroll down to see that there are 24.000 different Android devices out there. For convenience here’s a screenshot from the website:

It’s safe to say that not all Android devices are geared for gaming or performance. A ton of them are used in Point of Sale systems, some are entry level mobile phones for kids and the elderly. Others are mobile computers to be used in schools or for young adults.
Even if we remove all non mobile devices (smartphones) and we even go and remove the cheap, low-to-mid tier, non-gaming focused devices, Android still has Apple’s release beat by a factor of 10. So when we start to compare performance numbers across all the devices, most of them are going to fall on the lower end of the spectrum.
What that means is that, by default, a lot of the Android smartphones out there, are going to perform worse than an Apple iPhone by the very nature that most of them have lower specs and lower hardware. Consider that the average price for an Android smartphone, in 2021, has been around $261 according to Statista, whereas the cheapest iPhone you can buy is almost double in price, with the SE in 2022 being sold for around $429.
Let’s dive deeper into this subject and talk a bit about the perceived performance difference based on the wide range of devices out there and their components.

A Ton of Android Devices
Like I mentioned previously, there are 1.300 brands in total (estimation from Google themselves) that produce over 24.000 Android devices. The operating system itself, Android, has to run on the 24.000 different devices. 24.000 different devices don’t perform, act, or require the same thing which means the Operating System itself has to do a function or action in different ways to support all of them.
Let me give you an example.
Pretend I am the human embodiment of the Android Operating System and I’m walking you through my decision making process. I, as an OS, have to display a picture for you. These are the (simplified) steps I have to go through:
- Figure out what kind of image I have to display
- Figure out what display I have to use (your phone’s display or other connected display)
- Figure out what resolution the display is
- on Android, you have resolutions going from 320×240 up to 4k displays. There’s tens and even hundreds of possible resolution combinations with different aspect ration that I have to support
- Figure out if I have to display it in portrait or landscape
- if I’m not in the right orientation as the picture I have to
- Rotate the image
- Scale the image to fit the screen
- Enhance the image
- if I’m not in the right orientation as the picture I have to
- Get the image data and check for the type of GPU the phone is using
- Does it have a GPU that supports the image size?
- Can I use that the GPU or would it be better to do the processing on the CPU?
- Does this GPU work with this image format?
- Decide how and what routine to render the image with
- Send the image data to the GPU or CPU
- Process the image data on the GPU or CPU
- Display the image on the screen
This is a really simplified example of the “thought process” Android has to go through. I’ve counted 17 different steps. Now, let’s take the same process and see how it’s more simplified for iOS with the following caveats:
- All iOS devices have a decent GPU by default.
- iOS devices supported resolution lists are much smaller than with Android devices given the little amount of display screens out there. Which means iOS can optimize for just a few aspect ratios and less calculations
- Figure out what kind of image I have to display
- Figure out what display I have to use (your phone’s display, a connected display or via Mirroring or AirStreaming)
- Figure out the resolution of the display
- Figure out if I’m in portrait or landscape
- if I’m not in the right orientation as the picture I have to
- Rotate the image
- Scale the image to fit the screen
- Enhance the image
- if I’m not in the right orientation as the picture I have to
- Get the image data and send it to the GPU
- Does this GPU work with this image format?
- Send image data to the GPU
- Process the image Data
- Display the image
There are 13 steps here, with 4 checks being removed by the nature of the Operating System knowing the hardware really well. All iPhones have a GPU and iOS only works on iPhones. There’s no need to perform checks for GPU types, screen resolutions, etc. because the Operating System itself is designed for that hardware.
The above example is a simple one but imagine that this kind of thinking applies everywhere. Think about rendering APIs that an Android device can use. Most devices support:
- OpenGL
- OpenGLES
- Vulkan
On iOS? You only have one. Metal. That means less overhead of API calls, less checks, less code to support all of them, less decision making when rendering.
Again, this is a very simple and extremely simplified example but drives the point home. Performance is always going to be better when the amount of actions your Operating System has to do. And by the very nature of Android’s design, the Operating System has to support tens of thousands of devices and their various quirky ways of doing things with different hardware.
And on top of that, add the manufacturer’s own skins and customisations and features added on-top of the OS itself.

Apple Knows How To And Where To Optimise
We’ve touched on this in the previous chapter a bit but there’s more to it. Apple is smart about the way they design things. They have the ability and liberty of not competing with anyone else on the iOS side. It’s just them against them. They are competing against Android manufacturers, that’s true, but it’s much easier for Apple vs Samsung than it is for Huawei vs Samsung. Why?
Because they are running different hardware and software. On paper you can compare specs between a Samsung S22 Ultra and an iPhone 13 and in some cases you can say “Well Samsung has more ram and a higher clocked CPU and GPU” and iOS will always be able to say “Yeah but it’s a different platform. Is an Intel i7 CPU clocked at 1.7 GHz slower than a Android CPU running at 2.3 ghz? So CPU speeds can’t be compared”.
And Apple is smart and it’s using this to it’s advantage. Take the iPhone’s resolution as an example.
The Samsung S22 Ultra boasts a screen resolution of 3088 x 1440 WQHD+. An iPhone 13 Pro Max has a screen resolution of just 2778×1284. For 80% of the users out there, they won’t be able to tell a difference. But they will feel it when playing a game. Why?
Because rendering 4.446.720 pixels (3088×1440 Samsung) is slower than rendering 3.566.952 pixels (iPhone 13 Pro Max). More pixels, mo’ problems as they say.
Especially when you turn on anti aliasing and you do post-processing. Most post-processing effects happen after the entire image is rendered the first time in what we, as developers, refer to as a post-processing pass. Aka the scene (what you see on the screen) is rendered once and then we take the rendering data and apply one or multiple processes on it leading to MULTIPLE PASSES.
So let’s say we process our scene on the Samsung S22 Ultra 4 times per frame in 3 different passes. That means we process 17.786.880 pixels (17+ million pixels). The amount of pixel processing for the iPhone 13 Pro Max? 14.267.808 pixels. About an entire screen of pixels less.
Repeat this 30 times/second for about 10-15 minutes of gameplay you start to realize just how this one small resolution different leads to better performance on the iOS device.
Apple is smart about this. And this thing applies over the entire spectrum of features. At face value, if the Samsung S22 Ultra and the iPhone 13 Pro Max had the exact same hardware and specs and the OS was different, with iOS being optimized specifically for the hardware, the iPhone would still come out on top in terms of performance.

Android vs iOS from a Developer’s perspective
From my perspective – the combination of facts mentioned earlier makes iOS a treat to develop for. It’s a small range of hardware that I have to support. Most features are available across iOS devices and they perform the same way. Same rendering API, same feature list of support. Usually it’s just a CPU + GPU that performs a bit better than previous generation, but the way of interacting with the CPU and GPU is pretty similar.
When I released the case study game for this blog (BSG – Dragon Battle) I had the game running at 30 FPS minimum across all support iPhones (iPhone 8 Plus and upwards). I tried to port it to Android devices but I gave up. It took me 10 days to make the game for iOS devices and it would have taken me 1 or 2 weeks of tweaks to get it to run on most Android devices. Note that I never said that I need 1 or 2 weeks to get it to run just as good on the top tier Android devices like the S22 Ultra.
80% of my installs on Android would have come from devices much weaker than the S22 ultra. Some weaker devices have a worse CPU and GPU than the S22 Ultra, but the same resolution. At that point, I have a choice: make the game look worse on those devices by rendering it at a lower resolution than the device supports? It would be less pixel processing happening.
Keep the same resolution and lower the quality of the textures and models so it would be less taxing on the GPU? Lower the amount of AI processing happening for it to be less stressful on the CPU? All of that? I would end up with a much inferior game.
A ton of people care about the graphical fidelity of a game. When I develop for iOS I can make sure the game looks decent and performance is great across the board. When I develop for Android I have to make concessions to get the game to run well on most devices. I keep the graphical quality? Performance is gonna be worse on some mid to lower end devices. Reduce the graphical quality to make it run better on those devices? The game on Android look worse than the iOS version, the developer is a bad developer or he didn’t care about the port.
I can implement different graphical toggles and the ability for the users to change graphics settings to get the game to run better on the phone but that means:
- more work for me to do
- very few users are even going to do that.
From my experience most Android users install a game, get to the gameplay, see that the game runs pretty bad or not on-par with the iOS version. They quit the game, uninstall it, write me a bad review or an angry email and that’s it. Only a few smart, power, users actually go to the options menu and play with the graphical settings. So putting in all that extra work is worthless for me.
The real reason why games run better on iOS
Games run better on iOS devices because of the inherent nature of the optimizations that are happening on the OS level. iOS has to support very little hardware compared to Android which means less bloat and instructions needed to be processed. There are over 24.000 Android devices out there compared to a handful of iPhone devices. The performance difference between top tier, premium, Android devices and iPhones is negligible but not many people game on top tier Android hardware.
Where To Next?
I write extensively about the mobile gaming industry, their tactics and how greed influences a game’s design, subjects which were brought up in this post.
I believe that you might be interested in more articles on game monetisation. So if you want to stick around, you can check out “How Do Free Mobile Games Make money“, “Why Do Mobile Games Have Fake Ads” and “Why Do Mobile Games Have In-App Purchases“.
There’s also a monster post (about 4000 words) that answers the question: “How Hard Is It To Make A Mobile Game“. It goes in depth with actual examples on how Experience, Resources and Financials affect the difficulty of developing and releasing new mobile games!
If you like our content and want to stay up-to-date, you can subscribe via the mailing list widget on this page! Or give us a follow on twitter. Is there something else you’d want covered on our Best Smartphone Games blog? Let us know in a comment below.