Escape from Spam Hell
Surviving the App Store Review Process
Apple has a rejection category called
“Spam.”
Don’t believe me? Check
out guideline 4.3.
…avoid piling on to a category that is already saturated; the App Store has enough… provide a unique, high-quality experience.
The term is vague by design, and reviewers can apply it to almost anything. When I ran into it during the release of my game, Doom Truck, it felt like a dead-end—and a highly anti-competitive policy.
But this isn’t a rant about Apple. And, I’m not new to the App Store. So I knew: somehow, some way, Apple was going to reject my app. Here is the pre-emptive strategy I used to get through.
1. Optimize, with Xcode
Let’s clear this up: the rejection wasn’t about Xcode—or my choice of programming language.
Doom Truck runs on Love2D, a lightweight, efficient game engine scripted in Lua. It’s not written in Swift or Objective-C. It doesn’t use SpriteKit or SceneKit. And that’s fine.
Apple doesn’t require you to use their tech stack. They care more about performance and experience than code lineage.
Yes, I still use Xcode—to test on real devices and to package builds for submission. And honestly? Xcode is great for that.

Come on, it’s not that scary.
All through the development process, I measured performance to make sure it was up to par. Was the phone burning my hand? Did the game load quickly? Did it crash? How was battery life affected by the game?
2. Release Early, Release Often
I shipped an early development build two weeks into the project. Starting the App Store review process early buys you time and sanity. Let the review process run asynchronously with development—while morale is still high.
That first build was rejected almost immediately. 4.3 Spam Hell.
I figured it was because the game was still in early shape—so I got to work.
Two weeks later: new graphics, tighter gameplay, a much more polished experience. I submitted again, optimistic.
3. Find a human
Armed with a better game, the game was Rejected again.
This time in less than 24 hours—which is unusually fast. Normally reviews take 3–4 days. That got me thinking: Maybe this wasn’t a person at all.
Apple uses automated tools to scan binaries and flag patterns. If you’re using a less common engine—or your app structure matches a known template—it might trigger an auto-reject.
So I reached out. I made my case:
“Please give me a manual review.”
Three days later: approved.
Doom Truck is 99% Lua, and 1% C++. This fact alone makes it an easy target for automated rejection. By explaining that the game engine is used by others and as a result has a similar binary I was able to bring a human into the loop.
Lessons from Spam Hell
Here’s what I learned from the experience:
-
What doesn’t kill you makes you tough.
Optimize
-
Use agile techniques to overwhelm the
bureaucracy.
- When you’re ready, get a human involved.

Doom Truck is now live on the App Store. I escaped Spam Hell—and I’m stronger for it.
If you’re building a mobile game, I can’t recommend Love2D enough. It’s free, performant (great battery life + CPU usage), and Lua is already widely known by Roblox developers.
Need help debugging your Xcode pipeline? Want to extend Love2D for mobile? Looking for a second set of eyes on security?
I offer services that can help.
https://amzn.to/4jgn75T