Thank you for reading Rork Lab through May. As the month closes, I want to look back at the articles we published and the operational questions sitting behind them.
I have been running an independent mobile app business since 2013 — twelve years now, with around 50 million cumulative downloads and 3 million monthly active users across the lineup, all operated solo. In parallel, my art practice has accumulated 17 international awards, including the 2025-2026 A'Design Award DAC's "World's 14th Best Designer" recognition. May's articles try to translate what I see in both worlds — production app operations and creative work — into something useful within the Rork context.
May's Central Theme: Protecting Revenue and UX Without Shipping a Release
If I had to draw a single line through May at Rork Lab, it would be "operational foundations that protect indie revenue and app quality in production, automatically." March was "Rork Max launches in earnest." April was "deeper native integrations and AI features." May tilted decisively toward automating production operations and incident response.
The trigger was a day in late April when app open ad fill rates dipped on the Android side of Beautiful HD Wallpapers. I had to tune the frequency cap that same day without going through an App Store update cycle. That experience crystallized the principle behind much of May's writing: revenue-relevant parameters should live in a place where you can change them in production, without a release.
Three premium articles anchor this direction.
Auto-throttling AdMob when crash rates rise — A "revenue self-braking" architecture using Rork, Firebase Remote Config, and Crashlytics writes up the design where ad frequency is automatically scaled back via Remote Config when Crashlytics' crash-free users metric drops below a threshold. The implementation itself is mechanical; the part that took twelve years of operational experience is choosing which numbers to watch and where to set the thresholds.
Running AdMob in production with Rork × Firebase Remote Config — Tuning app open ads and frequency caps without a release covers the Remote Config substrate underneath. I included the story of how I nearly broke production by confusing the initial cached value with the default value when I tried to ship a "simple integer key tweak."
Frequency cap design notes from operating interstitial fatigue across six Rork iOS wallpaper apps with Crashlytics and Remote Config looks at the same problem horizontally across multiple apps, documenting how ad fatigue moved CTR and retention based on actual numbers I observed.
Protecting Subscriptions With a Three-Layer Architecture
May's second pillar was organizing a subscription foundation around StoreKit 2 and the App Store Server API.
Rork × StoreKit 2 × App Store Server API — Defending an indie subscription foundation with three layers and Three-layer sync for entitlement state in Rork × StoreKit 2 — Dividing responsibility between launch, background, and restore purchases describe a design that synchronizes membership state across three layers: app launch, background tasks, and restore purchases.
"My subscription should be expired but premium features still work" and the opposite, "I am paying but the app reverted to free," are two of the most common support tickets indie developers receive. If you rely on verification at any single layer, edge cases will slip through. Codifying responsibility across the three layers also reduces incoming support volume — something that matters a great deal when one person is running everything.
For non-subscription IAP, see Implementing one-time purchases in iOS apps built with Rork using StoreKit 2 — Field notes. For pricing and offer mechanics, Implementation patterns for Subscription Groups and intro offers to maximize Rork subscription revenue goes into more detail.
Measuring Rork Max's SwiftUI Generation Against 12 Years of Indie Operations
In May, I spent meaningful time benchmarking Rork Max's native SwiftUI generation against my own working sense as an indie developer with 50 million cumulative downloads.
Verifying Rork Max's SwiftUI features in real wallpaper app development — What worked as generated, and where I had to step in sorts features into two buckets: those I could adopt as generated, and those I had to rework. Rork Max's output is genuinely usable for "ordinary list UIs and standard navigation patterns." However, anything that touches difficult lifecycle boundaries — background resumption, memory pressure handling, iCloud KV synchronization — was not always ready for production as generated.
Benchmarking Rork Max's SwiftUI native generation across 30 features — Where you can confidently hand off, and where a human still needs to intervene and Designing Rork Max's observability stack — Unifying Sentry, Crashlytics, and Cloudflare Logs as an indie operator cover the observation infrastructure you need to push generated SwiftUI into production. When you unify Sentry, Crashlytics, and Cloudflare Logs, you get into a position to "review the quality of what Rork Max ships, periodically and quantitatively."
Migrating Firebase from CocoaPods to Swift Package Manager in a Rork Max iOS app — A pre-October-2026 record with three pitfalls is a migration log ahead of the October 2026 CocoaPods deprecation. I validated the migration on Relaxing Healing first, then rolled it out to the remaining three apps. Running one app through the process end-to-end before fanning out is, I think, one of those small choices that pays off operationally.
Adapting to iPhone Air, iOS 26, and iPad
The hardware and OS-side shifts also got concentrated attention in May.
Adapting Rork-built iOS apps to iPhone Air and the 17 Pro lineup — Resolution-by-resolution layout patterns for 2026 walks through how I added 29 ternary branches in DefineManager.h to route between iPhone Air's 420×912, iPhone 17 Pro's 402×874, and iPhone 16/17 Pro Max's 440×956. The new resolutions are useful in part because they expose places where past frontend design carried an implicit dependency on specific screen sizes.
iOS 26's Liquid Glass was the focus of Adapting Rork apps to iOS 26 and Expo SDK 54 — A practical guide and When Liquid Glass broke existing UI in a Rork Max app — How I fixed it. iPad work is covered in Three weeks of design notes after retrofitting a Rork-generated app for iPad.
Field Notes From Six Wallpaper Apps Running in Parallel
May leaned heavily on operational notes from the six wallpaper apps I actually run — four on iOS and two on Android — translated into the Rork context.
Field notes on consolidating "favorites" into NSUbiquitousKeyValueStore across six Rork wallpaper apps, Staged migration of Rork-emitted RN projects to the New Architecture — A procedure validated across six wallpaper apps in parallel, and Making "failures that Crashlytics never sees" observable across six Rork apps — A silent-degradation early-warning design all share the same perspective: when the same problem appears across multiple apps, how do you use the first app's experience to inform the remaining five?
"Silent degradation" is the failure mode I have come to fear most after twelve years of operation. Nothing reaches Crashlytics, yet specific feature usage or retention quietly trends down. The observability you need to catch that early has outsized value precisely because indie developers cannot manually inspect every app every day.
Breaking Even on a ¥100/Month App, and the Decision to Cut AppLovin Entirely
On the business side, May also produced articles that simply tell the truth about the numbers.
Reaching profitability on a ¥100/month app in Rork — Indie judgment based on AdMob and RevenueCat actuals from May organizes "where the indie breakeven line is" against actual May numbers. A ¥100/month subscription lowers the purchase barrier dramatically, but after Apple/Google fees and RevenueCat fees come out, the net is thin. Designing a path to profitability still requires a few specific calls.
The day I cut a $730/month media partner — Decision-making behind shutting AppLovin off entirely, taught by 11 years of crash trends across 5 apps is a record of an emotionally hard decision — giving up $730/month — made on the numbers from eleven years of crash trend data. The tension between "going after revenue" and "protecting user experience" is the theme indie developers face most repeatedly, and writing this article reminded me how often that tension shows up.
Looking Ahead to June
June will build offensive design on top of the "auto-protecting revenue operations" foundation that May laid down. Concretely, I plan to cover continued AdMob Bidding tuning, a systematic set of refactoring patterns for SwiftUI code generated by Rork Max, and putting a StoreKit 2 subscription A/B test foundation (the GrowthBook plus PostHog combination) into production.
Apple's WWDC 2026 is also in June. Once iOS 27, the next chapter of Liquid Glass, and SwiftUI's new APIs come into view, I would like to organize them into articles quickly, including how they relate to Rork Max.
Thank you again for reading through May. The articles here at Rork Lab are, more often than not, retrospectives on problems I personally bumped into on my own apps. If they give you any useful inputs for your own judgment calls, I am quietly grateful. Looking forward to June with you.