The 500MB App Crisis: How I Built TransMov to Fix It
In the world of indie development, the most powerful tools are often born from the most frustrating constraints. My journey with PurrrrrFocus is a story of how a 500MB asset crisis led to a failed build, a new macOS app, and a vital lesson in technical persistence.
1. The Origin: A Solitary Ink-Wash Companion
PurrrrrFocus did not start with vibrant colors. Its soul was a single, traditional ink-wash (Guohua) cat.
I wanted it to feel like a living painting on rice paper, stretching and napping as you worked. But as a developer with no background in professional animation, I faced a wall: How do you create high-quality, transparent animations with a hand-painted texture on a budget?
My scrappy solution:
- Generate cat movement sequences using AI video tools.
- Build a custom web-based tool to remove backgrounds and convert them to APNG (Animated PNG).
At the time, mainstream tools lacked specialized video background removal for transparent web formats, and mobile editors exported results that were too limited for the high-fidelity transparency iOS required. That black-and-white ink cat was my first success, but it was also the precursor to a major hurdle.
2. The Disaster: A 500MB Pomodoro Timer
When I decided to expand the China-Chic aesthetic by adding 8 unique cats, the technical debt came due. While 7 of the new cats leaned toward a clean, flat cartoon style, one special Opera Cat remained highly detailed, featuring intricate silk textures on its traditional costume.
To preserve these delicate textures and semi-transparent edges, I used high-resolution sequences. When I hit build in Xcode for the first time, the result was soul-crushing: The app size exceeded 500MB.
For a minimalist productivity tool, this was a death sentence. I spent weeks in a state of paralysis:
- Lottie? Subscription cost was too high, and it struggled to replicate non-vector, heavy-texture brushwork.
- Rive? The learning curve was steep, and export limitations for indie developers felt like a moving target.
3. The Breakthrough: The Birth of TransMov
Since there was no video-to-transparent-animation tool that met my standards for quality and privacy, I decided to stop building the timer and start building the tool.
I rebuilt my clunky web script as a native macOS app. Leveraging Apple Neural Engine and native AI capabilities, TransMov was born. It featured:
- AI Background Removal: Local, on-device processing for privacy and efficiency.
- Multi-Format Export: Seamless conversion between Video, APNG, WebP, and GIF.
- Frame-by-Frame Editing: Essential for inspecting and refining complex frames, like the shimmering silk details on the Opera Cat.
TransMov was meant to be an internal utility, but when it gained its first paying subscriber on the Mac App Store, I realized: When you build a wheel to climb a mountain, that wheel itself has value.
4. The Final Polish: Solving the Stutter
With TransMov, I converted all assets to WebP, cutting total asset size to roughly 300MB. I then implemented On-Demand Resources (ODR), keeping 2 default cats in the bundle while letting users download the others after unlocking.
However, one final hurdle appeared: animation stutter. I remembered a Product Hunt user mentioning FPS issues in an early APNG version. At the time, I did not connect the dots, but eventually identified the real bottleneck in my custom playback component.
I tried resource pre-warming and aggressive caching strategies, but none fixed the lag. Finally, I replaced my custom rendering path with SDWebImage and SDWebImageWebPCoder. The difference was immediate: stutter disappeared, and the cats moved with silky smoothness without sacrificing resolution.
Closing Thoughts
From a solitary ink-wash cat to a 500MB crisis, and finally to the birth of TransMov.
Indie development is rarely a straight line. Sometimes, you set out to build a house, and you end up inventing a better shovel just to dig the foundation. Those moments of obsessive troubleshooting are what give independent apps their soul.