Your Rork iOS App Won't Build After Adding AdMob Mediation — Untangling Linker Errors and No-Fill Ads
Added Unity Ads, Liftoff, or InMobi mediation adapters to your Rork/Expo iOS app and suddenly hit ld linker errors or ads that never fill? Here's how to isolate the cause by symptom and fix each layer.
Measuring the Real eCPM Yourself: Piping Impression-Level Ad Revenue Into Your Own Analytics
The AdMob dashboard's average eCPM hides which regions and placements actually earn. Here is how I capture per-impression revenue with paidEventListener, normalize it, and pipe it into my own analytics to compute a real eCPM by network, placement, and country.
Managing Startup Time as a Budget: How I Deferred SDK Init Across Six Apps
Instead of optimizing startup ad hoc, I switched to allocating a per-phase time budget and defending it. Here's how I deferred SDK init across six Rork-built apps and added a CI gate that fails the build when the budget is exceeded.
Retuning AdMob Mediation Priorities: Notes From Trying to Lift My eCPM
A running log of how I manually revisited the network priorities in my AdMob mediation setup to lift eCPM on an indie wallpaper app, what changed compared to leaving it on auto-optimization, and what I noticed along the way.
Running Crash-Free Rate as a Budget: An SLO Design Note for Deciding Where to Invest Across 6 Indie Apps
Notes from running 6 wallpaper apps in parallel and the shift from treating crash-free rate as a pass/fail threshold to treating it as an error budget. A working write-up on turning burn rate into investment and sunset decisions.
Taking Inventory of Your AdMob Ad Units — All the Way to App Open Cooldown Design
When rewarded and interstitial units pile up and you can no longer tell which one fires on which screen, here is the inventory process I use, plus the design for adding a cooldown to an App Open ad that otherwise shows on every launch.
Managing Native Settings Across Rork-Exported Apps with a Custom Expo Config Plugin
Tired of re-typing your AdMob ID and ATT string every time prebuild wipes your Info.plist? Here is how I made native settings reproducible with a custom Expo config plugin and shared it across six wallpaper apps.
Two Weeks After Adding Pangle and Mintegral to My AdMob Waterfall — Notes on eCPM and Fill Rate
A record from a wallpaper app with over 50 million downloads: I added Pangle and Mintegral to my AdMob mediation, then compared two weeks of eCPM and fill-rate data. Bidding-and-waterfall coexistence, the effective-revenue breakdown, region-based groups, and a daily monitoring script — kept in a form you can actually operate.
I Turned Off My AdMob Floors and Revenue Collapsed — The Mediation Rules That Actually Worked Solo
A record of tuning AdMob mediation eCPM floors to real-world rates on an indie wallpaper app, and handling the end of Unity Ads waterfall support. Why you must not turn INT floors off, the 80% match-rate boundary, and a twice-monthly review routine.
Tuning Interstitial Ad Fatigue Across Six Rork iOS Wallpaper Apps with Crashlytics and Remote Config
An implementation note from running six Rork-built iOS wallpaper apps in parallel and rebalancing interstitial fatigue with a three-layer frequency cap powered by Crashlytics non-fatal signals and Remote Config thresholds. Swift code, Cloudflare Workers config, and measured eCPM / D1 retention numbers from a four-week phased rollout.
The Day I Walked Away From $730/Month — Pulling AppLovin From 5 Apps After 11 Years of Crash Data
On 2026-05-26 I paused AppLovin and AppLovinMax Bidding + Waterfall across my entire iOS/Android catalogue (50M+ cumulative downloads) for INT, RWD, and RWI. This is the full record of the three lines of evidence I used to justify walking away from $730/month and the four-week evaluation framework I set up afterwards.
Making Silent Failures Visible Across 6 Rork Apps: An Early-Warning Design Note for Non-Crash Degradation
Notes from running 6 wallpaper apps in parallel and the layer I built in 3 weeks to make Crashlytics-invisible failures observable. Beacons, timeouts, and a small Cloudflare Worker for cross-app aggregation.